(Gast)
n/a Beiträge
|
Re: Absolute Database - Memo Text ?
3. Feb 2009, 23:05
Hier mal kurz ein Beispiel aus einem meiner Demoprojekte, wie mithilfe von SQL-Statements und Parametern ein Kundendatensatz eingefügt bzw geändert werden kann (die entsprechenden Querys Kunden_Hinzu bzw Kunden_Aendern liegen im DatenModul DMKunden):
Delphi-Quellcode:
//--NeuDatum und UpdateDatum sind hier NICHT mehr ÜbergabeParameter der Funktion/Procedure
procedure TDMKunden.Kunden_Hinzu(const aKUNR, aNAME, aSTR, aPLZ, aORT,
aLAND, aNOT: String);
begin
KundenHinzu.Close;
//--Kommando vorbereitet?
if not KundenHinzu.Prepared then
begin
KundenHinzu.SQL.Text := 'INSERT INTO Kunden (KundenNr, Datum, Name, '+
'Strasse, Plz, Ort, ' +
'Land, Notizen) ' +
'VALUES(:KUNR, :DATUM, :NAME, ' +
' :STR, :PLZ, :ORT, '+
' :LAND, :NOT )';
//--ParameterTyp festlegen
KundenHinzu.Params[0].DataType := ftString;
KundenHinzu.Params[1].DataType := ftDateTime;
KundenHinzu.Params[2].DataType := ftString;
KundenHinzu.Params[3].DataType := ftString;
KundenHinzu.Params[4].DataType := ftString;
KundenHinzu.Params[5].DataType := ftString;
KundenHinzu.Params[6].DataType := ftString;
KundenHinzu.Params[7].DataType := ftMemo;
KundenHinzu.Prepare;
end;
//--Parameter belegen und ausführen
KundenHinzu.Params[0].Value := aKUNR;
KundenHinzu.Params[1].Value := Now();
KundenHinzu.Params[2].Value := aNAME;
KundenHinzu.Params[3].Value := aSTR;
KundenHinzu.Params[4].Value := aPLZ;
KundenHinzu.Params[5].Value := aORT;
KundenHinzu.Params[6].Value := aLAND;
KundenHinzu.Params[7].Value := aNOT;
KundenHinzu.ExecSQL;
end;
//------------------------------------------------------------
procedure TDMKunden.Kunden_Aendern(
const aNAME, aSTR, aPLZ, aORT, aLAND, aNOT: String;
const aKuNr: String; aUpdate: TDateTime);
begin
KundenAendern.Close;
//--Kommando bereits erstellt?
if not KundenAendern.Prepared then
begin
KundenAendern.SQL.Text := 'UPDATE Kunden SET Name=:NAME '+
', Strasse=:STR'+
', Plz=:PLZ' +
', Ort=:ORT' +
', Land=:LAND' +
', Notizen=:NOT' +
', UpDate=:UPDATE '+
'WHERE KundenNr=:KuNr ';
//--ParameterTyp festlegen
KundenAendern.Params[0].DataType := ftString;
KundenAendern.Params[1].DataType := ftString;
KundenAendern.Params[2].DataType := ftString;
KundenAendern.Params[3].DataType := ftString;
KundenAendern.Params[4].DataType := ftString;
KundenAendern.Params[5].DataType := ftMemo;
KundenAendern.Params[6].DataType := ftDateTime;
KundenAendern.Params[7].DataType := ftString;
KundenAendern.Prepare;
end;
//--jetzt die Parameter belegen und ausführen
KundenAendern.Params[0].Value := aNAME;
KundenAendern.Params[1].Value := aSTR;
KundenAendern.Params[2].Value := aPLZ;
KundenAendern.Params[3].Value := aORT;
KundenAendern.Params[4].Value := aLAND;
KundenAendern.Params[5].Value := aNOT;
KundenAendern.Params[6].Value := aUPDATE; //hier wird das aktuelle Änderungsdatum eingetragen
KundenAendern.Params[7].Value := aKUNR;
KundenAendern.ExecSQL;
end;
//------------------------------------------------------------
aufgerufen werden diese Proceduren bspw. vom KundenDialog:
Delphi-Quellcode:
procedure TFmKundenDialog.BtnOKClick(Sender: TObject);
var istGeandert: bool;
updateDatum: TDateTime;
begin
...
if not KundeNeu then
DMKunden.Kunden_Aendern( EdName.Text,
EdStrasse.Text,
EdPlz.Text,
EdOrt.Text,
EdLand.Text,
MeNotizen.Text, //<< ist eine Memofeld ;)
EdKundenNr.Text,
updateDatum)
else
DMKunden.Kunden_Hinzu(EdKundenNr.Text,
EdName.Text,
EdStrasse.Text,
EdPLZ.Text,
EdOrt.Text,
EdLand.Text,
MeNotizen.Text);
end;
...
Anhand dieser exemplarischen Vorgehensweise kannst dir ja deine Statements anpassen
Gruss Rainer
|