当前位置:编程学习 > VB >>

提示: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()
    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
--------------------编程问答-------------------- 按我们这的行规,你这类问题是这类技术问题应该不算复杂,是这类技术论坛最常见的问题,一般不需要付费用.当然,如果像有些网友随便挂个问题出来,都是铁公鸡一样的只挂20分,30分,那就太那个了.
另外,从后面的回复看,你这个问题似乎没在分分钟内得到解决,如果用了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 & "')"
 

这个括号很诡异,需要吗?需要吗?真的需要吗? --------------------编程问答--------------------
引用 14 楼 AisaC 的回复:
"select * from  qy where( 所属县区 ='" & Combo5.Text & "' and 所属行业 = '" & Combo6.Text & "')"
 

这个括号很诡异,需要吗?需要吗?真的需要吗?


很明显, 这个括号是用来给写代码的人自己看的. 免得自己搞错. --------------------编程问答--------------------
引用 15 楼 WallesCai 的回复:
引用 14 楼 AisaC 的回复:"select * from  qy where( 所属县区 ='" & Combo5.Text & "' and 所属行业 = '" & Combo6.Text & "')"
 

这个括号很诡异,需要吗?需要吗?真的需要吗?

很明显, 这个括号是用来给写代码……


呵呵,他的两个查询条件是一起括的,而且没有第三个,这样写是给自己添乱啊。。。 --------------------编程问答--------------------
引用 16 楼 AisaC 的回复:
呵呵,他的两个查询条件是一起括的,而且没有第三个,这样写是给自己添乱啊。。。


反正这括号会被编译器搞定的, 所以不怕啰嗦就写上了, 我猜想写代码的人心态是这样的, 属于小心翼翼那种. --------------------编程问答-------------------- 这是到了课程设计的时间了吗??
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,