Foxtable(狐表)用户栏目专家坐堂 → [求助]fill 生成的SQLtable为何显示为锁定,isQuery已设置为false


  共有5808人关注过本帖树形打印复制链接

主题:[求助]fill 生成的SQLtable为何显示为锁定,isQuery已设置为false

帅哥哟,离线,有人找我吗?
loongtai
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:574 积分:4332 威望:0 精华:0 注册:2013/7/26 10:24:00
[求助]fill 生成的SQLtable为何显示为锁定,isQuery已设置为false  发帖心情 Post By:2014/3/17 9:44:00 [只看该作者]

如题,窗口中的SQLtable表,属性如下:

图片点击可在新窗口打开查看此主题相关图片如下:属性.jpg
图片点击可在新窗口打开查看
可一加载,表的左上角就显示锁定标记

图片点击可在新窗口打开查看此主题相关图片如下:锁定.jpg
图片点击可在新窗口打开查看
fill 语句如下:

图片点击可在新窗口打开查看此主题相关图片如下:select.jpg
图片点击可在新窗口打开查看
应当能编辑的,但不知为何编辑不了。

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2014/3/17 9:55:00 [只看该作者]

因为一开始没有设置select语句,所以打开之后,这是一个临时表,默认就是不能编辑的,你在fill,也不能改变不能编辑的状态。

 

.Fill()

.AllowEdit = True


 回到顶部
帅哥哟,离线,有人找我吗?
loongtai
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:574 积分:4332 威望:0 精华:0 注册:2013/7/26 10:24:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/3/17 10:12:00 [只看该作者]

SQL语句是对SQL表操作,也就是数据库里实质存在的表.

不可以这么做.

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/3/17 10:13:00 [只看该作者]

你可以把该数据黏贴过来当作一个表即可.

"Select 父料编号,子料编号,物料名称 from (你FILL的SQL语句)"

 回到顶部
帅哥哟,离线,有人找我吗?
loongtai
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:574 积分:4332 威望:0 精华:0 注册:2013/7/26 10:24:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/3/17 10:27:00 [只看该作者]

我不知道你想要做什么,没办法告诉你.如果单纯是想查询这个窗口里结果的表.

5楼我已经告诉你了. 把SQL语句填充到括号里即可.

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/3/17 10:27:00 [只看该作者]

自己动手试试就明白了

 回到顶部
帅哥哟,离线,有人找我吗?
loongtai
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:574 积分:4332 威望:0 精华:0 注册:2013/7/26 10:24:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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编辑过]

 回到顶部
总数 14 1 2 下一页