-
помогите пожалуйста с KOLOdbc - нужна строка подключения к базам Access. Или хотя бы БД к демке.
-
-
спасибо, интересно :) Исключение при попытке подключиться. Один драйвер установлен, но видимо провайдер по непонятной причине не работает. Других драйверов в инете не нашёл. А кто-нибудь пользовался этим модулем?
-
Видимо не особо.. может юзать базы по проще? типа sqlite. Или нужно именно одбц?
-
Еще можно создать соединение. В контрольной панели, Администрирование, Data Sources (ODBC), System DSN. Драйвр нужен Jet для Access'а. Там и протестируете.
-
нужна совместимость с Access. Я знаю только JET4. Кстати, не только у меня проблемы с освобождением интерфейсов в Делфи.
Driver do Microsoft Access или Microsoft Access Driver ? Сегодня поздно, завтра попробую что получилось.
-
DB.DSNConnect( 'q', 'Admin', '' );
останавливается на строке 637: raise EODBC.CreateError( SQL_HANDLE_DBC, fConnHandle, R, 'Не удалось установить тип асинхронности = ' + IntToStr( Integer( Value ) ) );
с сообщением Exception with message ''.
q.udl [oledb] ; Everything after this line is an OLE DB initstring Provider=MSDASQL.1;Persist Security Info=False;User ID=Admin;Data Source=q
пробовал в Data Source ставить путь к базе - без изменений.
-
как подключиться с помощью метода Connect ?
-
с тех пор я так и не смог заюзать одбц и никто не хочет сказать что я делаю не так...
-
Да, с тех пор не мало воды утекло :)
-
I tried this code:
program OdbcTest;
uses
Windows, Messages, KOL, Err, KOLOdbc;
procedure ButtonClick(Dummy: Pointer; Sender: PObj);
var
DB: PODBCDatabase;
begin
New(DB, Create);
DB.ConnectionString := 'filedsn=TestSQL.dsn;Uid=admin;Pwd=;';
if DB.Connect then
begin
ShowMessage('Connected!');
end
else
DB.Free;
end;
begin
OleInit;
Applet := NewForm(nil, '');
with NewButton(Applet, 'Connect')^ do
OnClick := TOnEvent(MakeMethod(nil, @ButtonClick));
Run(Applet);
OleUnInit;
end.
The database did connect, but there was an error in KOLOdbc.pas:
procedure TODBCDatabase.SetAsync(const Value: Boolean);
var R: Word;
begin
FAsync := Value;
if not Connected then Exit;
R := SQLSetConnectAttr(fConnHandle, SQL_ATTR_ASYNC_ENABLE,
Pointer( FAsync ), SQL_NTS);
if R > 1 then
raise EODBC.CreateError( SQL_HANDLE_DBC, fConnHandle, R,
'Íå óäàëîñü óñòàíîâèòü òèï àñèíõðîííîñòè = ' +
IntToStr( Integer( Value ) ) );
end;
R is always 65535 - can anyone help?
-
Isn't that ( a signed word value of minus one (as in true, -1) the SQL_RESULT_WITH_INFO? (on top of my head, don't use odbc anymore)
-
Very well spotted, Thaddy. I replaced: if R > 1 then with this: if SmallInt(R) > 1 then and it works now. Hopefully it helps the original poster.
-
Late, but why not more correct:
var
R:SmallInt;
Because ODBC results are signed words i.e. small integers. Also, the with_info part contains useful information and can help you debug your statements at runtime, so do not ignore it. Although a lot of ODBC drivers ignore it.
|