提示:FROM子句语法错误。但是,能够正确执行查询。请您帮助一下。
我制作了一个程序,其中涉及查询功能的语句始终通不过。现把问题叙述如下;一、窗体内容如下,就是通过两个combo控件的条件实现查询。
二、数据录入部分是正常的:
三、相关的查询语句:
Private Sub Command7_Click()
On Error Resume Next
Adodc2.CommandType = adCmdText
If Check1.value = 1 And Check2.value = 1 Then '
Adodc2.RecordSource = "select * from qy where( 所属县区 ='" & Combo5.Text & "' and 所属行业 = '" & Combo6.Text & "')"
Adodc2.Refresh
Set DataGrid2.DataSource = Adodc2
ElseIf Check1.value = 1 And Check2.value = 0 Then
Adodc2.RecordSource = "select * from qy where 所属县区 ='" & Combo5.Text & "' "
Adodc2.Refresh
Set DataGrid2.DataSource = Adodc2
ElseIf Check1.value = 0 And Check2.value = 1 Then '
Adodc2.RecordSource = "select * from qy where 所属行业 = '" & Combo6.Text & "' "
Adodc2.Refresh
Set DataGrid2.DataSource = Adodc2
Else
MsgBox "查询条件不完整。"
Adodc2.Refresh
End If
End Sub
但是,运行之前会跳出“from子句语法错误”,无法消除。请您指教!拜托!!!
若还需详情,请联系我:QQ:563512584
查询语句 --------------------编程问答-------------------- where( 所属县区
where ( 所属县区
是不是这个地方的空格? --------------------编程问答-------------------- 什么空格? --------------------编程问答-------------------- 试了,加了空格,仍然不行 --------------------编程问答--------------------
Private Sub Command7_Click()--------------------编程问答-------------------- 按我们这的行规,你这类问题是这类技术问题应该不算复杂,是这类技术论坛最常见的问题,一般不需要付费用.当然,如果像有些网友随便挂个问题出来,都是铁公鸡一样的只挂20分,30分,那就太那个了.
On Error Resume Next
Adodc2.CommandType = adCmdText
If Check1.value = 1 And Check2.value = 1 Then '
Adodc2.RecordSource = "select * from qy where 所属县区='" & trim(Combo5.Text) & "' and 所属行业= '" & trim(Combo6.Text) & "'"
Adodc2.Refresh
Set DataGrid2.DataSource = Adodc2
ElseIf Check1.value = 1 And Check2.value = 0 Then
Adodc2.RecordSource = "select * from qy where 所属县区='" & trim(Combo5.Text) & "' "
Adodc2.Refresh
Set DataGrid2.DataSource = Adodc2
ElseIf Check1.value = 0 And Check2.value = 1 Then '
Adodc2.RecordSource = "select * from qy where 所属行业='" & trim(Combo6.Text) & "'"
Adodc2.Refresh
Set DataGrid2.DataSource = Adodc2
Else
MsgBox "查询条件不完整。"
Adodc2.Refresh
End If
End Sub
另外,从后面的回复看,你这个问题似乎没在分分钟内得到解决,如果用了4楼进一步明确给出的修改后代码还不行,那就可能说明你没给出准确的信息,这可能是编程方面自学能力还有欠缺,需要一个人较稳定的指点一段时间.不过这一点看你的另一个帖子,你自己应该已经意识到了,就不多说了.
--------------------编程问答-------------------- 一个select的语法错误没大不了的,检查下字符串。方法很简单,手工录入所有字符串看看还报错不?
比如先用这句: select * from qy 如果不出错,再逐一测试where子句 --------------------编程问答-------------------- BTW,其实他这种用&来拼SQL语句的方式已经是很落后了的,一般做得多的人都会有个自己弄的换码函数,比如叫QuotedStr,把字符串值两头加上单引号,值中的单引号字符也要每一个替换为两个 --------------------编程问答-------------------- 检查下sql中的表名。 --------------------编程问答-------------------- 大家不用再指望再从那些代码中找出错误来了.大家可能和我一样,一开始看楼主的帖子,看到"但是,运行之前会跳出“from子句语法错误”,无法消除"时觉得怪怪的,其实这是一个要点,他是想说,是还没运行那个Command7_Click,即还没点Command7按钮时就报那个错的,初学者说不清楚.
另外,我了解了下,他这是在内明日科技出的一本书"visual basic项目开发案例全程实录。书号:978-7-302-22661-1"中的一个图书馆管理系统找了一部分模块,另外再找了一些模块,修改了下,想做成一个自己工作中需要的系统1.相关的窗体里用了一些ADODB和Datagrid等控件的绑定,而现在是有时在某个窗体的启动或退出时,报这个“from子句语法错误”的错误,到底是什么原因,我一时也搞不清楚。有经验的可分析一下。
--------------------编程问答-------------------- 后来有人指出来了,他忘了在Adodc2的属性对话框里设置RecordSource的属性了,Adodc2.CommandType为adCmdTable
--------------------编程问答-------------------- 一起学习了…… --------------------编程问答--------------------
'这类多条件不固定的查询条件可以用WHERE 1=1 的SQL拼接的方法来实现
'代码中尽量不要使用on error resume next
Private Sub Command7_Click()
dim strTmp1 as string
dim strTmp2 as string
dim strSql as string
On Error goto ErrHandle
Adodc2.CommandType = adCmdText
if check1.value=1 then
strTmp1=" AND 所属县区='"& trim(combo5.text) &"'"
else
strTmp1=""
end if
if check2.value=1 then
strTmp2=" AND 所属行业='"& trim(combo6.text) &"'"
else
strTmp2=""
end if
strSql=" SELECT * FROM qy WHERE 1=1 " & strTmp1 & strTmp2
Adodc2.RecordSource = strSql
Adodc2.Refresh
Set DataGrid2.DataSource = Adodc2
exit sub
ErrHandle:
msgbox "操作失败,错误原因为:" & err.description,48,"提示"
exit sub
end sub
--------------------编程问答-------------------- debug.print sql语句
放到查询分析器执行......... --------------------编程问答-------------------- "select * from qy where( 所属县区 ='" & Combo5.Text & "' and 所属行业 = '" & Combo6.Text & "')"
这个括号很诡异,需要吗?需要吗?真的需要吗? --------------------编程问答--------------------
很明显, 这个括号是用来给写代码的人自己看的. 免得自己搞错. --------------------编程问答--------------------
呵呵,他的两个查询条件是一起括的,而且没有第三个,这样写是给自己添乱啊。。。 --------------------编程问答--------------------
反正这括号会被编译器搞定的, 所以不怕啰嗦就写上了, 我猜想写代码的人心态是这样的, 属于小心翼翼那种. --------------------编程问答-------------------- 这是到了课程设计的时间了吗??
补充:VB , 数据库(包含打印,安装,报表)