関数SQLConfigDataSourcを用いてODBC設定するには?

解決


あさ  2002-05-31 20:30:51  No: 950

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;


にしの  2002-05-31 20:49:00  No: 951

パラメータが間違っているようです。
# DATABASEという記述がDBQだったり
関数の宣言に間違いはないようです。

以下、似たような情報(Delphi-ML)です。
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=016966


あさ  2002-06-01 00:12:37  No: 952

“DATABASE => DBQ”としてみましたが、
結果を同じでした。


にしの  2002-06-01 00:56:43  No: 953

いえ、それだけでなく、パラメータがでたらめです。DBQは「一部」です。
このパラメータは何処から持ってきました?
ドライバ名が、
'TEST_DSN=Oracle Lite 35 ODBC Driver (32 ビット)'
というものがあるかわかりませんが、
'Oracle Lite 35 ODBC Driver (32 ビット)'
ではないんでしょうか。
Oracleは入っていますがLiteの環境がないため未確認ですが。

DatabaseNameというデータベースはありますか。
IsolationLevelの値が入っていません。他にも値が入っていない項目がありますね。
省略するならば、項目名ごと省略したほうがいいです。


あさ  2002-06-01 01:13:50  No: 954

あっ、また、お返事ありがとうございます。
おっしゃる通り、いろんな部分がマズかったようです。
'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'
と変更したら上手くいきました。
ありがとうございました。


あさ  2002-06-01 01:14:14  No: 955

チェック忘れました。
無事解決済みです。


マルチポストはマナー違反ですよ  2002-06-01 08:33:49  No: 956

「投稿者: ひる」ですか…。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加