如何检查和输入" 2文本框中的数据"基于从VB .Net访问数据的可用性

时间:2016-06-17 05:49:28

标签: database vb.net ms-access

我试图将一些数据插入到访问数据库中,但有一些条件。通过选中 2个文本框来输入数据,然后只插入访问数据库。

如需了解更多信息,请查看我的代码..

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\samplech.accdb"
    connString = provider & datafile
    myConnection.ConnectionString = connString
    myConnection.Open()

    Dim chinsrt1 As String
    chinsrt1 = "Insert into bkCharacters([bkch01],[bkch02],[bkch03],[bkCh04]) Values (?,?,?,?)"
    Dim chcmd1 As OleDbCommand = New OleDbCommand(chinsrt1, myConnection)
    If (String.IsNullOrWhiteSpace(CH1.Text)) Then
        If (String.IsNullOrWhiteSpace(CHDP1.Text)) Then
            chcmd1.Parameters.Add(New OleDbParameter("bk01", CType(bkNmbr.Text, String)))
            chcmd1.Parameters.Add(New OleDbParameter("bk02", CType(CH1.Text, String)))
            chcmd1.Parameters.Add(New OleDbParameter("bk03", CType(CHDP1.Text, String)))
            chcmd1.Parameters.Add(New OleDbParameter("bk04", CType(CHSource.Text, String)))
        Else
            ' Insert an empty String
            chcmd1.Parameters.Add(New OleDbParameter("bk01", ""))
            chcmd1.Parameters.Add(New OleDbParameter("bk02", ""))
            chcmd1.Parameters.Add(New OleDbParameter("bk03", ""))
            chcmd1.Parameters.Add(New OleDbParameter("bk04", ""))
        End If
    End If


    Dim chinsrt2 As String
    chinsrt2 = "Insert into bkCharacters([bkch01],[bkch02],[bkch03],[bkCh04]) Values (?,?,?,?)"
    Dim chcmd2 As OleDbCommand = New OleDbCommand(chinsrt2, myConnection)
    If (String.IsNullOrWhiteSpace(CH2.Text)) Then
        If (String.IsNullOrWhiteSpace(CHDP2.Text)) Then
    chcmd2.Parameters.Add(New OleDbParameter("bk01", CType(bkNmbr.Text, String)))
            chcmd2.Parameters.Add(New OleDbParameter("bk02", CType(CH2.Text, String)))
            chcmd2.Parameters.Add(New OleDbParameter("bk03", CType(CHDP2.Text, String)))
            chcmd2.Parameters.Add(New OleDbParameter("bk04", CType(CHSource.Text, String)))
        Else
            ' Insert an empty String
            chcmd2.Parameters.Add(New OleDbParameter("bk01", ""))
            chcmd2.Parameters.Add(New OleDbParameter("bk02", ""))
            chcmd2.Parameters.Add(New OleDbParameter("bk03", ""))
            chcmd2.Parameters.Add(New OleDbParameter("bk04", ""))
        End If
    End If



    Try
        chcmd1.ExecuteNonQuery()
        chcmd2.ExecuteNonQuery()
        chcmd1.Dispose()
        chcmd2.Dispose()
        myConnection.Close()

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

我在这里尝试做的是检查CH1.Text和CHDP1.Text的值,如果其中一个文本框中有一些数据,我希望另一个字段可以访问是空的。

但如果两个数据都只是相应插入......

在这两种情况下,我还想包括bkNmbr.Text和ChSource.Text。

如果两个文本框(CH1和CHDP1)中都没有数据,我根本不想更新数据(不更新记录)

请帮帮我们,我被困在这里。

谢谢。

1 个答案:

答案 0 :(得分:1)

检查一个字段是否为空,然后插入,如果两个字段都不执行任何操作。

If (Not String.IsNullOrWhiteSpace(CH1.Text)) OR (Not String.IsNullOrWhiteSpace(CHDP1.Text)) Then 'check if at least one field is not empty
  Dim checkNullCH1 as String
  Dim checkNullCHDP1 as String

  If String.IsNullOrWhiteSpace(CH1.Text) then 'check if field is empty
    checkNullCH1 = "" 
  else 
    checkNullCH1 = CH1.Text
  end if

  If String.IsNullOrWhiteSpace(CHPD1.Text) then
    checkNullCHPD1 = ""
  else 
    checkNullCHPD1 = CHPD1.Text
  end if
  chcmd1.Parameters.Add(New OleDbParameter("bk01", CType(bkNmbr.Text, String)))
  chcmd1.Parameters.Add(New OleDbParameter("bk02", CType(checkNullCH1, String)))
  chcmd1.Parameters.Add(New OleDbParameter("bk03", CType(checkNullCHPD1, String)))
  chcmd1.Parameters.Add(New OleDbParameter("bk04", CType(CHSource.Text, String)))
  chcmd1.ExecuteNonQuery()
end if

替代你可以检查两者是否都是空的。

If not ((String.IsNullOrWhiteSpace(CH1.Text)) AND (String.IsNullOrWhiteSpace(CHDP1.Text))) Then

这等于另一个。