我想做一个万能报表,就是让客户去选要查找的数据表,相关数据表的字段名,字段名符合的条件等sql语句需要的数据,生成一条客户需要的查询语句。请问有没有相关的例子,或帮我解决这个问题:怎么将数据库中的所有用户数据表名显示到一个下拉的combobox的item中,且将相关数据表的字段也生成到另一个combobox的item中,这样用户就可以进行选择了。(还有一个问题就是,我的数据表名为英文的,如dkc10,实际是销售表,如果下拉dkc10,用户肯定不知道什么意思,怎么转换?字段的问题也是如果,如kbi01c代表公司编号,下拉肯定要公司编号客户才能明白)
有谁能解决,分不够尽管说!!我有4000多分,分没问题,暂时只给50分,以防没人答出来浪费!!
有谁能解决,分不够尽管说!!我有4000多分,分没问题,暂时只给50分,以防没人答出来浪费!!
function TFormMenulsz.myGetdisplaylabel(fieldname:string):string;
begin
fieldname:=uppercase(fieldname);
if fieldname='CLASSID' then result:='餐次' else
if fieldname='MENUNO' then result:='菜品编码' else
if fieldname='MENUNAME' then result:='菜品名称' else
if fieldname='PLACENO' then result:='场所' else
if fieldname='UNITS' then result:='单位' else
if fieldname='PRICE' then result:='单价' else
if fieldname='DISCOUNT' then result:='折扣' else
if fieldname='CURR' then result:='金额' else
if fieldname='AMOUNT' then result:='数量' else
if fieldname='NOTENO' then result:='单据号' else
if fieldname='GUESTNAME' then result:='主客姓名' else
if fieldname='NUM' then result:='人数' else
if fieldname='ENDDATE' then result:='日期' else
if fieldname='PERSON' then result:='姓名' else
if fieldname='HOUSENO' then result:='监室号' else
if fieldname='OPERANT' then result:='制单' else
if fieldname='REMARK' then result:='摘要' else
if fieldname='REMARK0' then result:='备注' else
if fieldname='CHECKNO' then result:='结账单号' else
result:='';
end;
QUERY 的SQL :select dbo.sysobjects.name from dbo.sysobjects where OBJECTPROPERTY(id, N'IsUserTable') = 1
然后怎么加到COMBOBOX的ITEM就不用教了吧?
2。我的数据表名为英文的,如dkc10,实际是销售表,如果下拉dkc10,用户肯定不知道什么意思,怎么转换?字段的问题也是如果,如kbi01c代表公司编号,下拉肯定要公司编号客户才能明白?
我的处理方式,在数据库中增加一个表ctablename,这个表的至少有两个字段
tablename 表的原名
ctablename 表的中文描述
用以下的语句可以自动把当前数据库中的所有表都加入到ctablename中,补充一下中文部分就可以了
insert into ctablename(tablename)
select dbo.sysobjects.name from dbo.sysobjects where OBJECTPROPERTY(id, N'IsUserTable') = 1 当然了,针对你的非中文字段,也可用类似的方式来解决
这个问题可以解决,但是select 语句那么麻烦,什么inner join,full outer join,where的条件又不定,再加上order by ,group by,用户要出的报表可能有统计,这又要加上表达式生成器,我拷,吐了!!用户的数据可能来自好几个表的一些字段,我的头都糊了!!有没有什么很好的办法能实现sql语句的最大可能的拼凑!!最好能把那些语法元素都加上去!
加不上去也要基本实现sql语句的最基本语法!!(where的条件很多哦!)如有哪位能实现,分不是问题,只要你提!!!
1.数据表基本信息表
字段名 字段说明 类型 是否为空 备注
Table_name 数据表名 Varchar(50) Not Null PK
Table_chinese 数据表中文名 Varchar(80) Null
Table_desc 数据表描述 Varchar(200) Null
Table_param 驱动参数 Int
Table_format 显示格式 Char(1) Not Nulll Default ‘1’
Is_SaveMsg 保存是否有提示 Bit 0
Create_date 创建时间 Datatime Null Default Getdate()
Creator 创建人 Varchar(10) Null System_User
Bz 备注 Varchar(200) Null Default ‘’2.数据字段信息表
字段名 字段说明 类型 是否为空 备注
Table_ID 自动ID Numeric(11,0) Not Null Identity,PK
Table_name 数据表名 Varchar(50) Not Null
Column_name 字段名称 Varchar(50) Not Null
Column_chinese 字段中文名 Varchar(80) Null Default ‘’
Column_type 字段类型 Char(1) Null Default ‘1’
Column_format 字段格式 Varchar(40) Null
Column_width 显示宽度 Int
Column_order 显示顺序 Int Null
Content_source 取值来源方式 Char(1) Null Default ‘1’
Value_source 取值SQL语句 Varchar(200) Null Default ‘’
Can_empty 是否可以为空 Bit Null Default 1
Default_Value 默认值 Varchar(50)
Bz 备注 Varchar(200) Null Default ‘’
你只能定义一些常用的功能,如果有特殊要求,可以让用户自己编辑sql