Vb.net 无法通过比较数值从vb中的access db中进行选择
我无法在vb中从access数据库中检索。以下是我指出问题的代码:Vb.net 无法通过比较数值从vb中的access db中进行选择,vb.net,ms-access,Vb.net,Ms Access,我无法在vb中从access数据库中检索。以下是我指出问题的代码: `cmd.CommandText = "SELECT distinct(brought_date) from brought_coffee where crop_year =? order by brought_date" cmd.Parameters.Add("@ccy", OleDb.OleDbType.Integer).Value = Convert.ToInt32(cyrNote.SelectedIt
`cmd.CommandText = "SELECT distinct(brought_date) from brought_coffee where crop_year =? order by brought_date"
cmd.Parameters.Add("@ccy", OleDb.OleDbType.Integer).Value = Convert.ToInt32(cyrNote.SelectedItem.Trim)
myData = cmd.ExecuteReader
'MessageBox.Show(cyrNote.SelectedItem.Trim)
While myData.Read()
dte = myData(0)
dtComb.Items.Add(dte)
End While
MessageBox.Show("dt1" & dte)`
我在这里遇到的问题似乎是,两者之间的比较是
crop\u year=?
其中?
是Convert.ToInt32(cyrNote.SelectedItem.Trim)
的占位符,这是我从组合框cyrNote
中获得的值,并尝试使用Convert.ToInt32()
以便与数据库中定义为整数的数据库值作物年
进行比较。但这里的问题是select返回null。我试图将占位符?
替换为一个已知值,如“2011”,它返回了一个值。这对我来说意味着,我的比较crop\u year=Convert.ToInt32(cyrNote.SelectedItem.Trim)
是负数,但我希望是正数。我试着在谷歌上搜索如何转换成整数,这是我能得到的最好结果。有人能告诉我如何才能很好地完成转换,或者换句话说,我的代码有什么问题吗 尝试将SQL语句中的?
替换为@ccy
。您需要使用命名参数或序数参数,但您的SQL文本需要序数,并且您的变量注入被命名为…请尝试在SQL语句中用@ccy
替换?
。您需要使用命名参数或序数参数,但SQL文本需要序数,并且变量注入名为…由于access上没有命名参数,请在发送时尝试删除该名称
cmd.Parameters.Add("", OleDb.OleDbType.Integer).Value = Convert.ToInt32(cyrNote.SelectedItem.Trim)
这应该是诀窍
此外,如果可以,请将代码更改为使用:
cmd.Parameters.AddWithValue("", Convert.ToInt32(cyrNote.SelectedItem.Trim));
使用access时无需指定任何内容。由于access上没有命名参数,请在发送时尝试删除该名称
cmd.Parameters.Add("", OleDb.OleDbType.Integer).Value = Convert.ToInt32(cyrNote.SelectedItem.Trim)
这应该是诀窍
此外,如果可以,请将代码更改为使用:
cmd.Parameters.AddWithValue("", Convert.ToInt32(cyrNote.SelectedItem.Trim));
使用access时不需要指定任何内容。我认为问题与命名参数无关。相反,SelectedItem是对象类型。你应该使用其中一种
cyrNote.SelectedText
或
无论哪种方法有效(取决于组合框实现)我认为问题与命名参数无关。相反,SelectedItem是对象类型。你应该使用其中一种
cyrNote.SelectedText
或
无论哪种方法有效(取决于您的组合框实现)否,是否使用?用于参数占位符。access上没有命名参数。否,是否使用access?用于参数占位符。access上没有命名参数。未注释时,MessageBox.Show显示什么?如果显示的是2011年,那么一切都应该正常工作。messagebox显示日期变量
00:00:00
的默认值,但它应该返回类似09/05/2012
的值。这可能意味着没有数据被读取,我是说:MessageBox.Show(cyrNote.SelectedItem.Trim)是的,当然comboboxcyrNote
已经有了类似2011的值,2010,因此messagebox显示一个值,但当我尝试从数据库中选择值时,问题出现了,其中数据库中的年份与组合中所选的年份相同,我的上一次下注将是…=Convert.ToInt32(cyrNote.Text.Trim)。我也更新了我的答案。未注释时,你的MessageBox.Show显示什么?如果显示的是2011年,那么一切都应该正常工作。messagebox显示日期变量00:00:00
的默认值,但它应该返回类似09/05/2012
的值。这可能意味着没有数据被读取,我是说:MessageBox.Show(cyrNote.SelectedItem.Trim)是的,当然comboboxcyrNote
已经有了类似2011的值,2010,因此messagebox显示一个值,但当我尝试从数据库中选择值时,问题出现了,其中数据库中的年份与组合中所选的年份相同,我的上一次下注将是…=Convert.ToInt32(cyrNote.Text.Trim)。我也更新了我的答案。尝试了这个但仍然没有进展尝试了这个但仍然没有进展