Foxtable(狐表)用户栏目专家坐堂 → [求助]查询表中的表名问题


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

主题:[求助]查询表中的表名问题

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
[求助]查询表中的表名问题  发帖心情 Post By:2017/12/3 12:20:00 [只看该作者]

老师,
  单独生成的sql字符串 在查询表生成器中生成 没有问题,但是绑定窗口表列名出现异常,测试还是影响使用的,除了定义列的别名,如何能让其正常?

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20171203121833.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2017/12/3 12:41:10编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/12/3 12:22:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1 (1).foxdb


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/3 12:56:00 [只看该作者]

方法一:重新指定别名;

 

方法二:修改列标题 http://www.foxtable.com/webhelp/scr/1275.htm

 


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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/12/3 13:32:00 [只看该作者]

老师,
   方法1 肯定可以解决;
方法2,其实只是变更了Caption ,不用临时表,实际使用的时候,怎么操作呢?
二楼的例子 按钮中代码有误,找不到第一列

Dim  str As String="Select  {表A}.第一列,{表A}.第二列,{表B}.第一列 Fr om {表A} Inner JOIN {表B} ON {表B}.[第一列] = {表A}.[第一列]"
cmd99.CommandText=str
Dim dt As DataTable=cmd99.ExecuteReader()
dt.DataCols("第一列").Caption = "A_第一列"
dt .DataCols("第二列").Caption = "b_第一列"
dt .BuildHeader()

Dim tb As WinForm.Table = e.Form.Controls("Table1")
tb.Table.DataSource =dt
Dim tbx As WinForm.TextBox = e.Form.Controls("TextBox1")
tbx.text=cmd99.CommandText
tb.Table.Filter="A.第一列='A类'"

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/3 23:58:00 [只看该作者]

Dim  str As String="Select  {表A}.第一列,{表A}.第二列,{表B}.第一列 From {表A} Inner JOIN {表B} ON {表B}.[第一列] = {表A}.[第一列]"
cmd99.CommandText=str
Dim dt As DataTable=cmd99.ExecuteReader()

Dim tb As WinForm.Table = e.Form.Controls("Table1")
tb.Table.DataSource =dt
Dim tbx As WinForm.TextBox = e.Form.Controls("TextBox1")
tbx.text=cmd99.CommandText

For Each c As DataCol In tb.Table.DataTable.DataCols
c.Caption = c.Caption.replace("~TMPCLP", "")
tb.Table.DataTable.BuildHeader()
Next
tb.Table.Filter="[~TMPCLP表A.第一列]='A类'"


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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/12/4 11:08:00 [只看该作者]

老师,

  测试发现如下规律,不知是否正确;

对于重名列({表A}.第一列,{表B}.第一列)只是影响在显示上~TMPCLP,不影响在 如下代码中使用({表A}.第一列,不用写为{~TMPCLP表A}.第一列);

例如

Dim  str As String="Select  {表A}.第一列,{表A}.第二列,{表B}.第一列 From {表A} Inner JOIN {表B} ON {表B}.[第一列] = {表A}.[第一列]"
cmd99.CommandText=str & “where {表A}.第一列='A类'”
Dim dt As DataTable=cmd99.ExecuteReader()


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/4 11:17:00 [只看该作者]

你执行sql语句,肯定没问题。你绑定到窗口表以后,就自动帮你加了 ~TMPCLP 的。

 回到顶部