Форум: "Начинающим";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
Внизправильная работа с dbf файлом Найти похожие ветки
← →
-=snoop=- © (2005-08-11 13:30) [0]пивет всем, ситуЁвина такова
вот кусок кода
lADO2 := TADOQuery.Create(form1);
lADO2.CursorType := ctDynamic ;
lADO2.CursorLocation := clUseClient ;
lADO2.ConnectionString :=
"Provider=VFPOLEDB.1;Data Source="+gPthVl+"PRO;Password="";Collating Sequence=MACHINE";
if lsCHNGSTRU = "" then
begin
gReg.WriteString("ChngStr","1");
gnRestFlag := 1;
try
lADO2.SQL.Clear() ;
lADO2.SQL.Add("ALTER TABLE user.pro ADD COLUMN grupp c(20)") ;
lADO2.ExecSQL();
lADO2.free() ;
except
end;
база с 866 кодировкой и изначальна создана для работы под DOS приложением, после того как я меняю структуру базы она не открывается ни самим приложением ни FoxPro2.6, а вот VisualFP открывает без проблем, подскажите как решить проблему
← →
-=snoop=- © (2005-08-11 13:33) [1]посмотрел структуру файла,первый байт меняет своё значение с "03" на "30".
← →
ANB © (2005-08-11 13:59) [2]
> -=snoop=- © (11.08.05 13:33) [1]
Это меняется дескриптор файла. Так воткни его на место. Заодно проверь - код кодировки наверняка тоже изменился.
← →
ANB © (2005-08-11 14:09) [3]
> -=snoop=- © (11.08.05 13:33) [1]
- да, а ломает все твой же провайдер.
← →
-=snoop=- © (2005-08-11 14:14) [4]оно и понятно что ломает ADO, но думаю что его можно наючить, что таб.ДОС
пробовал меня на 03 ничего не помогает, вообще перееостает открываться)) а кодовая страница стоит как "65" не понятно что за ерунда , "26"=866, "57"=1251, а вот что за "65"?? не знаю...
← →
ANB © (2005-08-11 14:26) [5]
> -=snoop=- © (11.08.05 14:14) [4]
- могу выложить рекорды - шаблоны для чтения заголовков. И попробуй поменять провайдера. Я юзал FoxPor Triber. Открывает по русски. Потом, правда, тоже ломал, но только кодировку. Я ее на место поставил и все заработало. Попробуй качнуь заголовок до изменения и после, а потом сравнить, что получилось.
← →
sniknik © (2005-08-11 14:34) [6]> оно и понятно что ломает ADO, но думаю что его можно наючить, что таб.ДОС
не ADO, а драйвер fox-а. сам же его "попросил" структуру таблицы модифицировать... (ALTER TABLE)
найди такой провайдер который работает именно с твоей версией фокса (/умеет устанавливать ниже текущей)
или не модифицируй структцру этим провайдером.
← →
-=snoop=- © (2005-08-11 14:50) [7]2ANB © если не сложно
2sniknik © я уж почти все доделал, провайдера менять чтот не очень...
← →
ANB © (2005-08-11 15:04) [8]type
TRDBFHeader = record
Descriptor : Byte;
{0x03(3)простая таблица
0x04(4)простая таблица
0x05(5)простая таблица
0x43(67)с мемо-полем .dbv
0xB3(179)с мемо-полями .dbv .dbt
0x83(131)с мемо-полем .dbt
0x8B(139)с мемо-полем .dbt формат D4
0x8E(142)SQL-таблица
0xF5(245)с мемо полем .fmp}
updYear : Byte;
updMonth : Byte;
updDay : Byte;
RecordsCount : LongWord;
HeaderSize : Word;
RecordSize : Word;
Reserv1 : Word;
InTransaction : Byte;
InCrypt : Byte;
MultiUser : array [1..12] of Char;
UseIndex : Byte;
{0x01 Используется индекс
0x00 Индекс не используется}
LangDriver : Byte;
{ n Номер драйвера языка
0x01(1) кодовая страница 437 DOS USA
0x02(2) кодовая страница 850 DOS Multilang
0x26(38) кодовая страница 866 DOS Russian
0x57(87) кодовая страница 1251 Windows ANSI
0xC8(200)кодовая страница 1250 Windows EE
0x00(0) игнорируется}
Reserv2 : Word;
end;
TRDBFField = record
FldName : array [1..11] of Char;
FldType : Char;
FldOffset : LongWord;
FldSize : Byte;
FldPrec : Byte;
Reserv1 : Word;
WorkArea : Byte;
MultiUser : Word;
SetFields : Byte;
Reserv2 : Word;
InIndex : Byte;
end;
TRMemoHeader = record
NextFreeBlock : LongWord;
BlockSize : LongWord;
Description : array [0..503] of Char;
end;
TRMemoBlock = record
Signature : LongWord;
BlockSize : LongWord;
end;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.012 c