Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 类型和数据不匹配的Visual Basic错误异常_C#_Vb.net - Fatal编程技术网

C# 类型和数据不匹配的Visual Basic错误异常

C# 类型和数据不匹配的Visual Basic错误异常,c#,vb.net,C#,Vb.net,我试图将组合框填充到MS Access数据库中,并将值显示到文本框中组合框可以将ID读取到数据库中,但当我选择将数据显示到文本框中的ID时,我遇到此错误 “System.Data.dll中发生了类型为'System.Data.OleDb.OLEDBEException'的第一次意外异常。” 其他信息:条件表达式中的数据类型不匹配。“ 到目前为止,这是我的代码 Public Class List_of_patient Sub fillcombo() strsql = "se

我试图将组合框填充到MS Access数据库中,并将值显示到文本框中组合框可以将ID读取到数据库中,但当我选择将数据显示到文本框中的ID时,我遇到此错误

“System.Data.dll中发生了类型为'System.Data.OleDb.OLEDBEException'的第一次意外异常。”

其他信息:条件表达式中的数据类型不匹配。“

到目前为止,这是我的代码

Public Class List_of_patient
    Sub fillcombo()
        strsql = "select * from ptInfo"
        Dim acscmd As New OleDb.OleDbCommand
        acscmd.CommandText = strsql
        acscmd.Connection = acsconn
        acsdr = acscmd.ExecuteReader
        While (acsdr.Read())
            ComboBox1.Items.Add(acsdr("PaintNo"))
        End While

        acscmd.Dispose()
        acsdr.Close()

    End Sub

    Private Sub List_of_patient_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Module1.connect()
        Me.fillcombo()

    End Sub

    Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
        strsql = "select * from ptInfo where PaintNo = '" & ComboBox1.Text & "'"
        Dim acscmd As New OleDb.OleDbCommand
        acscmd.CommandText = strsql
        acscmd.Connection = acsconn
        acsdr = acscmd.ExecuteReader

        If (acsdr.Read() = True) Then
            TextBox4.Text = (acsdr("diag"))
            TextBox3.Text = (acsdr("Pname"))

        End If
        acscmd.Dispose()
        acsdr.Close()

    End Sub



End Class
这是我的模块

Imports System.Data.OleDb
Module Module1
    Public acsconn As New OleDb.OleDbConnection
    Public acsdr As OleDbDataReader
    Public strsql As String

    Sub connect()
        acsconn.ConnectionString = "Provider=Microsoft.ace.oledb.12.0; data source=|datadirectory|patient.accdb"
        acsconn.Open()
    End Sub

End Module

请帮帮我。提前感谢:)

字段的类型是什么?这是一个主要的自动编号长int您需要转换数据或将其从int转换为字符串,意思是
TextBox4.Text=(acsdr(“diag”)
如果字段包含整数值,请尝试类似的操作
TextBox4.Text=(string)acsdr(“diag”)
TextBox4.Text=acsdr(“diag”).ToString()对于整数类型的字段,您不能用一个整数填充一个文本框,而不将其转换为字符串或将其转换为字符串。也尝试实现参数化查询的使用。int,但您可以使用
“。。。其中PaintNo='someValue'
。单引号表示“将值解释为字符串”。因此,您正在将长整型与文本进行比较,这很可能是
数据类型不匹配的原因。我已经尝试过了,但仍然出现相同的错误,先生:(
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
                strsql = "select * from ptInfo where PaintNo = " & CLng(ComboBox1.Text) 
                Dim acscmd As New OleDb.OleDbCommand
                acscmd.CommandText = strsql
                acscmd.Connection = acsconn
                acsdr = acscmd.ExecuteReader

                If (acsdr.Read() = True) Then
                    TextBox4.Text = (acsdr("diag"))
                    TextBox3.Text = (acsdr("Pname"))

                End If
                acscmd.Dispose()
                acsdr.Close()

            End Sub