提示:FROM子句语法错误。但是,能够正确执行查询。请您帮助一下。

yuuullli 南昌市安全生产监督管理局 科长  2013-02-11 12:08:21
我制作了一个程序,其中涉及查询功能的语句始终通不过。现把问题叙述如下;

一、窗体内容如下,就是通过两个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

...全文
542 18 点赞 打赏 收藏 举报
写回复
18 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
咸清 2013-03-13
这是到了课程设计的时间了吗??
  • 打赏
  • 举报
回复
引用 16 楼 AisaC 的回复:
呵呵,他的两个查询条件是一起括的,而且没有第三个,这样写是给自己添乱啊。。。
反正这括号会被编译器搞定的, 所以不怕啰嗦就写上了, 我猜想写代码的人心态是这样的, 属于小心翼翼那种.
  • 打赏
  • 举报
回复
引用 14 楼 AisaC 的回复:
"select * from qy where( 所属县区 ='" & Combo5.Text & "' and 所属行业 = '" & Combo6.Text & "')" 这个括号很诡异,需要吗?需要吗?真的需要吗?
很明显, 这个括号是用来给写代码的人自己看的. 免得自己搞错.
  • 打赏
  • 举报
回复
神马都能聊 2013-03-11
引用 15 楼 WallesCai 的回复:
引用 14 楼 AisaC 的回复:"select * from qy where( 所属县区 ='" & Combo5.Text & "' and 所属行业 = '" & Combo6.Text & "')" 这个括号很诡异,需要吗?需要吗?真的需要吗? 很明显, 这个括号是用来给写代码……
呵呵,他的两个查询条件是一起括的,而且没有第三个,这样写是给自己添乱啊。。。
  • 打赏
  • 举报
回复
神马都能聊 2013-02-22
"select * from qy where( 所属县区 ='" & Combo5.Text & "' and 所属行业 = '" & Combo6.Text & "')" 这个括号很诡异,需要吗?需要吗?真的需要吗?
  • 打赏
  • 举报
回复
cqq_chen 2013-02-21
debug.print sql语句 放到查询分析器执行.........
  • 打赏
  • 举报
回复
饮水需思源 2013-02-13
'这类多条件不固定的查询条件可以用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
  • 打赏
  • 举报
回复
bcrun 2013-02-12
后来有人指出来了,他忘了在Adodc2的属性对话框里设置RecordSource的属性了,Adodc2.CommandType为adCmdTable
  • 打赏
  • 举报
回复
一起学习了……
  • 打赏
  • 举报
回复
where( 所属县区 where ( 所属县区 是不是这个地方的空格?
  • 打赏
  • 举报
回复
bcrun 2013-02-11
大家不用再指望再从那些代码中找出错误来了.大家可能和我一样,一开始看楼主的帖子,看到"但是,运行之前会跳出“from子句语法错误”,无法消除"时觉得怪怪的,其实这是一个要点,他是想说,是还没运行那个Command7_Click,即还没点Command7按钮时就报那个错的,初学者说不清楚. 另外,我了解了下,他这是在内明日科技出的一本书"visual basic项目开发案例全程实录。书号:978-7-302-22661-1"中的一个图书馆管理系统找了一部分模块,另外再找了一些模块,修改了下,想做成一个自己工作中需要的系统1.相关的窗体里用了一些ADODB和Datagrid等控件的绑定,而现在是有时在某个窗体的启动或退出时,报这个“from子句语法错误”的错误,到底是什么原因,我一时也搞不清楚。有经验的可分析一下。
  • 打赏
  • 举报
回复
threenewbee 2013-02-11
检查下sql中的表名。
  • 打赏
  • 举报
回复
bcrun 2013-02-11
BTW,其实他这种用&来拼SQL语句的方式已经是很落后了的,一般做得多的人都会有个自己弄的换码函数,比如叫QuotedStr,把字符串值两头加上单引号,值中的单引号字符也要每一个替换为两个
  • 打赏
  • 举报
回复
一个select的语法错误没大不了的,检查下字符串。方法很简单,手工录入所有字符串看看还报错不? 比如先用这句: select * from qy 如果不出错,再逐一测试where子句
  • 打赏
  • 举报
回复
bcrun 2013-02-11
按我们这的行规,你这类问题是这类技术问题应该不算复杂,是这类技术论坛最常见的问题,一般不需要付费用.当然,如果像有些网友随便挂个问题出来,都是铁公鸡一样的只挂20分,30分,那就太那个了. 另外,从后面的回复看,你这个问题似乎没在分分钟内得到解决,如果用了4楼进一步明确给出的修改后代码还不行,那就可能说明你没给出准确的信息,这可能是编程方面自学能力还有欠缺,需要一个人较稳定的指点一段时间.不过这一点看你的另一个帖子,你自己应该已经意识到了,就不多说了.
  • 打赏
  • 举报
回复
dong_y888 2013-02-11
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  所属县区='" & 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
  • 打赏
  • 举报
回复
yuuullli 2013-02-11
试了,加了空格,仍然不行
  • 打赏
  • 举报
回复
yuuullli 2013-02-11
什么空格?
  • 打赏
  • 举报
回复
相关推荐
发帖
数据库(包含打印,安装,报表)
加入

1190

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
帖子事件
创建了帖子
2013-02-11 12:08
社区公告
暂无公告