Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
14-1117305394
Cerberus
2005-05-28 22:36
2005.06.29
Где есть материал.


1-1118058494
Aleksandr.
2005-06-06 15:48
2005.06.29
Что может быть причиной невыгрузки библиотеки?


14-1117780745
QuasiLamo
2005-06-03 10:39
2005.06.29
PHP


14-1117835054
кактусбел
2005-06-04 01:44
2005.06.29
вычесление значение суммы рядов бесконечного ряда


1-1117798590
Николай
2005-06-03 15:36
2005.06.29
Удаление записей помеченных на удаление из базы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский