0

テーブルにレコードを追加する関数を作成しました:

Public Function AjouterCleint _ 
(ByVal pcode As String, ByVal prsoc As String, ByVal padresse As String, ByVal pcp As String) As Boolean


    On Error GoTo ErrorHandler
    MsgBox " code  " & "   : " & pcode & " / rsoc : " & prsoc & " / adresse : " & padresse & " /  cp : " & pcp
    AjouterCleint = False
    Dim rs As New Recordset
    Set rs = New Recordset
    Dim conn As ADODB.Connection
    Dim strIPAddress As String
    Set con = New ADODB.Connection
    con.CursorLocation = adUseClient
    con.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" _
    & "SERVER=LOCALHOST;" _
    & " DATABASE=ste002;" _
    & "UID=root;PWD=; OPTION=3"
    con.Open
    Set rs = Nothing  
    rs.CursorLocation = adUseClient  
    SQL = "INSERT INTO Client (code,rsoc,adresse,cp) VALUES ('" _
    & pcode & "','" & prsoc & "','" & padresse & "','" & pcp & "')"
    MsgBox "5"
    rs.Open SQL, con, 3, 3
    MsgBox "6"
    Set rs = Nothing
    MsgBox "7"
    con.Close
    MsgBox "8"
    Set con = Nothing
    MsgBox "9"
    AjouterCleint = True
    ErrorHandler:
    MsgBox Err.Number & vbLf & Err.Description & vbLf & Err.HelpContext & vbLf & Err.Source, , ""
 End Function

パラメータの値は、私が使用したものではありません。(私はメッセージボックスに入ります:

 code: ????, rsoc: ????, adresse :???? , cp :1

この関数を通常の方法で使用する場合 (モジュールに追加し、次のように呼び出します。

 a = AjouterCleint("13234", "1234", "1234", "1234")

動作しますが、 dll に入れると、エラーが発生しました:

    2147217900
    [MySQL][ODBC 3.51 DRIVER] ... SYNTHAX error in “???????????????” in line 1.
    1000440
    Microsoft OLE DB providerfor ODBC drivers

例外は次の行にあります。

    rs.Open SQL, con, 3, 3

INSET COMMAND のすべてのパラメータを削除し、置き換えました

    SQL = "INSERT INTO Client (code,rsoc,adresse,cp) VALUES ('" _
    & pcode & "','" & prsoc & "','" & padresse & "','" & pcp & "')"

    SQL = "INSERT INTO Client (code,rsoc,adresse,cp) VALUES (12,12,12,12)"

そして、それはdllで動作します(他のプロジェクトで呼び出され、動作します)。
しかし、私はパラメータを扱う必要があります。
では、アドバイスをお願いします!!
どうもありがとう。
PS:「recordset.addnew」も機能せず、エラーも発生しました。

これは、dll で関数を呼び出す方法です。

Private Declare Function FunctionCalled Lib "C:\dlls\vbm2dll\Called.dll" _
(ByVal strValuePassed As String) As String

Private Declare Function AjouterCleint Lib "C:\dlls\vbm2dll\Called.dll" _
 (ByVal pcode As String, ByVal prsoc As String, ByVal padresse As String, ByVal pcp As String) As Boolean
Private Sub Form_load()

    txbValuePassed = "abc"

End Sub
Private Sub cmdCall_Click()
    txbValueReturned = FunctionCalled(txbValuePassed)
    a = AjouterCleint("1104", "1", "1", "1")
    MsgBox a & ""

End Sub
4

1 に答える 1