VB使用变量通过adodc数据连接输出到datagrid控件

代码如下:
Private Sub Command1_Click()
Adodc1.ConnectionString = DataEnvironment1.Connection1
Adodc1.RecordSource = "select * from " & Mynub & " where " & Combo1.Text & " = " & Text1.Text & ""
Set DataGrid1.DataSource = Adodc1
Adodc3.Refresh
End Sub
窗体有一个adodc控件,一个combo控件,一个command控件,一个textbox控件,要求从combo控件的下拉菜单里选择一项(字段名),在textbox控件里输入查询的内容,点击comman按钮,通过上述代码将查询结果输出到datagrid列表中,在这里文件名Mynub也是变量。
运行之后,在datagrid表中只有字段名,没有内容。首先数据库有数据,链接也没有问题,是精确查询。查询应该有结果,但现在datagrid表中只有字段名,没有内容。请大侠们指点。问题好像出在数据表明上Mynub,用实际表明代替,就通过了,那么表明用变量怎么代替呢?

问题出在,语句
Adodc1.RecordSource = "select * from " & Mynub & " where " & Combo1.Text & " = " & Text1.Text & ""

里。
关键是 select 语句的格式;根据字段类型的不同,格式也不同。
一,查询字段为数值类型(比如工资,考试成绩等)
1,要查询工资等于4000元的记录
"Select * From 数据表名 Wnere 工资 = 4000"
如果4000这个数据来自文本框Text1,那么:
"Select * From 数据表名 Wnere 工资 = " & Text1.text
2,要查询语文成绩大于等于90的记录

如果90这个数据来自文本框Text1,那么:
"Select * From 数据表名 Wnere 语文 >= " & Text1.text

注意,如果字段名来自控件,例如组合框,那么:
"Select * From 数据表名 Wnere " & Combo1.text & " >= " & Text1.text

二,查询字段为文本类型(比如姓名,职称等)
1,要查询姓名叫“王老五”的记录
"Select * From 数据表名 Wnere 姓名 = '王老五'"

注意到,要查询的这个文本值得两边有一对单引号,这是与要查询数值量的格式区别。
如果“王老五”这个数据来自文本框Text1,那么:
"Select * From 数据表名 Wnere 姓名 = ' " & Text1.text & " ' "
仔细体会与观察,这里有两个不可缺少的单引号,而且注意位置不能弄错!!!

综上所说,你的语句
Adodc1.RecordSource = "select * from " & Mynub & " where " & Combo1.Text & " = " & Text1.Text & ""
改成
Adodc1.RecordSource = "select * from " & Mynub & " where " & Combo1.Text & " = '" & Text1.Text & "'"
试试就知道了。追问

谢谢,我试试。不过,我把代替文件数据表名的变量Mynub换成显存的文件名,就通过了,所以是不是文件名不能用变量代替?

追答

在这个Select语句中:
From 后面跟的是 数据表的名称,而不是文件名称?

简单的Select语句格式:
Select * From 数据表名 Where 。。。。。。

你使用什么作为数据库呢?

追问

是的,数据表名也是的变量。

Mynub是数据表名,是个变量。

追答

数据表名采用 变量 当然可以没有问题,你这样用是正确的。
关键在于我说的部分!!!

追问

好的,谢谢,我在外面,不能测试,不过你说的有道理,不好意思,我就这么多分给你了,再次感谢!

温馨提示:答案为网友推荐,仅供参考
相似回答