vb 查询问题 !!!!!
If Check1.Value = 1 Thensql = 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 , 基础类