我想编一个程序连接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。
select * from ssssss WHERE Number='1'这条用SQL查询分析器可以实用。改了Number为stuno之后还是不行,应该不是关键字的问题。
还是不行。。一样的报错
追答Adodc1.Refresh前面加一句:
Adodc1.CommandType = adCmdText
太感谢了!这个问题解决了!我想知道其中的原因是什么??我之前在Adodc已经设置好连接串,记录源命令类型是2-adCmdTable,那么现在新加的语句不会与之矛盾吗?如果在记录源命令那里直接设置adCmdText的话,又会说没有记录源。这到底是为什么呢?可以不吝赐教吗?谢谢!
追答如果在记录源命令那里直接设置adCmdText的话,又会说没有记录源。
------在下面那个框里输入一个SQL语句就不会报错没有记录源了。
采纳吧
如果在记录源命令那里直接设置adCmdText的话,那下面的SQL语句应该写什么呢?我是新手,还想问问记录源命令类型的adCmdTable和adCmdText有什么分别。我一定会采纳的。
追答select * from ssssss
前者指定一个表
后者指定一个字符串
adCmd是ADO命令的缩写
剩下的就是两个单词了,再不认识别编程了。