以文本方式查看主题 - 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编辑过]
|