QRDBTEXT的DATASET要设定
quickrep的dataset也要设定

解决方案 »

  1.   

    QRDBTEXT的DATASET设定了
    quickrep的dataset设定了
    不行
      

  2.   

    你先判断一下你的adoquery打开了没有
      

  3.   


    adoquery1.Active:=true;
    quickreport5.DataSet.Active:=true;
    quickreport5.QRSubDetail1.DataSet.Active:=true;
    提到
    with adoquery1 do begin
    之前
    或则 QRDBTEXT的DATASET和quickrep的dataset直接挂adoquery1呀
      

  4.   

    接上边:你的ADOQuery里边有数据吗?
      

  5.   

    接上边:你的ADOQuery里边有数据吗?
      

  6.   

    zhangpeigao(zhangpeigao),是过了,不行
      

  7.   

    检查adoquery1中有数据吗??
    showmessage(inttostr(adoquery1.recordcount))
      

  8.   

    procedure TForm4.Button1Click(Sender: TObject);
    var
    ifield:integer;
    begin
    adoquery1.SQL.Clear;
    adoquery1.SQL.Add('select * from 1');
    adoquery1.SQL.Add('where pvend=:mfdm');
    adoquery1.SQL.Add('and phcrno=:htbh');
    adoquery1.Parameters.ParamByName('mfdm').Value:=dblookupcombobox1.KeyValue;
    adoquery1.Parameters.ParamByName('htbh').Value:=combobox1.Text;
    adoquery1.Open;
    for ifield:=0 to adoquery1.RecordCount-1  do begin
    quickReport5.QRDBText1.DataField:=adoquery1.Fields[0].Value;
    quickReport5.QRDBText2.DataField:=adoquery1.Fields[1].Value;
    quickReport5.QRDBText3.DataField:=adoquery1.Fields[2].Value;
    quickReport5.QRDBText4.DataField:=adoquery1.Fields[3].Value;
    quickReport5.QRDBText5.DataField:=adoquery1.Fields[4].Value;
    quickReport5.QRDBText6.DataField:=adoquery1.Fields[5].Value;
    quickReport5.QRDBText7.DataField:=adoquery1.Fields[6].Value;
    quickReport5.QRDBText8.DataField:=adoquery1.Fields[7].Value;
    QuickReport5.Preview;
    end;
    end;
      

  9.   

    ihihonline(小小->充电中……) ,不行
      

  10.   

    1:不要循环;
    2:将quickReport5.QRDBText1.DataField:=adoquery1.Fields[0].Value;改为
    QRDBText1.DataField:=adoquery1.Fields[0].FieldName;
    你再看一看;
      

  11.   

    3:再加一句
    quickReport5.QRDBText1.DataSet := ADOquery1;
      

  12.   

    把 QRDBText 放在 Detail 中,同时在报表QuickReport的数据源设置为当前数据源,数据源要在报表显示前就已经打开,还有:...DataField := ...Fields[...].FieldName; 即可。
      

  13.   

    其实你的那种方法也可以,只不过你放错了位置,你试一试下边的;
    新建一报表,在ColumnHeader里或是在pageHeader中放置了8个qrdbtext
    然后用你的程序,但是,记住,每个
    QREDBText.DataFields :=..的前边加一句
    QREDBText.DataSet := ADOQuery1;
    这样就可以了,你试一试看;
      

  14.   

    ihihonline(小小->充电中……) ,就出来第一个字段的值且只有一条纪录。
      

  15.   

    不可能,我刚刚在我这边也试了,记住,每个qredbtext都要写
    qredbedit.dataset := adoquery1;
    这样就可以了,如果不是这种情况就是你的记录只有一条;
    如:
    qredbedit1.dataset := adoquery1;
    QRDBText1.DataField:=adoquery1.Fields[0].FieldName;
    qredbedit2.dataset := adoquery1;
    QRDBText2.DataField:=adoquery1.Fields[1].FieldName;
    ...
    ...
    qredbedit9.dataset := adoquery1;
    QRDBText9.DataField:=adoquery1.Fields[8].FieldName;
    这次肯定能行,你别着急;
    一定会成功的
      

  16.   

    ihihonline(小小->充电中……) ,不行,我的查询中有好多条纪录,可只显示一条纪录。
      

  17.   

    不可能,我刚刚在我这边也试了,记住,每个qredbtext都要写
    qredbedit.dataset := adoquery1;
    这样就可以了,如果不是这种情况就是你的记录只有一条;
    如:
    qredbedit1.dataset := adoquery1;
    QRDBText1.DataField:=adoquery1.Fields[0].FieldName;
    qredbedit2.dataset := adoquery1;
    QRDBText2.DataField:=adoquery1.Fields[1].FieldName;
    ...
    ...
    qredbedit9.dataset := adoquery1;
    QRDBText9.DataField:=adoquery1.Fields[8].FieldName;
    这次肯定能行,你别着急;
    一定会成功的
    如果还不行的话,我下午过来再说吧;
    但是这一定能行的,或者你用
    其实你的那种方法也可以,只不过你放错了位置,你试一试下边的;
    新建一报表,在ColumnHeader里或是在pageHeader中放置了8个qrdbtext
    然后用你的程序,但是,记住,每个
    QREDBText.DataFields :=..的前边加一句
    QREDBText.DataSet := ADOQuery1;
    这样就可以了,你试一试看;
    =================================================
    QRDBText9.DataField:=adoquery1.Fields[8].FieldName;
    你这儿要取的是field的名子,不是它的值,如果不是fieldName就可能是DistplayText or Caption or ....
      

  18.   

    ihihonline(小小->充电中……) , 谢谢您!你的方法我都试了,就出来一条纪录,我用循环,设置断点,查询出来的纪录它每条都读了,可就显示一条。你吃过饭后,我等你。
    谢谢。
      

  19.   

    给你一个例程在这个里边,只有一个pag header
    ==========================
    unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, ADODB, QRCtrls, QuickRpt, ExtCtrls;type
      TForm2 = class(TForm)
        QuickRep1: TQuickRep;
        PageHeaderBand1: TQRBand;
        DetailBand1: TQRBand;
        QRLabel1: TQRLabel;
        QRLabel2: TQRLabel;
        QRLabel3: TQRLabel;
        QRLabel4: TQRLabel;
        QRDBText1: TQRDBText;
        QRDBText2: TQRDBText;
        QRDBText3: TQRDBText;
        QRDBText4: TQRDBText;
        QRDBText5: TQRDBText;
        QRLabel5: TQRLabel;
        ADOConnection1: TADOConnection;
        ADOQuery1: TADOQuery;
        ADOQuery2: TADOQuery;
        ADOQuery3: TADOQuery;
        QRLabel6: TQRLabel;
        QRLabel7: TQRLabel;
        QRLabel8: TQRLabel;
        QRLabel9: TQRLabel;
        QRLabel10: TQRLabel;
        QRLabel11: TQRLabel;
        QRLabel12: TQRLabel;
        QRLabel13: TQRLabel;
        QRShape1: TQRShape;
        QRShape2: TQRShape;
        QRShape3: TQRShape;
        QRShape4: TQRShape;
      private
        { Private declarations }
      public
      procedure vPrint;
        { Public declarations }
      end;var
      Form2: TForm2;
      zjh : String;implementation{$R *.dfm}{ TForm2 }procedure TForm2.vPrint;
    var
      QRL : TQRLabel;
      I, J , K :integer;
      xLeft, xTop, yTop ,Top, xHeight, xWidth :Integer;
      QRLName : String;
    begin
      Top  := 140;
      yTop := 140;
      K :=0;
      xLeft := 8;
      xTop := 144;
      xHeight :=17;
      xWidth :=89;
      with ADOQuery1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('select * from persornal where zjh = :zjh');
        Parameters.Items[0].Value := zjh;
        Open;
      end;
      with ADOQuery2 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('select * from card where zjh = :zjh');
        Parameters.Items[0].Value := zjh;// := ADOQuery1.FieldByName('zjh').ASString;
        Open;
        First;
      end;
      //================================
      for I := 0 to ADOQuery2.RecordCount - 1  do
      begin
        for J := 0 to 7 do
        begin
          if ((xTop + 17 * I + 8) > 1000 ) then Break; //判断是否越界
          QRL := TQRLabel.Create(self);
          QRLName := 'QRL'+ IntToStr( 20 + K );//这是名子,可要可不要;
          QRL.AutoSize :=False;
          QRL.Parent := QRLabel1.Parent;// PageHeaderBand1;
          QRL.Left := xLeft + J * 89 ;
          QRL.Top := xTop + 17 * I + 8;
          Top := QRL.Top;
          QRL.Height := xHeight;
          QRL.Width := xWidth;
          QRL.Name := QRLName;
          K := K + 1 ;
          if J = 0 then
            QRL.Caption := ADOQuery2.FieldByName('zsbh').AsString;//
          if J = 1  then
            QRL.Caption := ADOQuery2.FieldByName('czzl').AsString;//
          if J = 2  then
            QRL.Caption := ADOQuery2.FieldByName('khdw').AsString;//
          if J = 3  then
            QRL.Caption := ADOQuery2.FieldByName('khrq').AsString;//
          if J = 4  then
            QRL.Caption := ADOQuery2.FieldByName('zgxm').AsString;//
          if J = 5  then
            QRL.Caption := ADOQuery2.FieldByName('pzrq').AsString;//
          if J = 6  then
            QRL.Caption := ADOQuery2.FieldByName('fzjg').AsString;//
          if J = 7  then
            QRL.Caption := ADOQuery2.FieldByName('yxqz').AsString;//
          K := K + 1 ;
          QRL.Visible := True;
         end;
        ADOQuery2.Next;
        //==========================================================
      end;
      Top := Top + 20;
      with ADOQuery3 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('select * from jcjl where zsbh = :zsbh');
        ADOQuery3.Parameters.Items[0].Value := ADOQuery2.FieldByName('zsbh').AsString;
        Open;
        First;
      end;
      for J := 0 to 3 do
      begin
        QRL := TQRLabel.Create(self);
        QRLName := 'QRL'+ IntToStr( 20 + K );//这是名子,可要可不要;
        QRL.AutoSize :=False;
        QRL.Parent := QRLabel1.Parent;// PageHeaderBand1;
        QRL.Left := xLeft + J * 205 ;
        QRL.Top := Top + 28;
        yTop := QRL.Top ;
        QRL.Height := xHeight;
        QRL.Width := 205;
        QRL.Name := QRLName;
        if J = 0 then
          QRL.Caption := '奖惩项目';//
        if J = 1  then
          QRL.Caption := '奖惩日期';//ADOQuery3.FieldByName('jcrq').AsString;//
        if J = 2  then
          QRL.Caption := '奖惩事由';//ADOQuery3.FieldByName('jcsy').AsString;//
        if J = 3  then
          QRL.Caption := '奖惩实施单位';//ADOQuery3.FieldByName('jcdw').AsString;//
        K := K + 1 ;
      end;
      Top := yTop;
      Top := Top + 17;
      for J := 0 to ADOQuery3.RecordCount - 1 do
      begin
        QRL := TQRLabel.Create(self);
        QRLName := 'QRL'+ IntToStr( 20 + K );//这是名子,可要可不要;
        QRL.AutoSize :=False;
        QRL.Parent := QRLabel1.Parent;// PageHeaderBand1;
        QRL.Left := xLeft + J * 205 ;
        QRL.Top := Top + 17 * J + 8;
        QRL.Height := xHeight;
        QRL.Width := 205;
        QRL.Name := QRLName;
        if J = 0 then
          QRL.Caption := ADOQuery3.FieldByName('jcxm').AsString;//
        if J = 1  then
          QRL.Caption := ADOQuery3.FieldByName('jcrq').AsString;//
        if J = 2  then
          QRL.Caption := ADOQuery3.FieldByName('jcsy').AsString;//
        if J = 3  then
          QRL.Caption := ADOQuery3.FieldByName('jcdw').AsString;//
        K := K + 1 ;
      end;
    end;end.