Вверх ↑
Этот топик читают: Гость
Ответов: 93
Рейтинг: 2
#1: 2018-03-20 15:08:03 ЛС | профиль | цитата
О Великие ГУРУ и снова Я.
В стандартной справке не нашел информации о компоненте ODBC, как с ним работать? для чего где и как прописать драйвер? В моем случае мне нужно подключиться к FireBird.
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Разработчик
Ответов: 25033
Рейтинг: 2070
#2: 2018-03-20 15:43:26 ЛС | профиль | цитата
zhorik5 писал(а):
как прописать драйвер?

https://www.connectionstrings.com/ibphoenix-open-source-odbc-driver/
карма: 17

0
Главный модератор
Ответов: 2542
Рейтинг: 352
#3: 2018-03-20 15:51:47 ЛС | профиль | цитата
zhorik5 писал(а):
В стандартной справке не нашел информации о компоненте ODBC, как с ним работать?

Выделить элемент в редакторе и нажать клавишу F1 пробовали? Примеры из папки \HiAsm\Elements\Delphi\Example\DataBase открывали? Если религия этого сделать не позволяет, то...
карма: 7
Дорогу осилит идущий. HiAsm.NET is based on HiAsm 5
0
Ответов: 93
Рейтинг: 2
#4: 2018-03-20 18:49:00 ЛС | профиль | цитата

Add(MainForm,2953706,42,182)
{
Width=791
Height=430
Point(onClose)
link(onCreate,6803554:doConnectDSN,[])
link(onClose,6803554:doDisconnect,[(100,209)(100,223)])
}
Add(StringTableMT,646954,406,217)
{
Left=150
Top=5
Width=455
Height=380
Columns=#5:1=150|5:2=100|
IconsCheck=[]
MiscIcons=[]
Icons=[]
Point(doMT_Add)
}
Add(MT_String,14662179,357,252)
{
link(onResult,646954:doMT_Add,[])
}
Add(Message,15852608,245,294)
{
}
Add(ODBC,6803554,189,196)
{
DSN_Name="TDT_firebird"
Driver=""
Point(onError)
Point(ColumnsCount)
link(onStreamString,3175540:doConvert,[])
link(onError,15852608:doMessage,[(234,223)(234,300)])
}
Add(Button,8681642,63,280)
{
Left=10
Top=10
link(onClick,1459395:doString,[])
}
Add(FormatStr,1459395,126,280)
{
Mask="SELECT "name", "barcode" FROM "modelgoods", "vollink" WHERE "cognate" = "modelid""
link(onFString,6803554:doQuery,[(177,286)(177,209)])
}
Add(Convertor,3175540,245,196)
{
Mode=11
link(onResult,11414078:doString,[(285,202)(285,272)])
}
Add(InlineCode,11414078,294,266)
{
@Hint=#45:Формирует строку для добавления в StringTable|
WorkPoints=#53:doString=Формирование строки для вывода в StringTable|
EventPoints=#74:onEvent=Происходит когда все поля строки заполнены и выдаёт строку в поток|
DataPoints=#45:Fields=Количество полей для заполнения строки|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|23:uses kol, Share, Debug;|0:|4:type|30: THiAsmClass = class( TDebug )|10: private|9: public|26: _data_Data: THI_Event;|22: Fields: THI_Event;|23: onEvent: THI_Event;|16: Count: Word;|19: StrOut: String;|53: procedure doString( var _Data:TData; Index:word );|5: end;|0:|14:implementation|0:|62:procedure THiAsmClass.doString( var _Data:TData; Index:word );|5: var|17: Data : TData;|15: i: Integer;|20: strTemp: String;|7: begin|31: Data.Data_type := data_str;|21: Data.sdata := '';|51: strTemp := ReadString( _data, _data_Data, '' );|31: Data.Data_type := data_int;|20: Data.idata := 0;|41: i := ReadInteger( _data, Fields, 0 );|38: strOut := strOut + strTemp + ';' ;|17: Inc( Count );|27: if Count = i then begin|36: _hi_onEvent( onEvent, strOut );|16: Count := 0;|18: strOut := '';|15: end; { If }|6: end;|0:|4:end.|
link(onEvent,14662179:doMTString,[])
link(Fields,6803554:ColumnsCount,[(300,247)(195,247)])
}


--- Добавлено в 2018-03-20 18:50:50

кое чего получилось! к firebird на локальной машине цепляется. малость разобрался. вопрос а как по сетке к нему зацепиться?

Редактировалось 1 раз(а), последний 2018-03-20 18:50:50
карма: 0

0
Главный модератор
Ответов: 2542
Рейтинг: 352
#5: 2018-03-20 19:29:43 ЛС | профиль | цитата
zhorik5 писал(а):
как по сетке к нему зацепиться?

Использовать соединение через указание строки подключения. Заполните свойство ConnectionDrv. Смотрите вариант строки в примере ODBC_Access.sha.
карма: 7
Дорогу осилит идущий. HiAsm.NET is based on HiAsm 5
0
Ответов: 93
Рейтинг: 2
#6: 2018-03-21 11:01:05 ЛС | профиль | цитата
Nic писал(а):
Смотрите вариант строки в примере
не пойму. там пустое поле вроде все пролез. хотя может смотрю в книгу вижу фигу.
вот так вот работает
FIrebird ODBC_подключение к локальному.JPG
и так.
FIrebird ODBC_подключение к серверу.JPG

--- Добавлено в 2018-03-21 11:04:53

connectionDRV

DRIVER = Firebird/InterBase(r) driver; UID = SYSDBA; PWD = masterkey;
DBNAME =192.168.0.25/3055:tdtbase;



driver

DRIVER = Firebird/InterBase(r) driver;

с этими параметрами не подключается.

--- Добавлено в 2018-03-21 11:07:02

odbc.JPG

Редактировалось 3 раз(а), последний 2018-03-21 11:29:33
карма: 0

0
Ответов: 3627
Рейтинг: 618
#7: 2018-03-21 12:02:32 ЛС | профиль | цитата
В свойстве ConnectionDrv нужно убрать пробелы вокруг "="
В свойстве Driver согласно примерам указывается только название драйвера без слова "DRIVER = ".


В исходном коде компонента ODBC куча странного кода
1) Зачем делать LoadLibrary/GetProcAddress в THIODBC._work_doSetup при каждом вызове, если можно сделать один раз, или просто объявить импортируемую функцию как и все остальные?
2) Что за индусский код в THIODBC._work_doSetup?
for i := 0 To Length( strTemp ) - 1 do strAttr[i] := strTemp[i+1];

Редактировалось 7 раз(а), последний 2018-03-21 12:18:07
карма: 15

0
Главный модератор
Ответов: 2542
Рейтинг: 352
#8: 2018-03-21 18:58:21 ЛС | профиль | цитата
Dilma писал(а):
я использую элемет ODBC от коллеги Nic'a. Не слишком удачно спроектированный элемент, но зато стабильно работает и показывает все, что нужно.

http://forum.hiasm.com/post/61643
Если у кого-либо "зудит" что-либо исправить: не возражаю

Редактировалось 1 раз(а), последний 2018-03-21 19:08:55
карма: 7
Дорогу осилит идущий. HiAsm.NET is based on HiAsm 5
0
Ответов: 93
Рейтинг: 2
#9: 2018-03-23 17:58:24 ЛС | профиль | цитата
Netspirit писал(а):
В свойстве ConnectionDrv нужно убрать пробелы вокруг "="
В свойстве Driver согласно примерам указывается только название драйвера без слова "DRIVER = ".

odbc2.JPG
не работает!!!

Редактировалось 1 раз(а), последний 2018-03-23 17:59:10
карма: 0

0
Ответов: 3627
Рейтинг: 618
#10: 2018-03-23 18:08:04 ЛС | профиль | цитата
ConnectionDrv требует правильного заполения необходимыми параметрами. Оставь ConnectionDrv пустым.
карма: 15

0
Ответов: 16192
Рейтинг: 1208
#11: 2018-03-23 18:12:27 ЛС | профиль | цитата
zhorik5, выложи tdtbase.fdb
карма: 20
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 3627
Рейтинг: 618
#12: 2018-03-23 18:16:08 ЛС | профиль | цитата
Tad писал(а):
zhorik5, выложи tdtbase.fdb
Tad, у тебя есть Firebird+ODBC driver? Там в комплекте идёт employee.fdb - настрой ODBC и свойства в программе, укажи где ошибка у zhorik5.
(PS: порт сервера FireBird по умолчанию 3050, у zhorik5 почему-то 3055, если это то, что на скриншотах идёт после IP)

Редактировалось 2 раз(а), последний 2018-03-23 18:21:34
карма: 15

0
Ответов: 93
Рейтинг: 2
#13: 2018-03-23 18:29:45 ЛС | профиль | цитата
Tad писал(а):
zhorik5, выложи tdtbase.fdb

Tad, родненький в данном случае не могу(
Netspirit писал(а):
(PS: порт сервера FireBird по умолчанию 3050, у zhorik5 почему-то 3055,

да порт 3055 так настроен сервер firebird и программа работающая с ним!
через DSN все работает. хочу сделать чтоб все на автомате работало без лишних манипуляций настройки DSN для не знающего пользователя!
вдруг изменится имя servera firebird порт и таму подобное. вообщем нужно через драйвер!!!!

--- Добавлено в 2018-03-23 18:33:31

у меня такое подозрение что требуется клиент для подключения firebird. пару Постов выше он указывается в настройке DSN

--- Добавлено в 2018-03-23 18:34:57

Netspirit писал(а):
ConnectionDrv требует правильного заполения необходимыми параметрами. Оставь ConnectionDrv пустым.

а где же тогда указывать подключение к базе данных?в поле драйвер?

Редактировалось 2 раз(а), последний 2018-03-23 18:34:57
карма: 0

0
Главный модератор
Ответов: 2542
Рейтинг: 352
#14: 2018-03-23 18:49:14 ЛС | профиль | цитата
zhorik5 писал(а):
через DSN все работает

Это означает, что может работать и через строку подключения, так как эти способы соединения практически идентичны.
Строка подключения должна содержать всю необходимую информацию для установки соединения, также как и при создании DSN, то есть это и есть по сути DSN, только создаваемый динамически. Как только укажите правильную строку - подключение произойдёт. Поймите простую вещь, что строка соединения это просто список параметров передаваемых в формате: PARAM1=VALUE1;...;PARAMN=VALUEN;
P.S.
Или Вас google забанил?
карма: 7
Дорогу осилит идущий. HiAsm.NET is based on HiAsm 5
0
Ответов: 93
Рейтинг: 2
#15: 2018-03-23 19:09:37 ЛС | профиль | цитата
Nic писал(а):
Или Вас google забанил?

уже каптчу показывает похоже я его за*бал
Nic писал(а):
Как только укажите правильную строку - подключение произойдёт
и получается что эта же самая строка должна содержать информацию логин и пароль и путь к базе.?
https://www.connectionstrings.com/ibphoenix-open-source-odbc-driver/ я отсюда все варианты перепробовал!
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)