怎样转换数据库表格形式?(200分)

  • 主题发起人 主题发起人 蓝天
  • 开始时间 开始时间

蓝天

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个表格,形式如左下:

字段1 字段2 字段1 字段2 字段3 字段4
1 a 1 a 空 空
2 a 怎样通过SQL语句将 2 a b c
2 b 其转化为右边的形式 3 b c 空
2 c ==================>
3 b
3 c
 
用SQL难写。在这里用Table好象容易些。

先创建表2 Table2

对表1的“字段1”分别进行过滤

(如:过滤出“字段1”=1 的记录。)
Table1.first; //(已过滤)
Table2.append;
while not Table1.eof do
begin
Table2.fieldByName('字段1').类型:=
Table1.fieldByName('字段1').类型;
for I:=2 to Table1.RecordCount+1 do
//从字段“2”到字段“Table1.RecordCount+1个”
begin
Table2.fieldByName('字段'+IntToStr(I)).类型:=
Table1.fieldByName('字段2').类型:
end;

Table2.refresh;
Table1.next;
end;
//过滤下一个“字段1”=2的记录。

end;//end while


注:'字段'+IntToStr(I)是很有意思的一段
请好好研究一下。

以上代码基本上是我以前做一个“医院...系统”中将
“各科前十位疾病转横排后做报表打印”用到的一个技巧。

科别 病名 人数 科别 病名1 人数1 病名2 人数2 ..........
1 aaa 18 1 asd 29 aaa 18
1 asd 29 ==> 2 fgd 35
2 fgd 35

 
非常感谢!我有些不明白,表1中的数据是怎样添加到表2中的?
表1中的记录是未知(随时可能变化)的,表2中应该有几个字段事先无法知道。
 
如果表2种的字段数无法知道,就要动态创建数据表了,麻烦!

首先建立一个临时表,包含旧表的字段,然后添加新的字段,
再将旧表数据转换过来,添加进新的数据,删除旧表,降临
时表改名为旧表名。
程序中是通过
Table2.Append;//好像应该在while里面?

while ...
begin
...

Table2.Post;//refresh
end;
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
816
SUNSTONE的Delphi笔记
S
S
回复
0
查看
737
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部