以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]查询表中的表名问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=110445)

--  作者:blsu33
--  发布时间:2017/12/3 12:20:00
--  [求助]查询表中的表名问题
老师,
  单独生成的sql字符串 在查询表生成器中生成 没有问题,但是绑定窗口表列名出现异常,测试还是影响使用的,除了定义列的别名,如何能让其正常?

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

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

--  作者:blsu33
--  发布时间:2017/12/3 12:22:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1 (1).foxdb


--  作者:有点甜
--  发布时间:2017/12/3 12:56:00
--  

方法一:重新指定别名;

 

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

 


--  作者:blsu33
--  发布时间: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类\'"

--  作者:有点甜
--  发布时间: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
--  发布时间: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()


--  作者:有点甜
--  发布时间:2017/12/4 11:17:00
--  
你执行sql语句,肯定没问题。你绑定到窗口表以后,就自动帮你加了 ~TMPCLP 的。