挑战智商:这个问题我已详细给图并说明,最关键的是红色字体部分不能解决,请大虾提供解决方法!! 除了红色外解决的地方已有大侠给出,地址:http://bbs.csdn.net/topics/390519799?page=1#post-395058726请高手提供整个代码解决方案,甚谢!!!!!!!!!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我看你前两天也发过类似的帖子。不知我是不是完全理解了你意思,我的建议如下:我的工资单上有40-50项,但对我真正有用的不超过20项,其它的也会显示,只不过数据是0。一个城市有好多部门,除了基本工资、住房公积金、医疗补助(医保卡)等少数几项是一样的外,其它各项每个部门都会有所不同,那财政局是不是会为每个部门单独设计一个工资单呢?肯定不会,它只能是设计一个针对整个城市各个部门统一的工资单,虽然有些项对有些部门来说是用不到的。上边是点闲话,以下是解决方案:数据库设计无非有三种方法:1、针对所有的零件设计一个统一的数据库,有能共用的字段,也有针对某个零件的字段。这个我觉得最好。2、针对每个零件设计数据库。这个有点繁琐。3、折中一下,把相同项目多的零件弄成一组,给它们设计数据库。至于显示,我针对第一种方法说一下思路:DBGrid不要设固定的显示字段。查询完成后,对结果集的第一条记录(应该是那条都行)从头至尾循环,如果某字段值不为空(或0)就显示,这样就行了。代码应该是这样的:var i,j:integer;begin ADOQuery1.Open; //先要完成查询,条件你自己设 dbgrid1.Columns.Clear; j:=0; for i:=0 to ADOQuery1.FieldCount-1 do if ADOQuery1.Fields[i].AsString<>'' then begin DBGrid1.Columns.Add; DBGrid1.Columns[j].FieldName:=ADOQuery1.Fields[i].FieldName; DBGrid1.Columns[j].Width:=60; //DBGrid1.Columns[j].Title.caption:=ADOQuery1.Fields[i].FieldName; //为了好看,可以加判断以显示中文字段名称,如: case i of //注意,是i,不是j 0: DBGrid1.Columns[j].Title.caption:='名称'; 1: DBGrid1.Columns[j].Title.caption:='长度'; 2: DBGrid1.Columns[j].Title.caption:='宽度'; 3: DBGrid1.Columns[j].Title.caption:='种类'; 4: DBGrid1.Columns[j].Title.caption:='直径'; 5: DBGrid1.Columns[j].Title.caption:='用途'; 6: DBGrid1.Columns[j].Title.caption:='ee'; 7: DBGrid1.Columns[j].Title.caption:='ff'; 8: DBGrid1.Columns[j].Title.caption:='gg'; 9: DBGrid1.Columns[j].Title.caption:='hh'; end; //我觉得没好办法,只有判断30多次。 j:=j+1; end;end; 表2查询结果 关联的dbgrid的每个field的visible与否,根据表1对应记录的是否来确定 自动建立DBEDIT和字段对称的方法在你的上两个贴子中已经给出。楼主没有怎么没有看到? 楼上好像不行,通过一个按钮,得出表格显示和EDIT同时筛选,完善不起来。 楼上好像不行,通过一个按钮,得出表格显示和EDIT同时筛选,完善不起来。我用的是FireMonkey HD窗体,没有DBEdit,只有Edit,我全部将DBEdit换成Edit,好像不行,出现错误。 Edits.DataSource :=self.DataSource1;这一行在FireMonkey HD模式下,如果改?即将上面一行改成FM下的代码可用?谁知道哦? Edits.BindingSource :=self.DataSource1;这样也不行! 这种效果如何做,有什么控件. string转移到数组里,基础问题却这么难解决? fastreport rich的问题 怎样用属性来调用过程 求教,做图像的网络传输,用indy的idtcpserver方便还是tcpserver方便?请给出理由。 报表预览问题求助!!! 超醋难题(但实用的一个问题,请大家来看看) Bufeng收藏——Delphi 编程技巧 之二 【代发】 CSDN要玩完了如此下去谁还。。。。。满100结贴(Focus老鱼) 小天使(新手)----关于dll(游少爷) delphi的模块级异常处理如何设计? XE4 File not found DBSumLst.dcu
不知我是不是完全理解了你意思,我的建议如下:
我的工资单上有40-50项,但对我真正有用的不超过20项,其它的也会显示,只不过数据是0。
一个城市有好多部门,除了基本工资、住房公积金、医疗补助(医保卡)等少数几项是一样的外,其它各项每个部门都会有所不同,那财政局是不是会为每个部门单独设计一个工资单呢?肯定不会,它只能是设计一个针对整个城市各个部门统一的工资单,虽然有些项对有些部门来说是用不到的。
上边是点闲话,以下是解决方案:
数据库设计无非有三种方法:
1、针对所有的零件设计一个统一的数据库,有能共用的字段,也有针对某个零件的字段。
这个我觉得最好。
2、针对每个零件设计数据库。这个有点繁琐。
3、折中一下,把相同项目多的零件弄成一组,给它们设计数据库。
至于显示,我针对第一种方法说一下思路:
DBGrid不要设固定的显示字段。查询完成后,对结果集的第一条记录(应该是那条都行)从头至尾循环,如果某字段值不为空(或0)就显示,这样就行了。代码应该是这样的:
var
i,j:integer;
begin
ADOQuery1.Open; //先要完成查询,条件你自己设
dbgrid1.Columns.Clear;
j:=0;
for i:=0 to ADOQuery1.FieldCount-1 do
if ADOQuery1.Fields[i].AsString<>'' then
begin
DBGrid1.Columns.Add;
DBGrid1.Columns[j].FieldName:=ADOQuery1.Fields[i].FieldName;
DBGrid1.Columns[j].Width:=60;
//DBGrid1.Columns[j].Title.caption:=ADOQuery1.Fields[i].FieldName;
//为了好看,可以加判断以显示中文字段名称,如:
case i of //注意,是i,不是j
0: DBGrid1.Columns[j].Title.caption:='名称';
1: DBGrid1.Columns[j].Title.caption:='长度';
2: DBGrid1.Columns[j].Title.caption:='宽度';
3: DBGrid1.Columns[j].Title.caption:='种类';
4: DBGrid1.Columns[j].Title.caption:='直径';
5: DBGrid1.Columns[j].Title.caption:='用途';
6: DBGrid1.Columns[j].Title.caption:='ee';
7: DBGrid1.Columns[j].Title.caption:='ff';
8: DBGrid1.Columns[j].Title.caption:='gg';
9: DBGrid1.Columns[j].Title.caption:='hh';
end;
//我觉得没好办法,只有判断30多次。
j:=j+1;
end;
end;
我用的是FireMonkey HD窗体,没有DBEdit,只有Edit,我全部将DBEdit换成Edit,好像不行,出现错误。
这一行在FireMonkey HD模式下,如果改?即将上面一行改成FM下的代码可用?谁知道哦?
这样也不行!