AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DB param explizit auf 0 setzen
Thema durchsuchen
Ansicht
Themen-Optionen

DB param explizit auf 0 setzen

Offene Frage von "mannewolff"
Ein Thema von mannewolff · begonnen am 16. Mai 2010 · letzter Beitrag vom 19. Mai 2010
 
mannewolff

Registriert seit: 21. Okt 2008
48 Beiträge
 
RAD-Studio 2009 Arc
 
#7

Re: DB param explizit auf 0 setzen

  Alt 16. Mai 2010, 13:48
So würde ich es auch machen, funktioniert aber nicht. Zur Laufzeit gibt es eben genau die Fehlermeldung, dass der Parameter nicht gesetzt wurde. Mein SQL-String sieht wie folgt aus:

Delphi-Quellcode:
procedure TPersistenz.createInsertQuery();
var
  stringList : TStringList;
  i : Integer;
  sql : String;
begin
   stringList := getMETA(true);
   sql := 'INSERT into ' + getTableName() + ' (';

   // Alle Attribute der Fachklasse
   for i := 0 to stringList.Count -1 do
   begin
      sql := sql + stringList.Strings[i] + ', ';
   end;

   // Zusätzlich die Defaultattribute
   sql := sql + 'id, active, createuser, createdate, modifyuser, modifydate, uniqueString, version) ';
   sql := sql + 'VALUES (';

   // Alle Parameterwerte der Fachklasse
   for i := 0 to stringList.Count -1 do
   begin
      sql := sql + ':' + stringList.Strings[i] + ', ';
   end;

   // Zusätzlich die Defaultparameter
   sql := sql + ':id, :active, :createuser, :createdate, :modifyuser, :modifydate, :uniqueString, :version)';

   query.SQL.Add(sql);
end;
Der Code ist in der Superklasse TPersistenz und gilt für alle Objekte, die persistiert werden können. getMeta() wird dann von den Fachklassen überschrieben und liefert die Liste der Attribute. Die Fachklassen selbst werden generiert, das heißt getMeta() liefert immer (!) alle Attribute der Klasse.

Ich habe jetzt den Generator angepasst, dass getMeta() unter bestimmten Umständen die Null-ForeignKeys nicht liefert. Ich zeichne diese ForeignKeys mit NFK_ aus (im Gegensatz zu FK_ Keys die nicht null sein dürfen) und mein Generatortemplate sieht dann so aus:

Delphi-Quellcode:
(*********************************************************************
Gibt die META-Daten für diese Klasse zurück.
*********************************************************************)

function @OBJNAME.getMETA(modifyList : boolean = false) : TStringList;
begin
  ...
    @foreach @Attribute @do
      @if(copy @Attribute.Identifier 1 3 == NFK)
      if (@Attribute.Identifier <> 0) then
      @endif
      stringList.Add('@Attribute.Identifier');
    @EndForEach
  ..
end;
Es wird also in den Fall modifyList ein Attribut nur der Stringlist hinzugefügt wenn es nicht mit NFK anfängt oder wenn es eub NFK Attribut ist und es nicht 0 ist.,
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz