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

vb 查询问题 !!!!!

If Check1.Value = 1 Then
   sql = sql & "序号=" & Trim(Text1) & " and "
End If
If Check2.Value = 1 Then
   sql = sql & "姓名=" & Trim(Text2) & " and "
End If
If Check3.Value = 1 Then
   sql = sql & "年龄=" & Trim(Text3) & " and "
End If
If Check4.Value = 1 Then
   sql = sql & "出生日期=#" & DTPicker1.Value & "#"
End If

If sql = "" Then
   Adodc1.RecordSource = "select * from 资料表"
   Set DataGrid1.DataSource = Adodc1
   Adodc1.Refresh
Else
   Adodc1.RecordSource = "select * from 资料表" & " where " & sql
   Set DataGrid1.DataSource = Adodc1
   Adodc1.Refresh
End If

报出  语法错误(操作符丢失)在查询表达式 '序号=10 and' 中
或者是:标准表达式中数据类型不匹配 --------------------编程问答-------------------- If   Check1.Value   =   1   Then 
      sql   =   sql   &   "序号= "   &   Trim(Text1) 
End   If 
If   Check2.Value   =   1   Then 
      sql   =   sql   & and   "姓名= "   &   Trim(Text2)   
End   If 
If   Check3.Value   =   1   Then 
      sql   =   sql   & and  "年龄= "   &   Trim(Text3)   & 
End   If 
If   Check4.Value   =   1   Then 
      sql   =   sql   & and  "出生日期=# "   &   DTPicker1.Value   &   "# " 
End   If 

你上面的sql构造出来的字符串最后面会多个and出来,当然会报错 --------------------编程问答-------------------- 不好意思,没写对
If  Check1.Value=1 Then   
   sql=sql & " 序号=" & Trim(Text1)   
End if
If Check2.Value=1 Then   
    sql=sql & "  and  姓名=" & Trim(Text2)       
End If   
If Check3.Value=1 Then   
    sql=sql & " and 年龄=" & Trim(Text3)  
End If   
If Check4.Value=1 Then   
   sql=sql & " and 出生日期=#" & DTPicker1.Value & "# "   
End If    --------------------编程问答-------------------- 仔细看看你的4个复选框,按照你写的,Check4是必须选择的,否则,你所构造的SQL语句在最后就会多个and,当然执行的时候会报错了 --------------------编程问答-------------------- 除了我上面说的,你的语句还没有单引号,我认为你应该这样写:
sql=""
If Check1.Value = 1 Then  sql = "序号= '" & vba.Trim(Text1) & "' " 

if check2.value=1 then
   if vba.trim(sql)="" then
       sql= "姓名= '" & vba.Trim(Text2) & "'" 
   else
       sql = sql & " and 姓名= '" & vba.Trim(Text2) & "'" 
   end if
end if

if check3.value=1 then
   if vba.trim(sql)="" then
      sql= "年龄= '" & vba.Trim(Text3) & "'"
   else
      sql= sql& " and  年龄= '" & vba.Trim(Text3) & "'"
   end if
end if

if check4.value=1 then
   if vba.trim(sql)="" then
      sql=" 出生日期='#" & vba.trim(DTPicker1.Value) & "#' " 
   else
      sql= sql & " and 出生日期='#" & vba.trim(DTPicker1.Value) & "#' " 
   end if
end if

后面的都一样了


--------------------编程问答-------------------- 问题解决!!!
谢谢各位,谢谢sysnl --------------------编程问答-------------------- 问题解决!!! 
谢谢各位,谢谢sysnl --------------------编程问答-------------------- If Check4.Value = 1 Then
   If sql1 = "" Then
      sql1 = sql1 & "月份 between '" & Trim(Combo2.Text) & "' and '" & Trim(Combo3.Text) & "'"
   Else
      sql1 = sql1 & " and 月份 between '" & Trim(Combo2.Text) & "' and '" & Trim(Combo3.Text) & "'"
   End If
End If

为什么这个查询结果都是按数据匹配查询出的结果呢
比如说数据里面有 4 5 6 7月份的资料
要查找 5到7月份的资料时结果却是 只有5和7月分的资料
要是查询从3月到7月份的资料,也只有显示出7月份的结果而已 --------------------编程问答-------------------- 你的月份那个column是什么数据类型?
单引号表示 字符型,那么between怎么可能产生作用呢,需要数值类型才是啊

你检查数据库,然后把month的数据类型改成int
在查询中去掉点引号就好了 --------------------编程问答-------------------- ok
谢谢
补充:VB ,  基础类
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,