![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
InterBase с помощью ADO. [D7, IB6.x]
Iova © (2005-05-18 13:10:00)Помогите пожалуйста решить проблему.
Я подключаю базу InterBase с помощью ADO.
Строка подключения:
Provider=MSDASQL.1;Password=masterkey;Persist Security Info=True;User ID=sysdba;Mode=ReadWrite;Extended Properties="DSN=IB;Driver=Firebird/InterBase(r) driver;Dbname=C:\ENIGMA.GDB;CHARSET=NONE;PWD=DKEBFJENHFCOBHGHLAIMNAAFICELEAEGDNMFNOGALAMHBBGCHFADNKCBPPGMANOGIEKENIOPHDI PBIECPLLLCBIKEJKMJLPLIB;UID=SYSDBA";Initial Catalog=c:\
Подключается все нормально без ошибок. Но при вызове процедурыGetFieldNames(s1,form1.ListBox2.Items);происходит ошибка "провйдер не обеспечивает такой операции", однако процедураGetTableNames(form1.ListBox2.Items);вызывается нормально.
Может из-за драйвера FireBird. У меня стоитFirebird_ODBC_1.2.0.69-Win32.exe
Iova (2005-05-20 13:01:00) [1]И еще моленький вопросик:
Если RDB$FIELD_PRECISION имеет пустые значения, то можно ли их вручную добавить для моих БД?
Iova (2005-05-20 12:13:00) [2]Спасибо за пример и для него работает.
Проверил запрос
SELECT RDB$FIELD_PRECISION FROM RDB$FIELDS.
Таблицу выдает 90 строк, но значений в них нет это нормально?
sniknik (2005-05-20 11:40:00) [3]> Пробовал выполнять запрос и он говорит что такого поля он не нашел.
диалект смотрел?
> для проверки с которой небыло никаких проблем?
ну это из области фантастики, проблемы в том или ином виде есть всегда. ;о))
пример послал.. но боюсь, что вот это
> + те что идут как примеры у InterBase
указывает на очень старый IB, и возможно он его(пример) даже не откроет... а может просто будут другие проблемы.
Iova (2005-05-20 09:03:00) [4]А не может ли кто-нибудь прислать пример базы данных (небольшой по объему), для проверки с которой небыло никаких проблем?
PS: Пробовал выполнять запрос и он говорит что такого поля он не нашел. Пробовал экспериментировать с несколькими базами + те что идут как примеры у InterBase.
sniknik (2005-05-19 23:29:00) [5]Anatoly Podgoretsky
тот который я ему предложил OLE DB шный. но с ним говорит тоже не работает но по другому.
Anatoly Podgoretsky (2005-05-19 22:32:00) [6]Ты используешь ODBC, а они знамениты своими ограничениями, попробуй найти другой провайдер.
sniknik (2005-05-19 20:57:00) [7]или даже
SELECT RDB$FIELD_PRECISION
FROM RDB$FIELDS
WHERE RDB$FIELD_NAME='RDB$FIELD_PRECISION'
на всякий случай. ;о)
просто на предмет получения ошибки, если чегото не так с полем запрос не выполнится.
sniknik (2005-05-19 20:42:00) [8]хм. а может и в базе, счас посмотрел в таблице RDB$FIELDS есть поле RDB$FIELD_PRECISION (оттуда берет)
вдруг у тебя его действительно нету? выполни запросик (в той же тестовой проге)
SELECT RDB$FIELD_PRECISION FROM RDB$FIELDS
sniknik (2005-05-19 20:36:00) [9]> А случайно нет ли разницы в какой версии IB создавалась база?
х.з. базы у меня были из разных мест, по разному (наверное) созданы.
сам создавал через TIBDatabase.CreateDatabase
диалект всегда 3, 1 както сразу посчитал устарвшим и в проге проставил 3й, какие не мои... не знаю не смотрел.
не, в то, что дело в базе, чтото не верится (хочеш пришли если не очень большая, попробую открыть у себя), скорее уж дело в самом сервере IB(?), у меня файрбирд 1,5 счас. ну Yaffil еще пробовал. IB 6.5 правда тоже, но очень не долго, мог пропустить...
Iova (2005-05-19 20:22:00) [10]Похоже проблема в самой IB. Пробовал с помощью тестовой проги подключать. Ошибка та же самая (отсутствие выше указанного поля). А случайно нет ли разницы в какой версии IB создавалась база?
sniknik (2005-05-19 11:18:00) [11]>> Оно так, но она ожидает два параметра, а не один.
> во второй да но жалобы на первую ;о)), сдесь думаю описка.
стоп! во второй процедуре это же список таблиц, там один параметр и нужен.
путаете меня только. ;о))
sniknik (2005-05-19 11:17:00) [12]> Оно так, но она ожидает два параметра, а не один.
во второй да но жалобы на первую ;о)), сдесь думаю описка.
> Можешь мне прислать на ящик? Пожалуйста.
могу но не буду. (против идеи форума, должно быть доступно всем заинтересованым, это что все рассылать?)
вот поискал у них и нашол откуда качал
страница
http://zstyle.dp.ua/rus/iboledb_prod.htm
ссылка
- Скачай бесплатную версию 5
(мог бы и сам)
а на ящик я тебе всетаки кину прогу, для теста. (если и в ней будет этот глюк, то значит чтото не то с самим ADO/OLE DB/...х.з. т.к. данная прога с данным провайдером у меня работает без проблем)
там на списке полей правой кнопкой мыши ткнеш увидиш типы и размеры поля, или на списке таблиц там меню, перевести в режим grid-а будеш видеть их всегда (или не покажет, если твоя ошибка проявится, т.е. она не в коде а в системе гдето... тогда туже и в ней выдаст)
Iova (2005-05-19 10:15:00) [13]У меня версия 5.0.4.5
Можешь мне прислать на ящик? Пожалуйста.
Anatoly Podgoretsky (2005-05-19 10:12:00) [14]Iova (19.05.05 09:52) [11]
И какая строка подключения?
Anatoly Podgoretsky (2005-05-19 10:10:00) [15]sniknik © (18.05.05 15:22) [5]
Оно так, но она ожидает два параметра, а не один.
sniknik (2005-05-19 10:06:00) [16]> Честно говоря я не знаю какая версия. Скачивал я с твей ссылки.
скачивал оттуда же (с сайта, конкретную ссылку не помню), работает без эксессов
> Кстати не подскажешь где это можно посмотреть?
что? версию? как обычно в свойствах файла (IBOLE.dll) вкладка версия... у меня показывает 5.0.11.2
Iova (2005-05-19 09:52:00) [17]>sniknik
Честно говоря я не знаю какая версия. Скачивал я с твей ссылки.
Нашел в файле Readme.txt
IB OLE DB Driver
ibole.dll
-----------------------------------------------------------------
2003 ZStyleGroup Ltd support@zstyle.dp.ua
Get latest version on: www.zstyle.dp.ua
************
PURPOSE:
OLE DB Provider to provide access to the Interbase database server.
PLATFORMS:
MS Windows 95/98/NT/2000/XP.
Кстати не подскажешь где это можно посмотреть?
sniknik (2005-05-18 19:00:00) [18]кстати какую версию драйвера скачал?
sniknik (2005-05-18 18:59:00) [19]хм. не помню, было ли у меня такое... но я тестил всех провайдеров каких нашол тогда (гдето 5-6 шт) пока не остановился на ZStyle. все чемто да не устраивали (ZStyle поначалу тоже). но счас работает, и размеры типов полей определяет...
посему есть подозрение, дело не в провайдере (если конечно ZStyle поставил как советовал).
могу програмку для теста прислать, посмотриш на размеры полей. (500кб архив)
Iova (2005-05-18 18:58:00) [20]Прикол заключается еще в том что он Выводит данные в DBGrid. Попробовал обойти эту процедуру
var n:integer;
s1:String;
AdoDataSet1:TAdoDataSet;
begin
form1.ListBox2.Clear;
n:=form1.ListBox1.ItemIndex;
s1:=form1.ListBox1.Items.Strings[n];
AdoDataSet1 := TAdoDataset.Create(nil);
try
form1.ADOConnection1.OpenSchema(siColumns, VarArrayOf([Unassigned, Unassigned, s1,Unassigned]), EmptyParam, AdoDataSet1);
with AdoDataSet1 do begin
while not EOF do begin
form1.ListBox2.Items.Add(FieldByName('COLUMN_NAME').AsString);
form4.ComboBox2.Items.Add(FieldByName('COLUMN_NAME').AsString);
Next
end;
end
finally
AdoDataSet1.Free;
end;
Всеравно не помогает, выдает ошибку: Не найдено поле RDB$FIELD_PRECISION.