我在做一个三层的系统时(用webconnetion连服务端),编译能通过,运行是说:Project mdiapp.exe raised exception class EAccessViolation with message 'Access violation at address 0053A240 in modul 'mdiapp.exe', Read of address 0000006C', Process stopped. Use Step or Run to continue.
我是新手,大家能不能帮我看看,大概是什么问题啊,我错在什么地方?

解决方案 »

  1.   

    关闭delphi,重新打开项目,再运行
      

  2.   

    好的,源码太长了,我把出现问题的那部分贴出来。
    procedure TFrm_Main.Menu_StatisticClick(Sender: TObject);
    var
        child : TForm_Query;
    begin
        child := TForm_Query.Create(Application); //此处提示有问题。
        with child do
        begin
           caption:='°´×ʽðͳ¼Æ';
            height:=getheight(495);
               width:=getwidth(600);
               left:=getleft(600);
               top:=gettop(495);   
        end;
    end;
      

  3.   

    把TForm_Query的FormCreate和Create方法贴出来。
      

  4.   

    我是新手,不知道你讲的是什么,是不是要把TForm_Query的源文件贴出来啊?谢谢
      

  5.   

    关闭delphi,
    再运行,
    应该可以,
    你试试?
      

  6.   

    procedure FormClose(Sender: TObject; var Action: TCloseAction);  private
        { Private declarations }
      public
        { Public declarations }
        procedure Refresh_CB_ChargeItem();
      end;
    Const
    Orignwidth=1024;
    Orignheight=768;
    var
      Form_Query: TForm_Query;
      Param_Capital_Class,Param_Charge_Class :String;
      Param_Charge_Level : String;
      Param_ZSDW:String;
      Param_Charge_SystemCode,Param_Charge_OrgCode:String;
      Param_ChargeItem : String;
      Main_SQL,Select_SQL,From_SQL,Where_SQL,GroupOrder_SQL:String;
      SQL_Description : TStringList;
    implementation
    uses Unit_Show,Help,DMFrm;
    {$R *.DFM}
    procedure TForm_Query.FormCreate(Sender: TObject);
    begin
        {CK_SYSCODE.visible := false;
        CK_ORGCODE.Visible := false;
        }
        KaiPiao_TimeTo.DateTime := now;
        KaiPiao_TimeFrom.DateTime := IncMonth(now,-1);
        UP_TimeTo.DateTime := now;
        UP_TimeFrom.DateTime := IncMonth(now,-1);
        {with CB_Capital_Class do
        begin
            Items.Append('01 »ù½ð£¨×ʽð`¸½¼Ó£©');
            Items.Append('02 ÐÐÕþÐÔÊÕ·Ñ');
            Items.Append('10 Ô¤ËãÄÚ×ʽð');
            Items.Append('11 Ô¤ËãÄڵĻù½ð£¨×ʽð`¸½¼Ó£©');
            Items.Append('12 Ô¤ËãÄÚµÄÐÐÕþÐÔÊÕ·Ñ');
            Items.Append('13 Ë°½ð');
            Items.Append('20 Ô¤ËãÍâ×ʽð');
            Items.Append('21 Ô¤ËãÍâµÄ»ù½ð£¨×ʽð`¸½¼Ó£©');
            Items.Append('22 Ô¤ËãÍâµÄÐÐÕþÐÔÊÕ·Ñ');
            Items.Append('23 ÊÂÒµÐÔÊÕ·Ñ');
            Items.Append('24 ÆäËûÊÕÈë');
            Items.Append('30 ¾­ÓªÐÔÊÕ·Ñ');
            Items.Append('40 µ¥Î»ÍùÀ´¿îÏî');
            Items.Append('50 Éϼ¶²¹ÖúÊÕÈë');
        end;
        }
        with CB_Charge_Level do
        begin
            Items.Append('004 ÏØÊм¶');
            Items.Append('003 µØÊм¶');
            Items.Append('002 Ê¡¼¶');
            Items.Append('001 ¹ú¼Ò¼¶(¼Æί)');
            items.append('000 ¹ú¼Ò¼¶(¹úÎñÔº)');
        end;
        with ChargeData.pub_ClientDataSet do
        begin
    //        Close;
    //        SQL.Clear;
    //        SQL.ADD('Select LTRim(RTrim(CharCode)) + ''   ''  + LTRim(RTrim(CharName)) Charges from ChargeChar ');
    //        Open;
    //        First;
            Close;
            CommandText:='Select LTRim(RTrim(CharCode)) + ''   ''  + LTRim(RTrim(CharName)) Charges from ChargeChar ';
            Open;
            First;
            While not Eof do
            begin
                CB_Charge_Class.Items.Append(FieldByName('Charges').AsString);
                Next;
            end;//        Close;
    //        SQL.Clear;
    //        SQL.ADD('Select LTRim(RTrim(MoneyCode)) + ''   ''  + LTRim(RTrim(MoneyName)) Capitals from MoneyChar');
    //        Open;
    //        First;
            Close;
            CommandText:='Select LTRim(RTrim(MoneyCode)) + ''   ''  + LTRim(RTrim(MoneyName)) Capitals from MoneyChar';
            Open;
            First;
            While not Eof do
            begin
                CB_Capital_Class.Items.Append(FieldByName('Capitals').AsString);
                Next;
            end;//        Close;
    //        SQL.Clear;
    //        SQL.Add('Select LTrim(RTrim(SysCode)) + ''   '' + LTrim(RTrim(SysName)) ZSDW from System Where Len(LTrim(RTrim(SysCode))) = 2 order by ZSDW ');
    //        Open;
    //        First;
            Close;
            CommandText:='Select LTrim(RTrim(SysCode)) + ''   '' + LTrim(RTrim(SysName)) ZSDW from System Where Len(LTrim(RTrim(SysCode))) = 2 order by ZSDW ';
            Open;
            First;
            while not Eof do
            begin
                CB_ZSDW.Items.Append(FieldByName('ZSDW').AsString);
                Next;
            end;//        Close;
    //        SQL.Clear;
    //        SQL.ADD('Select LTrim(RTrim(SysCode)) + ''   '' + LTrim(RTrim(SysName)) SysCodes from System  where  SysCode In (Select Distinct Syscode from ChargeItem) ORDER BY SysCodes');
    //        Open;
    //        First;
            Close;
            CommandText:='Select LTrim(RTrim(SysCode)) + ''   '' + LTrim(RTrim(SysName)) SysCodes from System  where  SysCode In (Select Distinct Syscode from ChargeItem) ORDER BY SysCodes';
            Open;
            First;
            while not Eof do
            begin
                CB_Charge_SystemCode.Items.Append(FieldByName('SysCodes').AsString);
                Next;
            end;
            Close;
        end;
        {
            SQL.Clear;
            SQL.ADD('Select LTrim(RTrim(OrgCode)) + ''  '' + LTrim(RTrim(OrgName)) OrgCodes from Orglicence ORDER BY OrgCodes');
            Open;
            First;
            While not Eof do
            begin
                CB_Charge_OrgCode.Items.Append(FieldByName('OrgCodes').AsString);
                Next;
            end;
            Close;        SQL.Clear;
            SQL.ADD('Select distinct CharCode from ChargeItem');
            Open;
            First;
            while not Eof do
            begin
                if FieldByName('CharCode').Asstring = '001' then
                    CB_ZSDW.Items.Append('001  Êм¶Õ÷ÊÕµ¥Î»');
                if FieldByName('CharCode').Asstring = '002' then
                    CB_ZSDW.Items.Append('002  Õò¼¶Õ÷ÊÕµ¥Î»');
                Next;
            end;
            Close;
        end;
        }
        CB_Capital_Class.ItemIndex := 0;
        CB_Charge_Class.ItemIndex := 0;
        CB_Charge_Level.ItemIndex := 2;
        CB_ZSDW.ItemIndex := 0;
        CB_Charge_SystemCode.ItemIndex := 0;    {CB_Charge_SystemCode.ItemIndex := 0;
        CB_Charge_OrgCode.ItemIndex := 0;
        CB_ZSDW.ItemIndex := 0;
        }
        Param_Charge_Class := Copy(CB_Charge_Class.Text,1,Pos(' ',CB_Charge_Class.Text)-1);
        Param_Capital_Class := Copy(CB_Capital_Class.Text,1,Pos(' ',CB_Capital_Class.Text)-1);
        Param_Charge_Level := Copy(CB_Charge_Level.Text,1,Pos(' ',CB_Charge_Level.Text)-1);
        Param_ZSDW := Copy(CB_ZSDW.Text,1,Pos(' ',CB_ZSDW.Text)-1);
        Param_Charge_SystemCode := Copy(CB_Charge_SystemCode.Text,1,Pos(' ',CB_Charge_SystemCode.Text)-1);
        Param_Charge_OrgCode := '';
        Param_ChargeItem := '';
        
    scaled:=true;
    if(screen.width<>orignwidth)then
    begin
    height:=longint(height)*longint(screen.height) div orignheight;
    width:=longint(width)*longint(screen.width) div orignwidth;
    scaleby(screen.width,orignwidth);
    end;
    end;
      

  7.   


    procedure TForm_Query.CB_Charge_SystemCodeChange(Sender: TObject);
    begin
        Param_Charge_SystemCode := Copy(CB_Charge_SystemCode.Text,1,Pos(' ',CB_Charge_SystemCode.Text)-1);
        if (CK_Charge_SystemCode.Checked and CK_Charge_OrgCode.Checked) then
        begin
          //CK_Charge_OrgCodeClick(Self);
          CK_Charge_OrgCodeClick(Self);
        end;
    end;procedure TForm_Query.CB_Charge_OrgCodeChange(Sender: TObject);
    begin
        Param_Charge_OrgCode := Copy(CB_Charge_OrgCode.Text,1,Pos(' ',CB_Charge_OrgCode.Text)-1);
    end;procedure TForm_Query.CB_ZSDWChange(Sender: TObject);
    begin
       Param_ZSDW := Copy(CB_ZSDW.Text,1,Pos(' ',CB_ZSDW.Text)-1);
       //Param_ZSDW := CB_ZSDW.ItemIndex;
       if (CK_ZSDW.Checked and CK_Charge_OrgCode.Checked) then
       begin
          //CK_Charge_SystemCodeClick(Self);
          CK_Charge_OrgCodeClick(Self);
       end;
    end;procedure TForm_Query.CK_ZSDWClick(Sender: TObject);
    begin
    {if CK_ZSDW.Checked then
    begin
       with Data.Pub_Query do
       begin
            Close;
            SQL.Clear;
            SQL.ADD('Select distinct CharCode from ChargeItem');
            Open;
            First;
            CB_ZSDW.Clear;
            while not Eof do
            begin
                if FieldByName('CharCode').Asstring = '001' then
                    CB_ZSDW.Items.Append('001  &Ecirc;&ETH;&frac14;&para;&Otilde;÷&Ecirc;&Otilde;&micro;&yen;&Icirc;&raquo;');
                if FieldByName('CharCode').Asstring = '002' then
                    CB_ZSDW.Items.Append('002  &Otilde;ò&frac14;&para;&Otilde;÷&Ecirc;&Otilde;&micro;&yen;&Icirc;&raquo;');
                Next;
            end;
            Close;
       end;
       CB_ZSDW.ItemIndex := 0;
       Param_ZSDW := Copy(CB_ZSDW.Text,1,Pos(' ',CB_ZSDW.Text)-1);
    end
    else
    begin
       CB_ZSDW.Clear;
       Param_ZSDW := '';
    end;
    CK_Charge_SystemCodeClick(Self);
    CK_Charge_OrgCodeClick(Self);
    }
        //Param_ZSDW := CB_ZSDW.ItemIndex;
        Param_ZSDW := Copy(CB_ZSDW.Text,1,Pos(' ',CB_ZSDW.Text)-1);
        if (CK_Charge_OrgCode.Checked) then
        begin
          CK_Charge_OrgCodeClick(Self);
        end;
    end;procedure TForm_Query.CK_Charge_SystemCodeClick(Sender: TObject);
    begin
        {if CK_Charge_SystemCode.Checked then
        begin
            with Data.Pub_Query do
            begin
                Close;
                SQL.Clear;
                if Param_ZSDW <> '' then
                    SQL.ADD('Select LTrim(RTrim(SysCode)) + ''   '' + LTrim(RTrim(SysName)) SysCodes from System  where  SysCode In (Select Distinct Syscode from ChargeItem Where CharCode = ''' +  Param_ZSDW + ''') ORDER BY SysCodes')
                else
                    SQL.ADD('Select LTrim(RTrim(SysCode)) + ''   '' + LTrim(RTrim(SysName)) SysCodes from System  where  SysCode In (Select Distinct Syscode from ChargeItem ) ORDER BY SysCodes');
                Open;
                First;
                CB_Charge_SystemCode.Clear;
                while not Eof do
                begin
                    CB_Charge_SystemCode.Items.Append(FieldByName('SysCodes').AsString);
                    Next;
                end;
                Close;
            end;
            CB_Charge_SystemCode.ItemIndex := 0;
            Param_Charge_SystemCode := Copy(CB_Charge_SystemCode.Text,1,Pos(' ',CB_Charge_SystemCode.Text)-1);
        end
        else
        begin
            CB_Charge_SystemCode.Clear;
            Param_Charge_SystemCode := '';
        end;
        CK_Charge_OrgCodeClick(Self);
        }
        Param_Charge_SystemCode := Copy(CB_Charge_SystemCode.Text,1,Pos(' ',CB_Charge_SystemCode.Text)-1);
        if (CK_Charge_OrgCode.Checked) then
        begin
          CK_Charge_OrgCodeClick(Self);
        end;
    end;procedure TForm_Query.CK_Charge_OrgCodeClick(Sender: TObject);
    var SqlStr,where:String;
    begin
        if CK_Charge_OrgCode.Checked then
        begin
            SqlStr := 'Select LTrim(RTrim(OrgCode)) + ''  '' + LTrim(RTrim(OrgName)) OrgCodes from Orglicence';
            Where := ' Where ';
            With chargeData.Pub_clientdataset do
            begin
    //            SQL.Clear;
             close;
                {
                if Not ((Param_ZSDW = '') and (Param_Charge_SystemCode = '')) then
                begin
                    Where := ' Where SubSysCode In (Select distinct SysCode from ChargeItem where ';
                    if Param_ZSDW <> '' then
                        Where := Where + 'CharCode = ''' + Param_ZSDW + '''';                if Param_Charge_SystemCode <> '' then
                        if Param_ZSDW <> '' then
                            Where := Where + ' and SysCode = ''' + Param_Charge_SystemCode + ''''
                        else
                            Where := Where + ' SysCode = ''' + Param_Charge_SystemCode + '''';
                    Where := Where + ')';
                end;
                }
                if CK_ZSDW.Checked then
                begin
                    //if Param_ZSDW = 1 then Where := Where  + 'SysCode = ''00''  ';
                    //if Param_ZSDW = 2 then Where := Where  + 'SysCode <> ''00''  ';
                    Where := Where + ' SubString(OrgCode,1,2) = ''' + Param_ZSDW  + '''';
                end;
                if CK_Charge_SystemCode.Checked then
                begin
                    if CK_ZSDW.Checked then Where := Where + ' And ';
                    Where := Where + ' SubString(OrgCode,3,3) = ''' + Param_Charge_SystemCode + '''';
                end;
                if Where = ' Where ' then Where := '';
                SqlStr := SqlStr + Where + ' ORDER BY OrgCodes ';
                SQLShow('debug.txt',sqlstr);
    //            SQL.ADD(SqlStr);
                commandtext:=sqlstr;
                Open;
                First;
                CB_Charge_OrgCode.Clear;
                While not Eof do
                begin
                    CB_Charge_OrgCode.Items.Append(FieldByName('OrgCodes').AsString);
                    Next;
                end;
                Close;
            end;
            CB_Charge_OrgCode.ItemIndex := 0;
            Param_Charge_OrgCode := Copy(CB_Charge_OrgCode.Text,1,Pos(' ',CB_Charge_OrgCode.Text)-1);
        end
        else
        begin
            CB_Charge_OrgCode.Clear;
            Param_Charge_OrgCode := '';
        end;
    end;procedure TForm_Query.Btn_CloseClick(Sender: TObject);
    begin
        self.release;
    end;
      

  8.   

    下面还有很长,算了,我估计传参数的地方不对,我就把那部分贴出来。
        if CK_KaiPiao_Time.checked then
        begin
    //        Data.Pub_Query.ParamByName('KPFrom').ASDateTime := KaiPiao_TimeFrom.Date;
    //        Data.Pub_Query.ParamByName('KPTo').AsDateTime := KaiPiao_TimeTo.Date;
            chargedata.pub_clientdataset.params.ParamByName('KPFrom').ASDateTime := KaiPiao_TimeFrom.Date;
            chargedata.pub_clientdataset.params.ParamByName('KPTo').AsDateTime := KaiPiao_TimeTo.Date;
        end;
        if CK_UP_Time.Checked then
        begin
    //        Data.Pub_Query.ParamByName('UPFrom').ASDateTime := UP_TimeFrom.Date;
    //        Data.Pub_Query.ParamByName('UPTo').AsDateTime := UP_TimeTo.Date;
            chargedata.pub_clientdataset.params.ParamByName('UPFrom').ASDateTime := UP_TimeFrom.Date;
            chargedata.pub_clientdataset.params.ParamByName('UPTo').AsDateTime := UP_TimeTo.Date;
        end;