Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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
Vb.net 无法通过比较数值从vb中的access db中进行选择_Vb.net_Ms Access - Fatal编程技术网

Vb.net 无法通过比较数值从vb中的access db中进行选择

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

我无法在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.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)是的,当然combobox
cyrNote
已经有了类似2011的值,2010,因此messagebox显示一个值,但当我尝试从数据库中选择值时,问题出现了,其中数据库中的年份与组合中所选的年份相同,我的上一次下注将是…=Convert.ToInt32(cyrNote.Text.Trim)。我也更新了我的答案。未注释时,你的MessageBox.Show显示什么?如果显示的是2011年,那么一切都应该正常工作。messagebox显示日期变量
00:00:00
的默认值,但它应该返回类似
09/05/2012
的值。这可能意味着没有数据被读取,我是说:MessageBox.Show(cyrNote.SelectedItem.Trim)是的,当然combobox
cyrNote
已经有了类似2011的值,2010,因此messagebox显示一个值,但当我尝试从数据库中选择值时,问题出现了,其中数据库中的年份与组合中所选的年份相同,我的上一次下注将是…=Convert.ToInt32(cyrNote.Text.Trim)。我也更新了我的答案。尝试了这个但仍然没有进展尝试了这个但仍然没有进展