以文本方式查看主题

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

--  作者:amao47kiki2
--  发布时间:2018/11/20 17:56:00
--  [求助]关于查询表的几个问题

 外部数据表信息如附件ABC<!--?xml:namespace prefix = "o" ns = "urn:schemas-microsoft-com:office:office" /-->

 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:a.xls

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:b.xls

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:c.xls


项目文件是sql外部数据源的,上传好像没啥用



 

其中 委托单信息表_主表 中的【委托单号】是主键,委托单样品信息表_明细 以及 委托单项目信息表_明细 都是 _Identify 为主键。

 

一、第一次尝试

sql语句生成查询表

 

Select Convert(varchar, {委托单信息表_主表}.委托单号) + Convert(varchar, 委托单样品信息表_明细._Identify) + Convert(varchar, 委托单项目信息表_明细._Identify) As [_Identify] , {委托单信息表_主表}.委托单号,{委托单样品信息表_明细}.样品编号,{委托单项目信息表_明细}.样品名称,测试项目

 

 

 

Fr【不知道为什么打fr/om会不让我发布!!】om ({委托单信息表_主表} Left OUTER JOIN {委托单样品信息表_明细} ON {委托单样品信息表_明细}.[委托单号] = {委托单信息表_主表}.[委托单号]) Left OUTER JOIN {委托单项目信息表_明细} ON {委托单项目信息表_明细}.[委托单号] = {委托单信息表_主表}.[委托单号]

 

结果提示修改了只读数据,有红色感叹号。测试失败。

 
此主题相关图片如下:2.jpg
按此在新窗口浏览图片

 

 

二、第二次尝试

我把  委托单信息表_主表 中的【委托单号】修改为非主键,增加了_Identify作为主键列

 

再次用sql生成查询表

Select Convert(varchar, {委托单信息表_主表}._Identify) + Convert(varchar, 委托单样品信息表_明细._Identify) + Convert(varchar, 委托单项目信息表_明细._Identify) As [_Identify] , {委托单信息表_主表}.委托单号,{委托单样品信息表_明细}.样品编号,{委托单项目信息表_明细}.样品名称,测试项目 

 

 

 Fro【不知道为什么打fr/om会不让我发布!!】】m ({委托单信息表_主表} Left OUTER JOIN {委托单样品信息表_明细} ON {委托单样品信息表_明细}.[委托单号] = {委托单信息表_主表}.[委托单号]) Left OUTER JOIN {委托单项目信息表_明细} ON {委托单项目信息表_明细}.[委托单号] = {委托单信息表_主表}.[委托单号]

 

报错!提示加载表A失败,system.argumentexception类型为stringdatacolumn一旦拥有数据,就无法更改其autoincrement

 
此主题相关图片如下:1.jpg
按此在新窗口浏览图片

 

 

 

后来我把Select Convert  ****  as  [_Identify]  改为  Select  Convert   ****  as  [Identify]  就成功了。

 这是想要的数据,不过希望隐藏Identify列

 
此主题相关图片如下:3.jpg
按此在新窗口浏览图片

请问两次尝试报错是怎么回事??要如何修改???

 

 





[此贴子已经被作者于2018/11/20 18:17:08编辑过]

--  作者:有点甜
--  发布时间:2018/11/20 18:19:00
--  

首先,查询表的报错,很多都是【无缘由】的。

 

如果出现叹号,去掉叹号即可

 

Dim dt = DataTables("表A").basetable
For Each r As object In dt.rows
    For Each c As object In dt.columns
        r.SetColumnError(c.tostring, "")
    Next
    r.RowError = ""
Next

 


--  作者:amao47kiki2
--  发布时间:2018/11/20 19:26:00
--  
但是 1,为什么不能用外部数据源中的主键呢? 2,为什么不能隐藏indetify呢?
--  作者:有点蓝
--  发布时间:2018/11/20 19:59:00
--  
1、可以的,如果用外部数据源中的主键,新增后必须马上给主键赋值

2、如果不需要indetify,直接删除即可

--  作者:amao47kiki2
--  发布时间:2018/11/20 21:55:00
--  
最后还是调整了sql语句,成功了!


SELECT 委托单项目信息表_明细._Identify, 委托单信息表_主表.委托单号, 委托单样品信息表_明细.样品编号, 委托单项目信息表_明细.样品名称, 测试项目
FR***OM 委托单信息表_主表 left JOIN 委托单样品信息表_明细 on 委托单信息表_主表.委托单号 = 委托单样品信息表_明细.委托单号 left JOIN 委托单项目信息表_明细 on 委托单样品信息表_明细.样品编号 = 委托单项目信息表_明细.样品编号

结论就是,其实还是sql语句写得有问题,导致了各种情况!因为出来的数据第一列有重复,而foxtable默认查询表第一列是主键列,不能有重复
[此贴子已经被作者于2018/11/20 22:25:53编辑过]