Форумы HiProg.com - MS ACCESS, VBA, VB

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

ник: Анатолий (Киев)
администратор BDE (если он есть) можно откріть через Панель управления - Администрирование. Но, ИМХО, он вам не нужен.
Если ваш DBF открыть в HEX-редакторе, то в байте со смещением 29 (30-й по счету) увидите 01 - это кодовая страница CP437 (U.S. MS-DOS). Если указать C9 (CP1251) или 00 (системная CP, обычно та же 1251), то через ODBC VFP драйвер таблица откроется с "неиспорченой" кодировкой.


То есть в редакторе я вижу код 144 и хочу чтобы AscB тоже давал 144


А с чего вы взяли, что так должно быть? Для символов с кодом выше 127 Asc(), AscB() и AscW() будут совпадать только для CP437. Например (в окне отладки):
?Asc("S")
83
?AscB("S")
83
?AscW("S")
83

?Asc("Б")
193
?AscB("Б")
17
?AscW("Б")
1041
?Chr(193)
Б
?ChrW(1024+17)
Б

Access сам преобразует ANSI в Unicode, используя системную кодовую страницу. Если вас єто не устраивает, но обратное преобразование можно выполнить функцией StrConv("Текст", vbFromUnicode), а затем преобразоват по своему.

Ниже пример процедуры, выдающей в окне отладки ANSI коды и ANSI символы из 1-го поля 1-й строки файла. Там, кстати и код 144 есть.

Sub TestArmDBF()
Dim s$, bytArr() As Byte, i&
s = CurrentDb.OpenRecordset("mvds_4202").Fields(0)
Debug.Print s
bytArr = StrConv(s, vbFromUnicode)

For i = LBound(bytArr) To UBound(bytArr)
Debug.Print i; Tab; bytArr(i); Tab; Chr(bytArr(i))
Next
End Sub


Ваше имя:

Пароль:

Цитировать: [quote][/quote] Код: [code][/code]
Жирный: [b][/b] Наклонный: [i][/i]
URL: [url][/url] 

Сообщение:

 Размер файла не более 50 Кбт. Большие файлы можно размещать на www.slil.ru

Прикрепить:

 

Для вставки смайлов в текст щелкните по значку.