C# 类型和数据不匹配的Visual Basic错误异常
我试图将组合框填充到MS Access数据库中,并将值显示到文本框中组合框可以将ID读取到数据库中,但当我选择将数据显示到文本框中的ID时,我遇到此错误 “System.Data.dll中发生了类型为'System.Data.OleDb.OLEDBEException'的第一次意外异常。” 其他信息:条件表达式中的数据类型不匹配。“ 到目前为止,这是我的代码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
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