200分不够在加,菜鸟认为是巨难问题,哪位会用quickrep帮一下忙啊!!!!!!!!!!(200分)

  • 主题发起人 主题发起人 苦命的人
  • 开始时间 开始时间

苦命的人

Unregistered / Unconfirmed
GUEST, unregistred user!
井号 开票 含水 油量
16 2002-08-21 5 25
16 2002-08-22 4 33
16 2002-08-23 6 37
16 2002-08-24 4 39
16 2002-08-25 2 33
17 2002-08-21 4 42
17 2002-08-22 8 33
17 2002-08-23 3 38
17 2002-08-24 6 33
17 2002-08-25 6 37
谁能把我的这个表打印成这个样子:
井号 2002-08-21 2002-08-22 2002-08-23 2002-08-24 2002-08-25
含水 油量 含水 油量 含水 油量 含水 油量 含水 油量
16 5 25 4 33 6 37 4 39 2 33
17 4 42 8 33 3 38 6 33 6 37
 
这个恐怕要用存储过程首先生成这个表,然后报表部分直接引用这个临时表
 
对,pdb这个方法可行,你试试
 
谢谢两位的意见,但菜鸟不会把’练习‘表转变成那个样子,怎么把它变成那个样子呢?
 
如果用sql实现是有困难的,但是用qreport就容易了。
大不了用两个sql直接写输出。
 
我想也必须用临时表进行转换(可能视图也行吧)
 
哪位高手告诉我如何转换成临时表也行,多谢了。
 
說來說去還是交叉表
不難的
有好多
搜一下吧
 
还真没弄过的说
 
你所需要的功能在DELPHI的demo中有例程。
另外报表是各种系统中很重要的一部分内容,对报表的学习不要局限于DELPHI的QR。
多用用EXCEL或许你能找到灵感,另外可以下载一些第三方控件。
 
一个类似的例子
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, Buttons, Grids, DBGrids;
type
TForm1 = class(TForm)
ADODataSet1: TADODataSet;
ADODataSet2: TADODataSet;
BitBtn1: TBitBtn;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
DataSource2: TDataSource;
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
ADODataSet1.Close;
ADODataSet1.FieldDefs.Clear;
ADODataSet1.FieldDefs.Add('type', ftstring, 20, false);
ADODataSet1.FieldDefs.Add('month', ftstring, 10, false);
ADODataSet1.FieldDefs.Add('money', ftinteger, 0, false);
ADODataSet1.CreateDataSet;
ADODataSet1.Open;
ADODataSet1.Append;
ADODataSet1.FieldByName('type').AsString := 'A1';
ADODataSet1.FieldByName('month').AsString := '1月';
ADODataSet1.FieldByName('money').AsInteger := 200;
ADODataSet1.Append;
ADODataSet1.FieldByName('type').AsString := 'A1';
ADODataSet1.FieldByName('month').AsString := '1月';
ADODataSet1.FieldByName('money').AsInteger := 201;
ADODataSet1.Append;
ADODataSet1.FieldByName('type').AsString := 'A1';
ADODataSet1.FieldByName('month').AsString := '2月';
ADODataSet1.FieldByName('money').AsInteger := 200;
ADODataSet1.Append;
ADODataSet1.FieldByName('type').AsString := 'A1';
ADODataSet1.FieldByName('month').AsString := '2月';
ADODataSet1.FieldByName('money').AsInteger := 202;
ADODataSet1.Append;
ADODataSet1.FieldByName('type').AsString := 'A1';
ADODataSet1.FieldByName('month').AsString := '3月';
ADODataSet1.FieldByName('money').AsInteger := 200;
ADODataSet1.Append;
ADODataSet1.FieldByName('type').AsString := 'A1';
ADODataSet1.FieldByName('month').AsString := '3月';
ADODataSet1.FieldByName('money').AsInteger := 203;
ADODataSet1.Append;
ADODataSet1.FieldByName('type').AsString := 'A2';
ADODataSet1.FieldByName('month').AsString := '1月';
ADODataSet1.FieldByName('money').AsInteger := 100;
ADODataSet1.Append;
ADODataSet1.FieldByName('type').AsString := 'A2';
ADODataSet1.FieldByName('month').AsString := '1月';
ADODataSet1.FieldByName('money').AsInteger := 101;
ADODataSet1.Append;
ADODataSet1.FieldByName('type').AsString := 'A2';
ADODataSet1.FieldByName('month').AsString := '2月';
ADODataSet1.FieldByName('money').AsInteger := 100;
ADODataSet1.Append;
ADODataSet1.FieldByName('type').AsString := 'A2';
ADODataSet1.FieldByName('month').AsString := '2月';
ADODataSet1.FieldByName('money').AsInteger := 102;
ADODataSet1.Append;
ADODataSet1.FieldByName('type').AsString := 'A2';
ADODataSet1.FieldByName('month').AsString := '3月';
ADODataSet1.FieldByName('money').AsInteger := 100;
ADODataSet1.Append;
ADODataSet1.FieldByName('type').AsString := 'A2';
ADODataSet1.FieldByName('month').AsString := '3月';
ADODataSet1.FieldByName('money').AsInteger := 103;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
i, m, n: integer;
str, strMonth: string;
begin
ADODataSet2.Close;
ADODataSet2.FieldDefs.Clear;
ADODataSet2.FieldDefs.Add('type', ftstring, 20, false);
with ADODataSet1do
begin
first;
while not eofdo
begin
str := FieldByName('month').AsString;
if ADODataSet2.FieldDefs.IndexOf(str) < 0 then
ADODataSet2.FieldDefs.Add(str, ftinteger, 0, false);
next;
end;
ADODataSet2.CreateDataSet;
ADODataSet2.Open;
first;
while not eofdo
begin
str := FieldByName('type').AsString;
if not ADODataSet2.Locate('type', str, [loCaseInsensitive, loPartialKey]) then
begin
ADODataSet2.Append;
ADODataSet2.FieldByName('type').AsString := str;
for i := 1 to ADODataSet2.FieldCount - 1do
ADODataSet2.Fields.AsInteger := 0;
end;
next;
end;

first;
while not eofdo
begin
str := FieldByName('type').AsString;
strMonth := FieldByName('month').AsString;
m := FieldByName('money').AsInteger;
ADODataSet2.Locate('type', str, [loCaseInsensitive, loPartialKey]);
n := ADODataSet2.FieldByName(strMonth).AsInteger;
ADODataSet2.Edit;
ADODataSet2.FieldByName(strMonth).AsInteger := m + n;
next;
end;

end;
end;

end.

object Form1: TForm1
Left = 192
Top = 103
Width = 544
Height = 375
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object BitBtn1: TBitBtn
Left = 8
Top = 176
Width = 75
Height = 25
Caption = 'BitBtn1'
TabOrder = 0
OnClick = BitBtn1Click
end
object DBGrid1: TDBGrid
Left = 104
Top = 48
Width = 320
Height = 120
DataSource = DataSource1
TabOrder = 1
TitleFont.Charset = DEFAULT_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -11
TitleFont.Name = 'MS Sans Serif'
TitleFont.Style = []
end
object DBGrid2: TDBGrid
Left = 104
Top = 224
Width = 320
Height = 120
DataSource = DataSource2
TabOrder = 2
TitleFont.Charset = DEFAULT_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -11
TitleFont.Name = 'MS Sans Serif'
TitleFont.Style = []
end
object ADODataSet1: TADODataSet
Parameters = <>
Left = 32
Top = 16
end
object ADODataSet2: TADODataSet
Parameters = <>
Left = 32
Top = 208
end
object DataSource1: TDataSource
DataSet = ADODataSet1
Left = 136
Top = 16
end
object DataSource2: TDataSource
DataSet = ADODataSet2
Left = 136
Top = 200
end
end
 
接受答案了.
 

Similar threads

I
回复
0
查看
428
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
556
import
I
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部