怎么样得到SQL查询语句内各字段所属表名及别字字段的原字段名(及通用查询模块讨论)

lbj985 2008-11-07 06:55:42
我现在要做一个通用查询模块,环境如下:
1.所有字段都对应着一个用户自定义字段说明表,即用户可以对数据表内所有字段设置别名。当然,会造成同一字段在不同的表内别名不一样。
2.通用查询模块有一个设定SQL语句的属性
3.VB6+SQL2000

希望实现的功能:
1.只要设定这个通用查询模块的SQL语句,查询模块会自动分拆出其对应的字段以供用户选择并输入查询条件
2.用户可以保存查询方案
3.我用的是VSFlexGrid来让用户选择条件及输入数值

范例:
绑定的SQL语句如下:
1.单表格式:
select UserNo as 用户号,UserName as 用户名,UserPass as 密码 from SysUser
2.复表格式:
select UserNo as 用户号,UserName as 用户名,UserPass as 密码,DeptName as 部门名 FROM SysUser INNER JOIN Dept ON SysUser.UserID = Dept.UserID

问题:
1.如何得到各字段的原名?查询模块输出的肯定是where UserNo='A001',而不是 用户号='A001'
2.如何得到各字段所属的表?当多表关连的时候,如果有着同一个字段,那么查询语句必须是:where SysUser.UserID='A001'

如果能解决以上两个问题,我就可以完成这个通用查询模块了,各位同仁你们是怎么做的呢??

敬请指教,谢谢!!!


...全文
536 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxn10050812 2011-04-22
  • 打赏
  • 举报
回复
请问,我应该怎么根据一个列的别名得到这个列的原字段名呢?在查询语句里已经将字段重命名了,根据dt.Columns[0].ColumnName得到的是命名后的中文名,怎么根据这个得到它的原英文字段名啊?
vbman2003 2008-11-08
  • 打赏
  • 举报
回复
无论数据引擎怎么去处理SQL语句,最终返回的结果是一个记录集
这个记录集包含的信息,不可能包含字段别名的原名...
lbj985 2008-11-08
  • 打赏
  • 举报
回复
楼上所言有理,我也是这样想的。但单独一个表的查询语句好处理,如果是多个表的关连查询怎么办?
所以我才想知道如何得到字段对应的表
lbj985 2008-11-08
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 tongnaifu 的回复:]
引用 6 楼 lbj985 的回复:
楼上所言有理,我也是这样想的。但单独一个表的查询语句好处理,如果是多个表的关连查询怎么办?
所以我才想知道如何得到字段对应的表

多表的查询不一样吗?反正是先查对应表
[/Quote]


多表查询需要知道每个字段到底是对应哪个表才可以去用户设定表内查询到

我这个通用查询模块已OK!,在zuoxingyu 线下协助下,我将SQL语句拆分出所含表名、字段原名。

感谢各位的关注,另外特别感谢woolnil的提示,又学了一招,谢谢!!

tongnaifu 2008-11-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lbj985 的回复:]
楼上所言有理,我也是这样想的。但单独一个表的查询语句好处理,如果是多个表的关连查询怎么办?
所以我才想知道如何得到字段对应的表
[/Quote]
多表的查询不一样吗?反正是先查对应表
tongnaifu 2008-11-08
  • 打赏
  • 举报
回复
从这一句“所有字段都对应着一个用户自定义字段说明表”来说
1、根据用户自定义字段去此表查询数据表的字段
2、根据数据表的字段来生成查询条件
woolnil 2008-11-08
  • 打赏
  • 举报
回复
得到该字段的字段原名即你说的英文名:rs.fields(1).properties("BaseColumnName").value
得到该字段的所在的表名:rs.fields(1).properties("BaseTableName").value
zuoxingyu 2008-11-08
  • 打赏
  • 举报
回复
楼主给分的时候,记得多给我点啊,我还有1000多分就冲1个星星咯
zuoxingyu 2008-11-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lbj985 的回复:]
比如sql="select UserID as 用户名 from sysuser

我想得到的是UserID,而不是"用户名“
[/Quote]

你在这里可以写成sql="select sysuser .UserID as 用户名 from sysuser

lbj985 2008-11-08
  • 打赏
  • 举报
回复
那是不是没有办法了。。。。

:(
lbj985 2008-11-07
  • 打赏
  • 举报
回复
比如sql="select UserID as 用户名 from sysuser

我想得到的是UserID,而不是"用户名“
lbj985 2008-11-07
  • 打赏
  • 举报
回复
field(i).name是可以得到,但是得到的是SQL的别名
我是想得到原来的字段及它所对应的表

njstalk 2008-11-07
  • 打赏
  • 举报
回复
取得字段名:
  cn.open   strcon   
rs.open "select * from 表名 where 1=0" ,cn,3,1
for i = 0 to rs.fields.count-1
debug.print rs.field(i).name
next

有了字段名那肯定做啥子都行了哇。让用于自己选择字段和条件,然后你混合一下生成一条sql查询语句就可以了。
当然你得自己处理你别名的问题了。另外,如果你字段不多的话建议你用下拉列表框来让用户选择查询字段和条件,你字段多的话可以用list来完成,都应该比较容易。
zdingyun 2008-11-07
  • 打赏
  • 举报
回复
guanzhu!

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧