Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.48 MB
Время: 0.011 c
3-1123231655
Elvis
2005-08-05 12:47
2005.09.18
DBGridEh забитый в ручную


2-1123769392
cvg
2005-08-11 18:09
2005.09.18
Как перевести секунды в DateTime?


1-1125169052
rolex
2005-08-27 22:57
2005.09.18
Помогите переделать статистичн. вызов DLL в динамичный.


14-1125066193
Gero
2005-08-26 18:23
2005.09.18
Правила этикета


6-1117100431
КиТаЯц
2005-05-26 13:40
2005.09.18
Команда "дисконект"





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский