ODBCの設定についてです。
いろんなHPを見て下のようにしてみました。
必ずFalseが返ってくるようです。
どの点がおかしいのでしょうか?よろしくお願いいたします。
function SQLConfigDataSource(hwndParent: HWND; fRequest: Word;
IpszDriver: PChar; OpszAttributes: PChar): Boolean; stdcall; external
'ODBCCP32.DLL';
const
ODBC_ADD_DSN = 1;
ODBC_CONFIG_DSN = 2;
ODBC_REMOVE_DSN = 3;
procedure TForm1.Button1Click(Sender: TObject);
var
str1: PChar;
str2: PChar;
ret: boolean;
begin
str1 := 'TEST_DSN=Oracle Lite 35 ODBC Driver (32 ビット)';
str2 := 'Driver32=C:\orawin95\bin\olod2035.dll'#0'Description=システム'#0'
DataDirectory=C:\Orawin95oldb35'#0'
Database=DatabaseName'#0'IsolationLevel='#0'
Autocommit='#0'CursorType=';
ret := SQLConfigDataSource(HWnd(nil), ODBC_ADD_DSN, str1, str2);
if ret=False then
MessageDlg('追加できません。',mtError, [mbOk], 0);
end;
パラメータが間違っているようです。
# DATABASEという記述がDBQだったり
関数の宣言に間違いはないようです。
以下、似たような情報(Delphi-ML)です。
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=016966
“DATABASE => DBQ”としてみましたが、
結果を同じでした。
いえ、それだけでなく、パラメータがでたらめです。DBQは「一部」です。
このパラメータは何処から持ってきました?
ドライバ名が、
'TEST_DSN=Oracle Lite 35 ODBC Driver (32 ビット)'
というものがあるかわかりませんが、
'Oracle Lite 35 ODBC Driver (32 ビット)'
ではないんでしょうか。
Oracleは入っていますがLiteの環境がないため未確認ですが。
DatabaseNameというデータベースはありますか。
IsolationLevelの値が入っていません。他にも値が入っていない項目がありますね。
省略するならば、項目名ごと省略したほうがいいです。
あっ、また、お返事ありがとうございます。
おっしゃる通り、いろんな部分がマズかったようです。
'Oracle Lite 35 ODBC Driver (32 ビット)'の
()<=括弧書きまで入れる必要がなかったみたいです。
上記を
'Oracle Lite 35 ODBC Driver'
'DSN=TEST_DSN'#0'Description=システム'#0'
DataDirectory=C:\Orawin95\oldb35'#0'Database=DatabaseName'#0'
と変更したら上手くいきました。
ありがとうございました。
チェック忘れました。
無事解決済みです。
「投稿者: ひる」ですか…。
ツイート |