以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]fill 生成的SQLtable为何显示为锁定,isQuery已设置为false (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=47756) |
-- 作者:loongtai -- 发布时间:2014/3/17 9:44:00 -- [求助]fill 生成的SQLtable为何显示为锁定,isQuery已设置为false 如题,窗口中的SQLtable表,属性如下: |
-- 作者:狐狸爸爸 -- 发布时间:2014/3/17 9:55:00 -- 因为一开始没有设置select语句,所以打开之后,这是一个临时表,默认就是不能编辑的,你在fill,也不能改变不能编辑的状态。
.Fill() .AllowEdit = True |
-- 作者:loongtai -- 发布时间:2014/3/17 10:10:00 -- 谢谢狐爸!还有一个问题: 通过刚才这个fill语句生成的sqltable,可否通过select语句对其进行操作? Dim cmdText As String="select 父料编号,子料编号,物料名称 from {BOM表} INNER JOIN {物料编号表} ON {BOM表}.子料编号 = {物料编号表}.物料编号 where " & 筛选条件 & " union all " & _ "Select 父料编号,子料编号,物料名称 from {" & tables(窗口名_table1).DataTable.name & "}" 在运行过程中提示没有此SQLtable
|
-- 作者:Bin -- 发布时间:2014/3/17 10:12:00 -- SQL语句是对SQL表操作,也就是数据库里实质存在的表. 不可以这么做.
|
-- 作者:Bin -- 发布时间:2014/3/17 10:13:00 -- 你可以把该数据黏贴过来当作一个表即可. "Select 父料编号,子料编号,物料名称 from (你FILL的SQL语句)"
|
-- 作者:loongtai -- 发布时间:2014/3/17 10:25:00 -- BIN 能否帮忙写下这个select 语句: SQLtable表生成信息如下:
with tables(“窗口_table1”) .fill("select [_Identify],物料编号 as 子料编号,物料名称,库存单位 as 单位 from {物料编号表} where 物料编号 in (" & 一级子料 & ")",pubssys2,False) If .DataTable.datacols.contains("用量")=False Then .DataTable.DataCols.add("父料编号",Gettype(String),Vars("父料")) .DataTable.DataCols.add("用量",Gettype(Double)) .DataTable.DataCols.add("损耗率",Gettype(Double)) End If end with 现在想通过cmd.commandtext语句把BOM表与SQLtable表中的数据合并一下,其中提取的列有“父料编号“,”子料编号“,”物料名称 ” Dim cmdText As String="select 父料编号,子料编号,物料名称 from {BOM表} INNER JOIN {物料编号表} ON {BOM表}.子料编号 = {物料编号表}.物料编号 where " & 筛选条件 & " union all " & _ "Select 父料编号,子料编号,物料名称 from {" & tables(窗口名_table1).DataTable.name & "}" |
-- 作者:Bin -- 发布时间:2014/3/17 10:27:00 -- 我不知道你想要做什么,没办法告诉你.如果单纯是想查询这个窗口里结果的表. 5楼我已经告诉你了. 把SQL语句填充到括号里即可.
|
-- 作者:Bin -- 发布时间:2014/3/17 10:27:00 -- 自己动手试试就明白了 |
-- 作者:loongtai -- 发布时间:2014/3/17 10:34:00 -- 我试了下: Dim cmdText As String="select 父料编号,子料编号,物料名称 from {BOM表} INNER JOIN {物料编号表} ON {BOM表}.子料编号 = {物料编号表}.物料编号 where " & 筛选条件 & " union all " & _ "Select 子料编号,物料名称 from (Select [_Identify],物料编号 As 子料编号,物料名称,库存单位 As 单位 from {物料编号表} where 物料编号 In (" & 一级子料 & ")",pubssys2,False)" 但有两个问题: 1.上面这个语句报错 2.“父料编号”列是后加的,直接用fill语句提取的信息里不含“父料编号”列,不知如何把此列也提取出来? [此贴子已经被作者于2014-3-17 10:34:52编辑过]
|
-- 作者:狐狸爸爸 -- 发布时间:2014/3/17 10:44:00 -- 纠正一下
1、Select语句只能查询后台数据,所以下面的语句一般都会出错:
Select 父料编号,子料编号,物料名称 from {" & tables(窗口名_table1).DataTable.name & "}"
2、如果数据不是来自单一的表,那么不能作为SQLQuery,使用Fill的时候,必须将第三个参数设置为True
3、Union All组合两个查询结果时,前后两个查询返回的表结构一直,显然你一个查询是三列(父料编号,子料编号,物料名称),一个是两列(子料编号,物料名称)
4、还有: & “Select 子料编号,物料名称 from (Select [_Identify],物料编号 As 子料编号,物料名称,库存单位 As 单位 from {物料编号表} where 物料编号 In (" & 一级子料 & ")",pubssys2,False)"
后面的pubssys2,False是什么意思,你在写Select语句,不是在Fill.
5、建议你先不要写代码,先直接在SQL执行窗口调试好SQL语句,得到正确的SQL语句再编写代码合成,这样有参照。
6、你可以用MessageBox.show显示一下自己合并生成的Select语句,看看合成是什么东东,是否正确:
在MessaageBox显示的对话框中,按"Ctrl+C"键,可以复制其显示的内容:
这在动态合成一些复杂的SQL语句或表达式时的时候很实用,例如我们可以从MessageBox中复制合成好的SQL语句,粘贴到SQL执行窗口进行执行调试,找出此SQL语句的问题后,再回头调整代码。 [此贴子已经被作者于2014-3-17 10:47:44编辑过]
|