VB连接SQL数据库,出现:关键字'select'附近有语法错误.对象'Refresh'的方法'IAodc'失败,求教!!

我想编一个程序连接SQL数据库。首先实现按照combo选择表里某属性,再找符合其属性值的记录(在text中输入),在datagrid输出该记录。用了adodc、datagrid、text,还有一个查询按钮,以下是查询按钮代码:
Private Sub Command2_Click()

If Trim(Text1.Text) = "" Then

MsgBox "请输入检索词"

Exit Sub

End If

If Combo1.Text = "学号" Then

Adodc1.RecordSource = "select * from ssssss WHERE Number= '" +
Text1.Text + "'"

Adodc1.Refresh

Set DataGrid1.DataSource = Adodc1

DataGrid1.Refresh

End If

If Combo1.Text = "姓名" Then

Adodc1.RecordSource = "select * from ssssss WHERE name= '" +
Text1.Text + "'"

Adodc1.Refresh

Set DataGrid1.DataSource = Adodc1

DataGrid1.Refresh

End If

End Sub
(以下为combo的设置:)

Private Sub Form_Load()

Combo1.AddItem "学号"

Combo1.AddItem "姓名"

Combo1.Text = "年龄"

End Sub

执行,combo选择“学号”,在text框里写'1',按查询按钮,出现在关键字'select'附近有语法错误。然后弹出实时错误'-2147217900 (80040e14)': 对象'Refresh'的方法'IAodc'失败。请问是错在哪里?SQL语句的错误吗?但是在查询分析器里面可以查到记录。已经确定SQL里面已经建好了ssssss这个表。Adodc已经设置好连接串,记录源命令类型是2-adCmdTable,表是ssssss。

第1个回答  2013-02-27
select * from ssssss WHERE Number='1'

问一下,Number是关键字不,可以使用吗?
另外,把 Adodc1.RecordSource 输出一下,把输出的SQL语句,放到数据库中执行一下,看一下有没有问题追问

select * from ssssss WHERE Number='1'这条用SQL查询分析器可以实用。改了Number为stuno之后还是不行,应该不是关键字的问题。

第2个回答  2013-02-27
把+换成&试试追问

还是不行。。一样的报错

追答

Adodc1.Refresh前面加一句:
Adodc1.CommandType = adCmdText

追问

太感谢了!这个问题解决了!我想知道其中的原因是什么??我之前在Adodc已经设置好连接串,记录源命令类型是2-adCmdTable,那么现在新加的语句不会与之矛盾吗?如果在记录源命令那里直接设置adCmdText的话,又会说没有记录源。这到底是为什么呢?可以不吝赐教吗?谢谢!

追答

如果在记录源命令那里直接设置adCmdText的话,又会说没有记录源。
------在下面那个框里输入一个SQL语句就不会报错没有记录源了。
采纳吧

追问

如果在记录源命令那里直接设置adCmdText的话,那下面的SQL语句应该写什么呢?我是新手,还想问问记录源命令类型的adCmdTable和adCmdText有什么分别。我一定会采纳的。

追答

select * from ssssss
前者指定一个表
后者指定一个字符串
adCmd是ADO命令的缩写
剩下的就是两个单词了,再不认识别编程了。

本回答被提问者采纳
相似回答