以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]查询表的查询问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=56888)

--  作者:wangnovel
--  发布时间:2014/9/14 20:03:00
--  [求助]查询表的查询问题
请教专家:有表A(a,b,c,d),表B(a,d,e,f,g),我建立了一个查询表C(a,b,{B}.d,e,f,g),该表是由A,B查询而来,关联列是A.a和B.a。
有这么个语句:DataTables("C").LoadFilter=“d=\'张三\'”,系统老是提示“d不明确”。后面我改成:DataTables("C").LoadFilter=“{C}.d=\'张三\'”,系统又提示“无法解释标记{”
[此贴子已经被作者于2014-9-14 20:03:51编辑过]

--  作者:有点甜
--  发布时间:2014/9/14 20:05:00
--  
DataTables("C").LoadFilter = "{表B}.d = \'张三\'"
--  作者:wangnovel
--  发布时间:2014/9/14 20:13:00
--  
是我刚才写错了,我是用的 DataTables("C").LoadFilter = "{表B}.d = \'张三\'"查询的,提示“无法解释{”
--  作者:有点甜
--  发布时间:2014/9/14 20:24:00
--  

 呃,你的是sqlserver数据库?去掉大括号

 

 DataTables("C").LoadFilter = "表B.d = \'张三\'"


--  作者:wangnovel
--  发布时间:2014/9/14 20:29:00
--  
是sqlserver数据库,去掉大括号,提示:未找到列B.d
--  作者:有点甜
--  发布时间:2014/9/14 20:31:00
--  

 贴出你查询表的sql语句;按理是不会出错的。

[此贴子已经被作者于2014-9-14 20:30:53编辑过]

--  作者:wangnovel
--  发布时间:2014/9/14 20:38:00
--  
Dim ckssj As WinForm.DateTimePicker= e.Form.Controls("开始时间")
Dim cjssj As WinForm.DateTimePicker= e.Form.Controls("结束时间")
Dim Cst As WinForm.ComboBox= e.Form.Controls("所属食堂")
Dim Cpyjm As winform.combobox=e.Form.controls("拼音简码")
Dim Cwzdl As WinForm.ComboBox=e.Form.controls("大类")
\'Dim Crkdh As WinForm.ComboBox=e.Form.controls("入库单号")
Dim Ccklx As WinForm.ComboBox=e.Form.controls("出库类型")
Dim Cwzly As WinForm.ComboBox=e.Form.controls("物资来源")

Dim StrFind As String

StrFind = ""

If trim(Cwzdl.Text) <> ""
    StrFind = trim(StrFind) +  "and ssdl  =  \'"& Cwzdl.Text &"\' "
End If

If trim(Cpyjm.Text) <> ""
    StrFind = trim(StrFind) +  "and pyjm  =  \'"& Cpyjm.Text &"\' "
End If

If trim(Cst.Text) <> ""
    StrFind = trim(StrFind) +  "and stm  =  \'"& Cst.Text &"\' "
End If

If trim(Ckssj.text)<>""
    StrFind = trim(StrFind) + "and rksj>= \'"& Ckssj.text &"\'"
End If

If trim(Cjssj.text)<>""
    StrFind = trim(StrFind) + "and rksj<= \'"& Cjssj.text &"\'"
End If

If trim(Ccklx.Text) <> ""
    StrFind = trim(StrFind) +  "and cklx  =  \'"& Ccklx.Text &"\' "
End If

If trim(Cwzly.Text) <> ""
    StrFind = trim(StrFind) +  "and qh_rkdmx.ly =  \'"& Cwzly.Text &"\' "
End If

If trim(StrFind)<>""
    StrFind=trim(StrFind).SubString(3)
End If

DataTables("qh_rkdmxcx").LoadFilter=StrFind  %qh_rkdmxcx是查询表,由表qh_rkdmx和qh_rkd查询而来。
DataTables("qh_rkdmxcx").Load()
Tables("qh_rkdmxcx").Filter=StrFind
Tables("qh_rkdmxcx").Sort = "rksj,stm"

--  作者:有点甜
--  发布时间:2014/9/14 20:41:00
--  

 1、我要你贴出查询表的sql语句,也就是qh_rkdmxcx是怎么来的

 

 2、你贴出 strFind 最后得到的值是什么


--  作者:wangnovel
--  发布时间:2014/9/14 20:50:00
--  
如果去掉   StrFind = trim(StrFind) +  "and qh_rkdmx.ly =  \'"& Cwzly.Text &"\' " 运行是正常的。

最后的 StrFind=trim(StrFind).SubString(3)是为了去掉可能地多余字符

Select  {qh_rkdmx}.ID,rkdhxh,wzbm,wzmc,pyjm,ssdl,gg,dw,sl,dj,jsje,xzje,{qh_rkdmx}.rklx,cklx,{qh_rkdmx}.ly,{qh_rkdmx}.fkfs,ftts,{qh_rkdmx}.bz,ckmdd,{qh_rkd}.rkdh,stm,pzh,rksj,zdsj,zdr,{qh_rkdmx}.rkdh From {qh_rkdmx} Inner JOIN {qh_rkd} ON {qh_rkd}.[rkdh] = {qh_rkdmx}.[rkdh] Where qh_rkdmx.rkdh=qh_rkd.rkdh
[此贴子已经被作者于2014-9-14 20:50:44编辑过]

--  作者:有点甜
--  发布时间:2014/9/14 20:59:00
--  

 1、查询表改成

 

Select  {qh_rkdmx}.ID,rkdhxh,wzbm,wzmc,pyjm,ssdl,gg,dw,sl,dj,jsje,xzje,{qh_rkdmx}.rklx,cklx,{qh_rkdmx}.ly,{qh_rkdmx}.fkfs,ftts,{qh_rkdmx}.bz,ckmdd,{qh_rkd}.rkdh,stm,pzh,rksj,zdsj,zdr,{qh_rkdmx}.rkdh From {qh_rkdmx} Inner JOIN {qh_rkd} ON {qh_rkd}.[rkdh] = {qh_rkdmx}.[rkdh]

 

 2、这段改一下

 

DataTables("qh_rkdmxcx").LoadFilter=StrFind  %qh_rkdmxcx是查询表,由表qh_rkdmx和qh_rkd查询而来。
DataTables("qh_rkdmxcx").Load()
Tables("qh_rkdmxcx").Filter=StrFind
Tables("qh_rkdmxcx").Sort = "rksj,stm"

 

-------------

 

 改成

 

DataTables("qh_rkdmxcx").LoadFilter="{qh_rkdmx}.ly = \'张三\'"
DataTables("qh_rkdmxcx").Load()
Tables("qh_rkdmxcx").Filter=StrFind
Tables("qh_rkdmxcx").Sort = "rksj,stm"
[此贴子已经被作者于2014-9-14 20:59:05编辑过]