Foxtable(狐表)用户栏目专家坐堂 → [求助]关于查询表的几个问题


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

主题:[求助]关于查询表的几个问题

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


加好友 发短信
等级:婴狐 帖子:20 积分:272 威望:0 精华:0 注册:2015/10/29 10:36:00
[求助]关于查询表的几个问题  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:20 积分:272 威望:0 精华:0 注册:2015/10/29 10:36:00
  发帖心情 Post By:2018/11/20 19:26:00 [只看该作者]

但是 1,为什么不能用外部数据源中的主键呢? 2,为什么不能隐藏indetify呢?

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/11/20 19:59:00 [只看该作者]

1、可以的,如果用外部数据源中的主键,新增后必须马上给主键赋值

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

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


加好友 发短信
等级:婴狐 帖子:20 积分:272 威望:0 精华:0 注册:2015/10/29 10:36:00
  发帖心情 Post By: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编辑过]

 回到顶部