Einzelnen Beitrag anzeigen

raiguen
(Gast)

n/a Beiträge
 
#6

Re: Absolute Database - Memo Text ?

  Alt 3. Feb 2009, 22: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
  Mit Zitat antworten Zitat