Registriert seit: 21. Okt 2004
Ort: Wien
176 Beiträge
Delphi XE7 Architect
|
EAccessViolation ?? Warum
29. Nov 2004, 11:13
Bins schon wieder
Hi Leute
Bekomme o.a. Fehlermeldung weiß aber nicht warum.
Hier mal ein bischen Code:
Dieser Codeblock ist zwar denk ich mal nicht wichtig geb ihn aber dazu:
Delphi-Quellcode:
{**********************************************************************
Datei zu Datensatz speichern
***********************************************************************}
procedure TForm_Schaden.Btn_Datei_hinzufClick(Sender: TObject);
var x,x1: integer;
wahr : boolean;
begin
x1:=0;
wahr:= false;
with OpenDialog_Datei do
begin
Title:='Datei auswählen..';
//Execute;
if Execute=false then //Wenn auf Abbrechen geklickt wird
exit;
Pfad:= OpenDialog_Datei.FileName; //Pfad enthält Pfad + Dateiname
MessageDlg(Pfad,mtWarning,[mbok],0);
end;
x:= length(Pfad);
while wahr <> true do
begin
Dateiname:= copy(Pfad,x,1);
x:= x-1; //immer einen Schritt retour
x1:=x+1; //Anzahl der Schritte merken
if Dateiname='\'then
begin
wahr := true;
Dateiname:= copy(Pfad,x+2,x1); //+2 da sont x\name kopiert wird
MessageDlg(Dateiname,mtInformation,[mbok],0);
Anlage:=true;
end;
end;
end;
In diesem Codeblock kommt fehler:
Delphi-Quellcode:
{**************************************************************************
Schaden speichern
***************************************************************************}
procedure TForm_Schaden.Btn_SpeichernClick(Sender: TObject);
var temp,Kdnnr, SqlString,SchdnrIntern,test: string;
M:Tmemorystream;
begin
if Schaden_Button_ged=true then
begin
SchdnrIntern:= DataModule1.ZQuery_Vertraege_suchen.FieldValues[' SchadennrIntern'];
end
else
begin
if komme_v_schaden=false then
begin
temp:=Form1.DBGrid1Seite1_Vertraege.DataSource.DataSet.FieldByName(' Polizzennummer').AsString;
Kdnnr:= Form1.DBGrid1Seite1_Vertraege.DataSource.DataSet.FieldByName(' Kundennr').AsString;
end
else
begin //Wenn aus Tabsheet 3 (Schäden)
temp:= Form1.DBGridSchaden.DataSource.DataSet.FieldValues[' PolNr'];
Kdnnr:= Form1.DBGridSchaden.DataSource.DataSet.FieldValues[' Kundennr'];
SchdnrIntern:= Form1.DBGridSchaden.DataSource.DataSet.FieldValues[' SchadennrIntern'];
Schaden_Button_ged:=true;
end;
end;
if Edt_Datum.Text=' ' then
Edt_Datum.Text:=' 2000.01.01'
else
begin
if Length(Edt_Datum.Text) < 10 then
begin
MessageDlg(' Datums format falsch!',mtWarning,[mbok],0);
Edt_Datum.SetFocus;
exit;
end;
Edt_Datum.Text:=DatumFormatieren(Edt_Datum.Text);
end;
if Schaden_Button_ged=false then
begin
SqlString:= ' Insert into schaden (PolNr,Schadennr,Sparte,SchadenDatum,Status,Ursache,Verschulden,Schadenref,TelnrRef,' +
' Schadensumme,Bemerkungen,Kundennr) Values ('' '+temp+' '' ,'' '+Edt_SchadenNr.Text+ ' '' ,'' '+
Cmb_Sparte.Text + ' '' ,'' '+Edt_Datum.text+' '' ,'' '+Cmb_Status.Text+' '' ,'' '+Cmb_Ursache.Text+
' '' ,'' '+Cmb_Verschulden.text+ ' '' ,'' '+Edt_Referent.Text + ' '' ,'' '+Edt_TelNrRef.Text+' '' ,'' '+
Edt_Schadensumme.Text+ ' '' ,'' '+Memo_Bemerkungen.Text+' '' ,'' '+Kdnnr+ ' '' )';
end
else
begin
SqlString:= ' Update kundendaten.schaden Set '+
' Schadennr ='' ' +Edt_SchadenNr.Text+ ' '' ,'+
' Sparte = '' '+ Cmb_Sparte.Text + ' '' ,'+
' SchadenDatum = '' ' + Edt_Datum.text+' '' ,'+
' Status = '' ' + Cmb_Status.Text+' '' ,'+
' Ursache = '' ' + Cmb_Ursache.Text+' '' ,'+
' Verschulden = '' ' + Cmb_Verschulden.Text +' '' ,'+
' Schadenref = '' ' + Edt_Referent.Text +' '' ,'+
' TelnrRef = '' ' + Edt_TelNrRef.Text +' '' ,'+
' Schadensumme = '' ' + Edt_Schadensumme.Text +' '' ,'+
' Bemerkungen = '' '+ Memo_Bemerkungen.Text +' '' '+
' where SchadennrIntern = '' ' + SchdnrIntern +' '' ;';
Schaden_Button_ged:= true;
end;
MEINSQL.SQL_Manueler_String(SqlString);
if Anlage=true then
begin
////In DB speichern/////
{ with DataModule1.ZQuery_Sonstiges do
begin
sql.Free;
sql.Add('Insert into schadendateianlagen (Kdnnr,DateiName,Pfad,Schadennrint)'+
'Values ('''+Kdnnr+ ''','''+Dateiname+''','''+'O:\DateiKunden\'+
''',LAST_INSERT_ID() )');
ExecSQL;
end;}
test:= ' Select Schadennrint from schaden where Schadennr like '' '+Edt_SchadenNr.Text+' '' ';
//MessageDlg(test,mtWarning,[mbok],0);
with DataModule1.ZQuery_Sonstiges do
begin
sql.Free;
sql.Add(test); //HIER ENTSTEHT DIE FEHLERMELDUNG!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
open;
end;
MessageDlg(DataModule1.ZQuery_Sonstiges.FieldByName(' Schadennrint').AsString,mtWarning,[mbok],0);
///Datei kopieren
M:=TMemorystream.Create;
M.LoadFromFile(Pfad);
M.SaveToFile(' O:\DateiKunden\'+Dateiname);
M.Free;
anlage:=false;
end;
Form_Schaden.close;
if Schaden_Button_ged=false then
form1.StatusBarSeite1.Panels[2].Text:=' Schaden zu Pol.Nr.: '+temp+' wurde angelegt'
else
Form1.StatusBarSeite1.Panels[2].Text:= ' Schaden wurde upgedatet';
MEINSQL.SQL_Sel_Abfragen(' kdaten',' Kundennr',Kdnnr); //nochmals abfragen da sonst DbGrid nicht aktualisiert wird.
form1.show;
end;
|