unit TotalGBRDM;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGridEh, StdCtrls, Mask, DBCtrlsEh, ExtCtrls;type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    GREnterprisename: TEdit;
    GRGovernor: TEdit;
    GREnterpriseclass: TEdit;
    GREntrolmoneybegin: TEdit;
    Label5: TLabel;
    GREntrolmoneyend: TEdit;
    GRHolddatebegin: TDBDateTimeEditEh;
    Label7: TLabel;
    GRHolddateend: TDBDateTimeEditEh;
    GRCbutton: TButton;
    CheckBox1: TCheckBox;
    GuerdonreportEh1: TDBGridEh;
    GRCEnterprisename: TCheckBox;
    GRCGovernor: TCheckBox;
    GRCEnterpriseclass: TCheckBox;
    GRCEntrolmoney: TCheckBox;
    GRCHolddate: TCheckBox;
    Button1: TButton;
    procedure GRCEnterprisenameClick(Sender: TObject);
    procedure GRCGovernorClick(Sender: TObject);
    procedure GRCEnterpriseclassClick(Sender: TObject);
    procedure GRCEntrolmoneyClick(Sender: TObject);
    procedure GRCHolddateClick(Sender: TObject);
    procedure GRCbuttonClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation
uses  unit1;{$R *.dfm}procedure TForm1.GRCEnterprisenameClick(Sender: TObject);
begin
  if GRCEnterprisename.Checked =true then
     GRENterprisename.Enabled :=true
     else
     begin
     GREnterprisename.Text :='';
     GREnterprisename.Enabled :=false;
     end;
end;procedure TForm1.GRCGovernorClick(Sender: TObject);
begin
   if GRCGovernor.Checked =true then
       GRGOvernor.Enabled :=true
       else
       begin
       GRGOvernor.Text :='';
       GRGovernor.Enabled :=false;
       end;
       
end;procedure TForm1.GRCEnterpriseclassClick(Sender: TObject);
begin
    if GRCENterpriseclass.Checked =true then
       GREnterpriseclass.Enabled :=true
       else
       begin
       GREnterpriseclass.Text :='';
       GREnterpriseclass.Enabled :=false;
       end;
       
end;procedure TForm1.GRCEntrolmoneyClick(Sender: TObject);
begin
   if GRCEntrolmoney.Checked =true then
      begin
      GREntrolmoneybegin.Enabled :=true;
      GREntrolmoneyend.Enabled :=true;
      end
      else
      begin
      GREntrolmoneybegin.Text :='';
      GREntrolmoneyend.Text :='';
      GREntrolmoneybegin.Enabled :=false;
      GREntrolmoneyend.Enabled :=false;
      end;
      
end;procedure TForm1.GRCHolddateClick(Sender: TObject);
begin
   if GRCHolddate.Checked =true then
     begin
        GRHolddatebegin.Enabled :=true;
        GRHolddateend.Enabled :=true;
        end
        else
        begin
        GRHolddatebegin.Text :='';
        GRHolddateend.Text :='';
        GRHolddatebegin.Enabled :=false;
        GRHolddateend.Enabled :=false;
        end;
        
end;procedure TForm1.GRCbuttonClick(Sender: TObject);
var str:string;
    Ename:string;
    Eclass:string;
    Egovernor:string;
    Eholddate:string;
    Eentrolmoney:string;
    str1:string;
    str2:string;
    str3:string;
begin
    str1:='insert into Tpzjs execute pzjs';
    datamodule1.TGuerdonDataSet1.Close ;
    datamodule1.TGuerdonDataSet1.CommandText :=str1;
    datamodule1.TGuerdonDataSet1.Execute ;
    str2:='insert into Tbnsd execute bnsd';
    datamodule1.TGuerdonDataSet2.Close ;
    datamodule1.TGuerdonDataSet2.CommandText:=str2;
    datamodule1.TGuerdonDataSet2.Execute ;
    str3:='insert into Tbnjl execute bnjl';
    datamodule1.TGuerdonDataSet3.Close ;
    datamodule1.TGuerdonDataSet3.CommandText :=str3;
    datamodule1.TGuerdonDataSet3.Execute ;
    str:='select a.enterpriseid,a.enterprisename,b.vrealmoney,b.ovrealmoney,c.vaz,d.vbzjs,e.rvaz,f.vaguerdon,';
    str:=str+'b.srealmoney,b.osrealmoney,c.saz ,d.sbzjs,e.rsaz,f.saguerdon,';
    str:=str+'b.irealmoney,b.oirealmoney,c.eiz,d.lbzjs,e.reiz,f.eiguerdon,b.erealmoney,b.oerealmoney,c.elz,d.ebzjs,e.relz,f.elguerdon';
    str:=str+' from basicinfo a,bili b,bzview c,Tpzjs d,Tbnsd e,Tbnjl f,correlation g';
    str:=str+' where a.enterpriseid=b.enterpriseid and a.enterpriseid=c.enterpriseid and a.enterpriseid=d.enterpriseid and a.enterpriseid=e.enterpriseid and a.enterpriseid=f.enterpriseid and a.enterpriseid=g.enterpriseid';
    if GRCEnterprisename.Checked =true then
        begin
        Ename:='  and enterprisename='+''''+GREnterprisename.Text+'''';
        str:=str+Ename;
        end
        else
        Ename:='';
   if GRCGovernor.Checked =true then
        begin
        EGOvernor:='  and governor='+''''+GRGovernor.Text+'''';
        str:=str+EGovernor;
        end
        else
        EGovernor:='';
   if GRCEnterpriseclass.Checked =true then
       begin
        EClass:='  and enterpriseclass='+''''+GRenterpriseclass.Text+'''';
        str:=str+Eclass;
        end
        else
        EClass:='';
   if GRCentrolmoney.Checked =true then
      begin
        Eentrolmoney:='  and entrolmoney between'+''''+GREntrolmoneybegin.text+''''+'and'+''''+GREntrolmoneyend.text+'''';
        str:=str+Eentrolmoney;
        end
        else
        Eentrolmoney:='';
   if GRCholddate.Checked =true then
      begin
       Eholddate:='  and holddate between'+''''+GRholddatebegin.Text+''''+'and'+''''+GRholddateend.Text+'''';
       str:=str+eHolddate;
       end
       else
       Eholddate:='';
datamodule1.TGuerdonDataSet.Close;
datamodule1.TGuerdonDataSet.CommandText :=str;
datamodule1.TGuerdonDataSet.Execute ;
datamodule1.TGuerdonDataSet.Active:=true;
with  Guerdonreporteh1 do
   begin
  columns[0].FieldName:='enterpriseid';
  columns[1].FieldName:='enterprisename';
  columns[2].FieldName:='vrealmoney';
  columns[3].FieldName:='ovrealmoney';
  columns[4].FieldName:='vaz';
  columns[5].FieldName:='vbzjs';
  columns[6].FieldName:='rvaz';
  columns[7].FieldName:='vaguerdon';
  columns[8].FieldName:='srealmoney';
  columns[9].FieldName:='osrealmoney';
  columns[10].FieldName:='saz';
  columns[11].FieldName:='sbzjs';
  columns[12].FieldName:='rsaz';
  columns[13].FieldName:='saguerdon';
  columns[14].FieldName:='irealmoney';
  columns[15].FieldName:='oirealmoney';
  columns[16].FieldName:='eiz';
  columns[17].FieldName:='ibzjs';
  columns[18].FieldName:='reiz';
  columns[19].FieldName:='eiguerdon';
  columns[20].FieldName:='erealmoney';
  columns[20].FieldName:='oerealmoney';
  columns[21].FieldName:='elz';
  columns[22].FieldName:='ebzjs';
  columns[23].FieldName:='relz';
  columns[24].FieldName:='elguerdon';
  end;
end;end.

解决方案 »

  1.   

    我曾被这问题搞晕过,浪废了3天,但现在已OK了。
    你只要将TABLE的INDEXFILE清空就行了 。 
      70分给我,你可不能言而无信。
      

  2.   

    楼上的,我用的是query 哪来的table,请在帮忙想想!
      

  3.   

    写的这么多怎么看啊!
    不过你看看你的程序里什么地方对查询出的数据集做修改了!
    如果修改的话用的是EDIT,INSERT OR POST的话就要把你的Query的requestlive
    属性设为True。但不建议这样修改数据,最好用Update的SQL语句。
      

  4.   

    既然是Read Only 那你跟踪看看在什么地方出错的,看出错的时候Query的状态是什么,如果是浏览状态的话,说明你的状态不对!
      

  5.   

    with  Guerdonreporteh1 do
    那里出错了!程序就停在那里!请指教!
      

  6.   

    试一下,是不是有修改 MS SQL 上的表的权限。
    0A===============================================================
    笑眯眯的看着你
      

  7.   

    我数了数,你的数据是从七个表里查出来的。BDE里的query默认是只读的,对于较为简单的查询把requestlive属性设为True可以修改数据,但如果是复杂的查询,BDE则无法处理,所以无论你怎么做,Delphi都会把requestlive属性改回False;如果非要在一个查询里修改数据,建议你使用ADO,ADO可以处理复杂查询的更新问题,BDE则无能为力。
      

  8.   

    这样的话就没办法了,只有再加一个query,专门负责使用update、insert等更新数据的操作了。
      

  9.   

    当用户需要修改或者添加信息时就弹出一个窗口接收信息,然后通过update,insert来更新数据,更新完再datamodule1.TGuerdonDataSet.requery来刷新数据。
      

  10.   

    看了这个帖子后,不到四分之一柱香的功夫,本公子心中就有了答案。
    1。★★★加一个updateSql1.
       把当事qrybm的requestlive属性设为True;cachedupdate属性设为True;
       updateobject设为updateSql1;
    2。插入数据:
       procedure TfrmGD.sbtnAddClick(Sender: TObject);
       begin
         qrybm.Insert;
       end;
       保存插入的数据 
        begin
          qryadd.SQL.Clear;
          qryadd.SQL.Add('insert into gbinfo');
          qryadd.SQL.Add(fgpbh,frname,frsex,fsfno,fbh,fdwbh,finige,frgdate,fbackge,fbackdate,NOWGE)');
          qryadd.SQL.Add('values');
          qryadd.SQL.Add('('''+dbedit1.text+''','''+dbedit2.text+''','''+dbedit3.text+''','''+dbedit4.text+''','''+dbedit5.Text+''','''+dbedit6.text+''','''+dbedit7.text+''','''+dbedit8.text+''','''+dbedit9.text+''','''+dbedit10.text+''','''+dbedit7.Text+''')');
          qryadd.ExecSQL;
          end;
    如果还不能搞定,就在网上找我吧!QQ:16349893
    E-mail:[email protected]