Форум: "Базы";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
ВнизInterBase с помощью ADO. Найти похожие ветки
← →
Iova (2005-05-18 13:10) [0]Помогите пожалуйста решить проблему.
Я подключаю базу 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
← →
Johnmen © (2005-05-18 13:22) [1]Достаточно нажать F1 и разобраться с параметрами.
← →
Iova (2005-05-18 13:49) [2]С параметрами все в порядке, т.к. эта процедура работает для БД Access.
← →
sniknik © (2005-05-18 14:58) [3]> Может из-за драйвера FireBird. У меня стоит Firebird_ODBC_1.2.0.69-Win32.exe
вполне возможно, получение имен полей и имен таблиц разными схемами обеспечиваются, может твой драйвер одну и не реализовал (вернее те кто его писали).
проверь с другим, благо их уже достаточно.
вот этот например, точно работает. с ним имена полей у меня получаются.
http://zstyle.dp.ua/rus/download.htm
← →
Johnmen © (2005-05-18 15:17) [4]М.б. я чего-то не догоняю, но мне не понятно, как может эта процедура работать, когда вторым параметром ей указывают TStrings.
← →
sniknik © (2005-05-18 15:22) [5]ну а чего бы ей не работать если там TStrings и ожидается? %о))
TADOConnection.GetFieldNames(const TableName: String; List: TStrings);
← →
Johnmen © (2005-05-18 15:31) [6]А-а-а-а-а-а-а !!!!!
Так там и Field и Table... Не доглядел, однако :)))
← →
Iova (2005-05-18 17:28) [7]Попробовал. Теперь он выдает ошибку: Не найдено поле RDB$FIELD_PRECISION.
← →
Iova (2005-05-18 18:58) [8]Прикол заключается еще в том что он Выводит данные в 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.
← →
sniknik © (2005-05-18 18:59) [9]хм. не помню, было ли у меня такое... но я тестил всех провайдеров каких нашол тогда (гдето 5-6 шт) пока не остановился на ZStyle. все чемто да не устраивали (ZStyle поначалу тоже). но счас работает, и размеры типов полей определяет...
посему есть подозрение, дело не в провайдере (если конечно ZStyle поставил как советовал).
могу програмку для теста прислать, посмотриш на размеры полей. (500кб архив)
← →
sniknik © (2005-05-18 19:00) [10]кстати какую версию драйвера скачал?
← →
Iova (2005-05-19 09:52) [11]>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-19 10:06) [12]> Честно говоря я не знаю какая версия. Скачивал я с твей ссылки.
скачивал оттуда же (с сайта, конкретную ссылку не помню), работает без эксессов
> Кстати не подскажешь где это можно посмотреть?
что? версию? как обычно в свойствах файла (IBOLE.dll) вкладка версия... у меня показывает 5.0.11.2
← →
Anatoly Podgoretsky © (2005-05-19 10:10) [13]sniknik © (18.05.05 15:22) [5]
Оно так, но она ожидает два параметра, а не один.
← →
Anatoly Podgoretsky © (2005-05-19 10:12) [14]Iova (19.05.05 09:52) [11]
И какая строка подключения?
← →
Iova (2005-05-19 10:15) [15]У меня версия 5.0.4.5
Можешь мне прислать на ящик? Пожалуйста.
← →
sniknik © (2005-05-19 11:17) [16]> Оно так, но она ожидает два параметра, а не один.
во второй да но жалобы на первую ;о)), сдесь думаю описка.
> Можешь мне прислать на ящик? Пожалуйста.
могу но не буду. (против идеи форума, должно быть доступно всем заинтересованым, это что все рассылать?)
вот поискал у них и нашол откуда качал
страница
http://zstyle.dp.ua/rus/iboledb_prod.htm
ссылка
- Скачай бесплатную версию 5
(мог бы и сам)
а на ящик я тебе всетаки кину прогу, для теста. (если и в ней будет этот глюк, то значит чтото не то с самим ADO/OLE DB/...х.з. т.к. данная прога с данным провайдером у меня работает без проблем)
там на списке полей правой кнопкой мыши ткнеш увидиш типы и размеры поля, или на списке таблиц там меню, перевести в режим grid-а будеш видеть их всегда (или не покажет, если твоя ошибка проявится, т.е. она не в коде а в системе гдето... тогда туже и в ней выдаст)
← →
sniknik © (2005-05-19 11:18) [17]>> Оно так, но она ожидает два параметра, а не один.
> во второй да но жалобы на первую ;о)), сдесь думаю описка.
стоп! во второй процедуре это же список таблиц, там один параметр и нужен.
путаете меня только. ;о))
← →
Iova (2005-05-19 20:22) [18]Похоже проблема в самой IB. Пробовал с помощью тестовой проги подключать. Ошибка та же самая (отсутствие выше указанного поля). А случайно нет ли разницы в какой версии IB создавалась база?
← →
sniknik © (2005-05-19 20:36) [19]> А случайно нет ли разницы в какой версии IB создавалась база?
х.з. базы у меня были из разных мест, по разному (наверное) созданы.
сам создавал через TIBDatabase.CreateDatabase
диалект всегда 3, 1 както сразу посчитал устарвшим и в проге проставил 3й, какие не мои... не знаю не смотрел.
не, в то, что дело в базе, чтото не верится (хочеш пришли если не очень большая, попробую открыть у себя), скорее уж дело в самом сервере IB(?), у меня файрбирд 1,5 счас. ну Yaffil еще пробовал. IB 6.5 правда тоже, но очень не долго, мог пропустить...
← →
sniknik © (2005-05-19 20:42) [20]хм. а может и в базе, счас посмотрел в таблице RDB$FIELDS есть поле RDB$FIELD_PRECISION (оттуда берет)
вдруг у тебя его действительно нету? выполни запросик (в той же тестовой проге)
SELECT RDB$FIELD_PRECISION FROM RDB$FIELDS
← →
sniknik © (2005-05-19 20:57) [21]или даже
SELECT RDB$FIELD_PRECISION
FROM RDB$FIELDS
WHERE RDB$FIELD_NAME="RDB$FIELD_PRECISION"
на всякий случай. ;о)
просто на предмет получения ошибки, если чегото не так с полем запрос не выполнится.
← →
Anatoly Podgoretsky © (2005-05-19 22:32) [22]Ты используешь ODBC, а они знамениты своими ограничениями, попробуй найти другой провайдер.
← →
sniknik © (2005-05-19 23:29) [23]Anatoly Podgoretsky
тот который я ему предложил OLE DB шный. но с ним говорит тоже не работает но по другому.
← →
Iova (2005-05-20 09:03) [24]А не может ли кто-нибудь прислать пример базы данных (небольшой по объему), для проверки с которой небыло никаких проблем?
PS: Пробовал выполнять запрос и он говорит что такого поля он не нашел. Пробовал экспериментировать с несколькими базами + те что идут как примеры у InterBase.
← →
sniknik © (2005-05-20 11:40) [25]> Пробовал выполнять запрос и он говорит что такого поля он не нашел.
диалект смотрел?
> для проверки с которой небыло никаких проблем?
ну это из области фантастики, проблемы в том или ином виде есть всегда. ;о))
пример послал.. но боюсь, что вот это
> + те что идут как примеры у InterBase
указывает на очень старый IB, и возможно он его(пример) даже не откроет... а может просто будут другие проблемы.
← →
Iova (2005-05-20 12:13) [26]Спасибо за пример и для него работает.
Проверил запрос
SELECT RDB$FIELD_PRECISION FROM RDB$FIELDS.
Таблицу выдает 90 строк, но значений в них нет это нормально?
← →
Iova (2005-05-20 13:01) [27]И еще моленький вопросик:
Если RDB$FIELD_PRECISION имеет пустые значения, то можно ли их вручную добавить для моих БД?
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.043 c