Foxtable(狐表)用户栏目专家坐堂 → [求助]生成的SQL查询表


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

主题:[求助]生成的SQL查询表

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


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

Dim dt1 As DataTable = DataTables("表A")
Dim dt2 As DataTable = DataTables("表B")
Dim sql As String = ""
Dim s1,s2 As String
For Each dc As DataCol In dt1.datacols
    If dc.Expression = "" Then
        s1 &= "{" & dt1.name & "}.[" & dc.name & "],"
        s2 &= "'' as {" & dt1.name & "}.[" & dc.name & "],"
    End If
Next
For Each dc As DataCol In dt2.datacols
    If dc.Expression = "" Then
        s1 &= "'' as {" & dt2.name & "}.["  & dc.name & "],"
        s2 &= "{" & dt2.name & "}.[" & dc.name & "],"
    End If
Next
sql &= "select " & s1.trim(",") & " fr om {" & dt1.name & "}"
sql &= " unio n all Select " & s2.trim(",") & " fr om {" & dt2.name & "}"
output.show(sql)

select {表A}.[第一列],{表A}.[第二列],{表A}.[第三列],{表A}.[第四列],{表A}.[第五列],{表A}.[第六列],{表A}.[第七列],{表A}.[第八列],{表A}.[第九列],'' as {表B}.[第一列],'' as {表B}.[第二列],'' as {表B}.[第三列],'' as {表B}.[第四列],'' as {表B}.[第五列],'' as {表B}.[第六列],'' as {表B}.[第七列],'' as {表B}.[第八列],'' as {表B}.[第九列],'' as {表B}.[第十列] fr om {表A} unio n all Select '' as {表A}.[第一列],'' as {表A}.[第二列],'' as {表A}.[第三列],'' as {表A}.[第四列],'' as {表A}.[第五列],'' as {表A}.[第六列],'' as {表A}.[第七列],'' as {表A}.[第八列],'' as {表A}.[第九列],{表B}.[第一列],{表B}.[第二列],{表B}.[第三列],{表B}.[第四列],{表B}.[第五列],{表B}.[第六列],{表B}.[第七列],{表B}.[第八列],{表B}.[第九列],{表B}.[第十列] fr om {表B}

.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2017.10.16.1
错误所在事件:
详细错误信息:
SELECT 子句中包含一个保留字、拼写错误或丢失的参数,或标点符号不正确。

还是没搞清楚 用法图片点击可在新窗口打开查看 老师和再给指点下

故意在表A 删除第十列 列类型也有不一致的情况
[此贴子已经被作者于2017/10/22 22:37:40编辑过]

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


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

Dim dt1 As DataTable = DataTables("表A")
Dim dt2 As DataTable = DataTables("表B")
Dim sql As String = ""
Dim s1,s2 As String
For Each dc As DataCol In dt1.datacols
    If dc.Expression = "" Then
        s1 &= dc.name & " as " & dt1.name & "_" & dc.name & ","
        s2 &= "'' as " & dc.name & ","
    End If
Next
For Each dc As DataCol In dt2.datacols
    If dc.Expression = "" Then
        s1 &= "'' as " & dt2.name & "_"  & dc.name & ","
        s2 &= "[" & dc.name & "],"
    End If
Next
sql &= "select " & s1.trim(",") & " from {" & dt1.name & "}"
sql &= " union all Select " & s2.trim(",") & " from {" & dt2.name & "}"
output.show(sql)

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


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

老师,
  准备合成10个以上的表,好像难度就有点大了,字段名一多,感觉会晕 ,怎么写简便呢

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


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

先看懂12楼代码,多个表,就是一个循环而已。

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


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

老师,
  好像这样可以执行,明天我再改下,麻烦您了,good night!
Dim dt1 As DataTable = DataTables("表A")
Dim dt2 As DataTable = DataTables("表B")
Dim sql As String = ""
Dim s1,s2 As String
For Each dc As DataCol In dt1.datacols
    If dc.Expression = "" Then
        s1 &= dc.name & " as " & dt1.name & "_" & dc.name & ","
        s2 &= "'' as " & dt1.name & "_"  & dc.name & ","
    End If
Next
For Each dc As DataCol In dt2.datacols
    If dc.Expression = "" Then
        s1 &= "'' as " & dt2.name & "_"  & dc.name & ","
        s2 &= dc.name & " as " & dt2.name & "_" & dc.name & ","
    End If
Next
sql &= "select " & s1.trim(",") & " fr om {" & dt1.name & "}"
sql &= " un ion all Select " & s2.trim(",") & " fr om {" & dt2.name & "}"
output.show(sql)

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


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

老师 ,

  可以生成了,但是 好像查询的表受到列数的限制,问下,大于多少列之后 就不行了呢?

 

.NET Framework 版本:2.0.50727.5420
Foxtable 版本:2017.10.16.1
错误所在事件:
详细错误信息:
查询输入必须包含至少一个表或查询。

[此贴子已经被作者于2017/10/23 10:03:29编辑过]

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


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

 1、access数据库最大列数是255;

 

 2、请照抄12楼代码;

 

 3、你可以用这种方式新建表,然后填充各个表的数据,参考

 

http://www.foxtable.com/webhelp/scr/0679.htm

 

 


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


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

o  原因找到了 生成的字符串 超过了255 怎么定义一个备注型呢?

 

列数的确超过255的,SQL2005列数有限制吗?

 

[此贴子已经被作者于2017/10/23 10:31:15编辑过]

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


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

FOXTABLE 加载进来的临时表是从SQL的表列 进来的是不是也是不能超过255

 


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


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

以下是引用blsu33在2017/10/23 10:21:00的发言:

o  原因找到了 生成的字符串 超过了255 怎么定义一个备注型呢?

 

列数的确超过255的,SQL2005列数有限制吗?

 

[此贴子已经被作者于2017/10/23 10:31:15编辑过]

 

sqlserver没有列数限制。

 

新建表,尽量用这种方法 http://www.foxtable.com/webhelp/scr/0679.htm

 


 回到顶部
总数 27 上一页 1 2 3 下一页