Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

InterBase с помощью ADO. [D7, IB6.x]


Страницы:   1 2

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.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо