![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ADO+DBF - проблеммы с кодировкой [D5, dBase, FoxPro]
Hohol © (2004-09-09 09:46:00)Здравствуйте !
Есть таблицы DBF формата FoxPro for DOS. У них проставлена кодовая страница 866. Таблицы подключаю через ADO+MS OLE DB Provider for Visual FoxPro. Объект ADOConnection не использую, указываю строку подключения непосредственно в объекте ADOTable. Так вот если компонент ADOTable кинуть на форму во время разработки программы данные в DBGrid отображаются нормально, а если его создать динамически - пишется кракозяброй.
Компоненты DataSet и DBGrid присутствуют на форме постоянно.
Код динамического создания TADOTable такой:
var
foxTable: TADOTable;
begin
foxTable := TADOTable.Create(Self);
with foxTable do
begin
ConnectionString := 'Provider=VFPOLEDB.1;Data Source=c:\dbfdir;Password="";Collating Sequence=MACHINE';
TableName := 'dbffile.dbf';
end;
end;
Где копать ?
Hohol (2004-09-09 12:35:00) [1]Установил Halcyon, вроде все работает и отображает нормально и индексы клиперовские открывает.
sniknik (2004-09-09 11:54:00) [2]> но метка наличия индексного файла не снимается
убери сам файл индекса и проверь еще.
но хотя если потом перестраивать... это неважно, как и неважно если их убирать совсем снимать признак и использовать jet. все одно перестраивать...
Hohol (2004-09-09 11:45:00) [3]
> > а VFPOLEDB открывает он видимо на индексы не смотрит.
> он снимает признак индекса если не находит его, если тебя
> это устраивает... то еще проверь а программу (БЭСТ4) это
> устроит? мало ли как написано
Да не, индексы на месте, конечно возможно понадобиться их перестроить потом, но метка наличия индексного файла не снимается
sniknik (2004-09-09 11:38:00) [4]> написана она на Клипере
для аналогичного использую Halcyon, есть поддержка клипера, и можно добавить свои функции которые будут использованы в индексах (совместить с оригиналом)
> а VFPOLEDB открывает он видимо на индексы не смотрит.
он снимает признак индекса если не находит его, если тебя это устраивает... то еще проверь а программу (БЭСТ4) это устроит? мало ли как написано.
Hohol (2004-09-09 11:33:00) [5]Похоже Microsoft.Jet.OLEDB.4.0 не годиться. Дело в том что часть таблиц из бухгалтерской программы БЭСТ4, написана она на Клипере, и использует в индексных выражениях клиперовские функции. Jet такие таблицы не октрывает, а VFPOLEDB открывает он видимо на индексы не смотрит.
sniknik (2004-09-09 11:18:00) [6]> таблицы находятся в разных каталогах, есть таблица, тоже формата DBF, где перечислены все используемые в программе таблицы и пути к ним, т.е. одним ADOConnection не обойдешься
легко
SELECT * FROM C:\PATH1\Table1.Dbf
SELECT * FROM C:\PATH2\Table2.Dbf
и все на одном конекте
сложнее указать корнень (диск), но и это можно обойти.
(будеш пробовать убери автоопределение параметров)
Hohol (2004-09-09 10:56:00) [7]
> > Объект ADOConnection не использую
> проблем хотся?
Дело в том что программа собирает данные из нескольких приложений, таблицы находятся в разных каталогах, есть таблица, тоже формата DBF, где перечислены все используемые в программе таблицы и пути к ним, т.е. одним ADOConnection не обойдешься, потому я и решил источник указывать непосредственно для каждой таблицы.
> > а если его создать динамически - пишется кракозяброй.
> чудо программинга! зафиксируй и в книгу рекордов гинесе.
> ;о) должно быть одинаково. (если конечно при разработке
> никаких параметров не изменял, а там и там по умолчанию
> )
Нет, ниче не меняю, все по умолчанию.
> > Где копать ?
> Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\dbfdir;Extended
> Properties=dBase IV;Persist Security Info=False
Поробую, но это другой Provider, хотя не очень принципиально наверное.
Hohol (2004-09-09 10:55:00) [8]
> > Объект ADOConnection не использую
> проблем хотся?
Дело в том что программа собирает данные из нескольких приложений, таблицы находятся в разных каталогах, есть таблица, тоже формата DBF, где перечислены все используемые в программе таблицы и пути к ним, т.е. одним ADOConnection не обойдешься, потому я и решил источник указывать непосредственно для каждой таблицы.
> > а если его создать динамически - пишется кракозяброй.
> чудо программинга! зафиксируй и в книгу рекордов гинесе.
> ;о) должно быть одинаково. (если конечно при разработке
> никаких параметров не изменял, а там и там по умолчанию
> )
Нет, ниче не меняю, все по умолчанию.
> > Где копать ?
> Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\dbfdir;Extended
> Properties=dBase IV;Persist Security Info=False
Поробую, но это другой Provider, хотя не очень принципиально наверное.
sniknik (2004-09-09 10:15:00) [9]> У них проставлена кодовая страница 866
это старый формат больше dBase чем фоксовый
> Объект ADOConnection не использую
проблем хотся?
> Так вот если компонент ADOTable кинуть на форму во время разработки программы данные в DBGrid отображаются нормально,
> а если его создать динамически - пишется кракозяброй.
чудо программинга! зафиксируй и в книгу рекордов гинесе. ;о) должно быть одинаково. (если конечно при разработке никаких параметров не изменял, а там и там по умолчанию )
> Где копать ?
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\dbfdir;Extended Properties=dBase IV;Persist Security Info=False