database - 如何根据数据的可用性检查和输入来自 "2 Textboxes"的数据以从 VB .Net Access

标签 database vb.net ms-access

我正在尝试将一些数据插入到 Access 数据库中,但有一些条件。即通过选中2个文本框输入数据,然后才插入到access数据库中。

为了向您介绍更多信息,请查看我的代码..

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 的值,如果其中一个文本框中有一些数据,我希望 Access 中的另一个字段为空。

但如果它们中都有数据,则相应地插入......

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

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

伙计们,请帮帮我,我被困在这里了。

谢谢。

最佳答案

检查一个字段是否不为空然后插入,如果两个字段都为空什么也不做。

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

这个和另一个是一样的

关于database - 如何根据数据的可用性检查和输入来自 "2 Textboxes"的数据以从 VB .Net Access ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37874027/

相关文章:

mysql - 异地数据库服务器

ajax - WordPress 前端 AJAX 表单提交给出 500 内部服务器错误

vb.net - 检查 Internet 连接 vb.net

mysql - 什么是 MS Access LAST() 的 MySQL 等效项?

ms-access - 使用波形符分隔符将 MSAccess 表导出为 Unicode

c# - 如何在内部网中连接到 Access 上的数据库

sql - 6NF 中参照完整性的复合键与代理键

android - 将Firebase数据库转换为Cloud Firestore

vb.net - 如何使用 vb.net 创建 JSON 数组

.net - 替代 C# 中 VB.NET 的类型转换函数 (CBool​​)?