[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2004/11/09(Tue) 17:28
投稿者名:ねこ
Eメール:
URL :
タイトル:
DLL呼び出し
いつも参考にさせて頂いています。

質問なのですが、
プロジェクト外のDLL関数を用いて、データベースに接続したいのですが
エラーが出てしまい、困っています。

***********ソース*************
Public Function ConnectPostalCode()
    Dim DAO         As Provider
    
    On Error Resume Next
    ConnectPostalCode = True
    
    '郵便番号.mdbファイルの設定
    Call clsPostal.SetDatabase(DAO, YUBINMDB, "h", "h")
    If err.Number <> 0 Then GoTo err:
   Exit Function

***********DLL SetDatabase関数概要*************
Object.SetDatabase(pvrProvider, strDataSource, strUID, strPWD)
 引数
   pvrProvider        DAO、SQLServerのどちらかを指定します。
   StrDataSource    DAOならファイル名、SQL Serverならサーバー名を指定します。
   StrUID        ユーザー名
   StrPWD        パスワード
  戻り値       なし
**************************************

関数の内容とソースに関しては、このようになっています。

デバックするとSetDatabaseをcallしている所で、
ConnectionOpen接続が正しくありません。というPGMで用意されたエラーがでます。

原因としては、DAOの引数の渡し方が悪いのかと思います。
どのようにすればいいのでしょうか。
ご教授下さい。よろしくお願いします。

投稿時間:2004/11/09(Tue) 21:52
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: DLL呼び出し
> プロジェクト外のDLL関数を用いて、データベースに接続したいのですが

「プロジェクト外のDLL関数」というが良くわかりません。
もう少し詳しく教えてください。

そのDLLとは、参照設定して使う ActiveX DLL でしょうか。
それとも、Declareステートメントを用いるタイプですか?

また、そのDLLは、ご自身で作られたものですか?
それとも、市販製品で提供されるDLLなどでしょうか?


>  Public Function ConnectPostalCode()
>     Dim DAO         As Provider

Provider型というのは、あまり聞いた事がありませんが、それは、
お使いのDLLで提供されている型なのでしょうか?

DLL側の内部仕様がわからないため、あくまで想像になりますが、
もし、それがユーザー定義型や列挙型などであるならば、その変数には、
何らかの値を、事前に代入しておく必要があるのだと思います。

あるいは、それがクラス(またはインターフェイス型)なのだとすれば、
Newキーワードを使うなどして、Providerクラスのインスタンスを、
オブジェクトとして取得しておく必要があるかと想像します。


> 関数の内容とソースに関しては、このようになっています。

DLL内部でどのような事を行っているのかが不明なので、関数の引数仕様や、
呼び出し側のソースだけを見ても、判断がつきません…。


> ConnectionOpen接続が正しくありません。というPGMで用意されたエラーがでます。
PGMで用意されたメッセージなのであれば、それは想定されたエラーなのでしょうね。
(そのDLLの作成者には問い合わせされましたか?)