2009-06-25 7 views
0

私はODBCを介して接続しているアクセスデータベースの設定を持っています。アクセスファイルにはすでにすべての必要なクエリが組み込まれていますので、アプリケーション内から呼び出すのは簡単です。VBからAccess 2007のクエリを使用する

私は、Visual Basic .NETを使用していますが、これは私が.....これまであなたが提供できるすべての助けを事前に

感謝をしようとしているものです。

ベン

 Dim command As OdbcCommand = New OdbcCommand 

    command.Connection = cnx 
    command.CommandText = "sp_InsertClient" 
    command.CommandType = CommandType.StoredProcedure 

    '//====== create ABN paramenter ============= 
    Dim param1 As OdbcParameter = New OdbcParameter("inABN", abn) 
    param1.Direction = ParameterDirection.Input 
    param1.DbType = DbType.String 
    'add abn parameter 
    command.Parameters.Add(param1) 

    Dim dataAdapter As OdbcDataAdapter = New OdbcDataAdapter(command) 

    dataAdapter.InsertCommand = command 
    Try 
     cnx.Open() 
     dataAdapter.InsertCommand.ExecuteNonQuery() 
    Catch ex As Exception 
     MessageBox.Show(ex.Message, "Error", _ 
         MessageBoxButtons.OK, MessageBoxIcon.Error) 
     Exit Sub 
    Finally 
     cnx.Close() 
    End Try 


    MessageBox.Show("DONE") 

答えて

0

だから、あなたの質問は何ですか?

上記のコードを見ると、dataAdapterは必要ありません。
command.ExecuteNonQuery()に電話して作業を行うことができます。

EDIT:また、OdbcConnection & OdbcCommandをusing...end usingブロックにラップすることもできます。ここで

+0

は、私は 無効なSQL文をデータアダプターを取り外し、ちょうどcommand.ExecuteNonQuery(使用)それでも同じエラー。 'DELETE'、 'INSERT'、 'PROCEDURE'、 'SELECT'、または 'UPDATE'のいずれかを選択します。 私の質問は、クエリがアクセス内で動作するので、コードに間違いがある可能性があります。 –

+0

Access内で動作するクエリを投稿できますか? – shahkalpesh

+0

コードを編集し、sp_Insertのコードと一緒に持っているものを表示します。 – shahkalpesh

0

は、VBコード

Public Sub AddClient(ByVal abn As String, ByVal companyName As String, _ 
        ByVal contactName As String, ByVal phoneNumber As String, _ 
        ByVal address As String) 
    'Dim command As OdbcCommand = New OdbcCommand 
    Using cnx As New OdbcConnection(My.Settings.connectionString) 
     Using command As New OdbcCommand 
      command.Connection = cnx 
      command.CommandText = "sp_InsertClient" 
      command.CommandType = CommandType.StoredProcedure 

      '//====== create ABN paramenter ============= 
      Dim param1 As OdbcParameter = New OdbcParameter("inABN", abn) 
      param1.Direction = ParameterDirection.Input 
      param1.DbType = DbType.String 
      'add abn parameter 
      command.Parameters.Add(param1) 

      '//====== create CompanyName Parameter ================ 
      Dim param2 As OdbcParameter = New OdbcParameter("inCompanyName", companyName) 
      param2.Direction = ParameterDirection.Input 
      param2.DbType = DbType.String 
      'add the parameter 
      command.Parameters.Add(param2) 

      '//======== create ContactName Param =============== 
      Dim param3 As OdbcParameter = New OdbcParameter("inContactName", contactName) 
      param3.Direction = ParameterDirection.Input 
      param3.DbType = DbType.String 
      'add the parameter 
      command.Parameters.Add(param3) 

      '//=========== create PhoneNumber Parameter =============== 
      Dim param4 As OdbcParameter = New OdbcParameter("inPhoneNumber", phoneNumber) 
      param4.Direction = ParameterDirection.Input 
      param4.DbType = DbType.String 
      'add paramater 
      command.Parameters.Add(param4) 

      '//=========== create Address Parameter =============== 
      Dim param5 As OdbcParameter = New OdbcParameter("inAddress", address) 
      param5.Direction = ParameterDirection.Input 
      param5.DbType = DbType.String 
      'add paramater 
      command.Parameters.Add(param5) 

      Try 
       cnx.Open() 
       command.ExecuteNonQuery() 
      Catch ex As Exception 
       MessageBox.Show(ex.Message, "Error", _ 
           MessageBoxButtons.OK, MessageBoxIcon.Error) 

       Exit Sub 
      End Try 
     End Using 
    End Using 
    MessageBox.Show("DONE") 
End Sub 

そして、ここでは、Accessでの私のクエリです。私の古い答えを編集したすべての助けのための

INSERT INTO tblClients (ABN, CompanyName, ContactName, PhoneNumber, Address) 
VALUES ([inABN], [inCompanyName], [inContactName], [inPhoneNumber], [inAddress]); 

おかげで...

0

は...それはthisthisによると

間違っていた、あなたは右のそれをやっています。

アクセスにビルトインqueryiesを使用する代わりに、アクセスのストアドプロシージャとしてそれらを定義することです。 Working with MS Access Stored Procedures in VB.NET. Part 1はこれの概要です。彼らのために

0

おかげで、私はすでにそれを見ていたが、現在は実行するクエリを取得しているように見えること、EXECUTEの追加を逃していたリンクが、私のパラメータは、アクセスクエリに渡されていません。

私がテストしていると、私のパラメータはなく、Accessクエリへのコマンドに追加されていますか?

は私もParameters.AddWithValue(「paramNameに」、値)

を試してみましたが、これは同じ結果であった

また、私はこれにアクセスして、私のクエリを変更し、必要でない角括弧が判明。 tblClients INTO ..

INSERT(ABN、得意先名、担当者名、のPhoneNumber、住所) VALUES(inABN、inCompanyName、inContactName、inPhoneNumber、inAddress)

私はより多くを説明しているはずのおかげで申し訳 ベン

関連する問題