2016-06-16 8 views
-1
どのようにVB .NETからのアクセスに

VB .NETからアクセスへのデータのば可用性に基づいてデータを入力する方法

のデータのば可用性に基づいてデータを入力するために、私はコードに取り組んでいる

アクセスデータベースにデータを挿入することです。私はそれを成功裏に実行することができますが、扱う方法がわからない例外はほとんどありません。だから私を助けてください。

私には11のテキストボックスがあります。これらはすべて必須ですが、1つのテキストボックス(TextBox3)はオプションです。つまり、TextBox3にデータがあり、時にはデータがないことがあります。 Textbox3のデータの可用性に基づいて、私は自分のアクセスデータベースを更新できるはずです。

これは私が

If (Not String.IsNullOrWhiteSpace(Textbox3.Text)) Then 

     End If 

....テキストボックスにあったデータだかいないかどうかを確認するためのコードは、このことを知っていると私はこのコードを知っている私のコード

Imports System.Data.OleDb 
Public Class Form1 
    Dim provider As String 
    Dim datafile As String 
    Dim connString As String 
    Dim myConnection As OleDbConnection = New OleDbConnection 
    Dim str As String 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
     provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" 
     datafile = "D:\Database\sampletest.accdb" 
     connString = provider & datafile 
     myConnection.ConnectionString = connString 
     myConnection.Open() 
     Dim insrt0 As String 
     insrt0 = "Insert into 01bkDetails([bk01],[bk02],[bk03],[bk04],[bk05],[bk06],[bk07],[bk08],[bk09],[bk10],[bk11]) Values (?,?,?,?,?,?,?,?,?,?,?)" 
     Dim cmd1 As OleDbCommand = New OleDbCommand(insrt0, myConnection) 
      cmd1.Parameters.Add(New OleDbParameter("bk01", CType(Textbox1.Text, String))) 
      cmd1.Parameters.Add(New OleDbParameter("bk02", CType(Textbox2.Text, String))) 
      cmd1.Parameters.Add(New OleDbParameter("bk03", CType(Textbox3.Text, String))) 
      cmd1.Parameters.Add(New OleDbParameter("bk04", CType(Textbox4.Text, String))) 
      cmd1.Parameters.Add(New OleDbParameter("bk05", CType(Textbox5.Text, String))) 
      cmd1.Parameters.Add(New OleDbParameter("bk06", CType(Textbox6.Text, String))) 
      cmd1.Parameters.Add(New OleDbParameter("bk07", CType(Textbox7.Text, String))) 
      cmd1.Parameters.Add(New OleDbParameter("bk08", CType(Textbox8.Text, String))) 
      cmd1.Parameters.Add(New OleDbParameter("bk09", CType(Textbox9.Text, String))) 
      cmd1.Parameters.Add(New OleDbParameter("bk10", CType(Textbox10.Text, String))) 
      cmd1.Parameters.Add(New OleDbParameter("bk11", CType(Textbox11.Text, String))) 
     Try 
      cmd1.ExecuteNonQuery() 
      cmd1.Dispose() 
      myConnection.Close() 

     Catch ex As Exception 
      MsgBox(ex.Message) 
     End Try 
    End Sub 
End Class 

ですこの時点cmd1.ExecuteNonQuery()私が唯一のテキストボックス3が影響を受けるとされなければならないたいので私の質問は、私は...と「IF終了」「IF」の間は何で書く必要がありますされ

ない残りのテキストボックスで実行する必要がありますes。

そして、私はまた、私はAccessデータベースで空のフィールドを持つことができるか、それはいくつかのデータ

でそれを埋めるために必須であるかどうかを知りたいあなたはTextbox3.Textの値をチェックしYou.`

答えて

1

ありがとうございましたコマンドオブジェクトにパラメータとして追加する前に:

Imports System.Data.OleDb 
Public Class Form1 
    Dim provider As String 
    Dim datafile As String 
    Dim connString As String 
    Dim myConnection As OleDbConnection = New OleDbConnection 
    Dim str As String 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
     provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" 
     datafile = "D:\Database\sampletest.accdb" 
     connString = provider & datafile 
     myConnection.ConnectionString = connString 
     myConnection.Open() 
     Dim insrt0 As String 
     insrt0 = "Insert into 01bkDetails([bk01],[bk02],[bk03],[bk04],[bk05],[bk06],[bk07],[bk08],[bk09],[bk10],[bk11]) Values (?,?,?,?,?,?,?,?,?,?,?)" 
     Dim cmd1 As OleDbCommand = New OleDbCommand(insrt0, myConnection) 
      cmd1.Parameters.Add(New OleDbParameter("bk01", CType(Textbox1.Text, String))) 
      cmd1.Parameters.Add(New OleDbParameter("bk02", CType(Textbox2.Text, String))) 
      If (String.IsNullOrWhiteSpace(Textbox3.Text)) Then 
       cmd1.Parameters.Add(New OleDbParameter("bk03", CType(Textbox3.Text, String))) 
      Else 
       ' Insert an empty String 
       cmd1.Parameters.Add(New OleDbParameter("bk03", "")) 
      End If 
      cmd1.Parameters.Add(New OleDbParameter("bk04", CType(Textbox4.Text, String))) 
      cmd1.Parameters.Add(New OleDbParameter("bk05", CType(Textbox5.Text, String))) 
      cmd1.Parameters.Add(New OleDbParameter("bk06", CType(Textbox6.Text, String))) 
      cmd1.Parameters.Add(New OleDbParameter("bk07", CType(Textbox7.Text, String))) 
      cmd1.Parameters.Add(New OleDbParameter("bk08", CType(Textbox8.Text, String))) 
      cmd1.Parameters.Add(New OleDbParameter("bk09", CType(Textbox9.Text, String))) 
      cmd1.Parameters.Add(New OleDbParameter("bk10", CType(Textbox10.Text, String))) 
      cmd1.Parameters.Add(New OleDbParameter("bk11", CType(Textbox11.Text, String))) 
     Try 
      cmd1.ExecuteNonQuery() 
      cmd1.Dispose() 
      myConnection.Close() 

     Catch ex As Exception 
      MsgBox(ex.Message) 
     End Try 
    End Sub 
End Class 
+0

おかげで...魅力的なように働きました。 – winnu

+0

'OleDbParameter'コンストラクタは' Null'文字列値を受け入れることができません。だからそうであれば、nullでないString値から空の文字列である 'OleDbParameter'をコンストラクターでチェックします。 – marlan

+0

オハイオ州それは...説明Broのためにありがとう、私はそれがヌル文字列値を受け入れないことを知らなかった... Btw、それはオフトピックの質問だが...なぜ私はいくつかのリンクを手動で入力すれば、私はアクセスのハイパーリンクフィールドのリンクの始めと終わりに#記号を得ているのを知っていますか? – winnu

関連する問題