-
Forum: Datenbanken
Delphi
by MrSpock,
30. Sep 2002
Hallo m-werk,
was ich meine ist folgendes. Du hast ja bereits ein Programm, was auf die Tabelle ADOSFinanzierung mit der alten Struktur zugreift. Diese alten Felder hast du wahrscheinlich über einen Doppelklick auf das Tabellensymbol als TField - Objekte eingefügt. Wenn du jetzt neue Felder hinzufügst, werden diese zunächst korrekt der Tabelle hinzugefügt. Das Programm, was ich oben...
-
Forum: Datenbanken
Delphi
by MrSpock,
26. Sep 2002
Hallo m-werk,
ich vermute, du hast die "alten" Felder der Tabelle über den Feldeditor in das Programm eingefügt. Ist das so?
-
Forum: Datenbanken
Delphi
by MrSpock,
25. Sep 2002
Hallo m-werk,
ich glaube ich habe den Fehler gefunden. Die Tabelle muss natürlich für die Abfrage FindField geöffnet sein, darf aber dann für das Hinzufügen der Felder nicht geöffnet sein, also:
In der Schleife:
DM.ADOSFinanzierung.Open;
if DM.ADOSFinanzierung.FindField(FeldName)=NIL then
begin
DM.ADOSFinanzierung.Close;
-
Forum: Datenbanken
Delphi
by MrSpock,
25. Sep 2002
Hallo m-werk,
das ist verwunderlich, weil wir ja extra die Abfrage FindField benutzen, um ein Feld nicht mehrfach hinzuzufügen.
Ich könnte mir aber vostellen, dass es da ein Problem gibt, weil ja die ADOFinanzierung Tabelle geöffnet ist, und du dann versuchst ein Feld hinzuzufügen. Versuche doch einmal:
if DM.ADOSFinanzierung.FindField(FeldName)=NIL then
begin
...
-
Forum: Datenbanken
Delphi
by MrSpock,
25. Sep 2002
Hallo m-werk,
kannste einfach erweitern :mrgreen: .
-
Forum: Datenbanken
Delphi
by MrSpock,
24. Sep 2002
Hallo m-werk,
wenn die Query nur durch Drücken des Schalters Button3 ausgeführt wird, wird der String dort überschrieben. Dann kann das SQL Feld leer bleiben (macht aber auch nix, wenn es nicht leer ist :mrgreen: ).
-
Forum: Datenbanken
Delphi
by MrSpock,
24. Sep 2002
Hallo m-werk,
guckst du hier:
procedure TKundendaten.Button3Click(Sender: TObject);
const
FeldName : array of String = ('Rueckzahlung', 'Kreditwaehrung', 'Zinssatz1', 'Zinssatzgebunden');
InsertStr : array of String =
('ALTER TABLE Kinder ADD XY NUMERIC',
-
Forum: Datenbanken
Delphi
by MrSpock,
23. Sep 2002
Hallo m-werk,
wenn du InsertStr lokal deklarierst wie in einem Code gezeigt, dann musst du natürlich auch die Werte für InsertStr bis InsertStr setzen. Du könntest das ebenfalls als typisierte Konstante machen. Oder durch 4 Zuweisungen, wie irgendwo oben beschrieben.
-
Forum: Datenbanken
Delphi
by MrSpock,
20. Sep 2002
Hallo m-werk,
OK, war mein Fehler. FindField gibt kein True oder False zurück, sondern das Feld, sofern es gefunden wurde, sonst NIL.
Der Code muss also so aussehen:
...
if DataModule2.ADOSFinanzierung.FindField(FeldName)=NIL then
...
-
Forum: Datenbanken
Delphi
by MrSpock,
19. Sep 2002
Hallo m-werk,
irgendwo im Sichtbereich der Stelle, an der du darauf zugreifst.
Also z.B.:
procedure TForm1.Button1Click(Sender: TObject);
const
FeldName : array of String = ('Kinder', 'Geld', 'BlaBla', 'Hallo');
-
Forum: Datenbanken
Delphi
by MrSpock,
19. Sep 2002
Hallo m-werk,
genauso wie bei InsertStr.
Du kannst es als Variable oder als typisierte Konstante deklarieren.
Also z.B.:
const
-
Forum: Datenbanken
Delphi
by MrSpock,
19. Sep 2002
Hallo m-werk,
frag doch in der Schleife nach, ob das Feld existiert:
procedure TForm1.Button1Click(Sender: TObject);
var i : string;
begin
for i := 1 to 4 do
begin
-
Forum: Datenbanken
Delphi
by MrSpock,
18. Sep 2002
Hallo m-werk,
du hast ja nur eine Schleife :wink: , und dort steht nur eine Variable und die heißt i. I darf nicht als String, sondern muss als Integer (oder SmallInt) deklariert werden. Dann funktioniert es.
Zum Thema automatisches Starten guckst du hier
-
Forum: Datenbanken
Delphi
by MrSpock,
17. Sep 2002
Hallo m-werk,
damit es nicht so kompliziert wird, würde ich ein kleines Programm schreiben, dass nur die Tabelle anpasst, d.h. die Felder hinzufügt.
Das eigentliche Programm sollte dann die bereits angepasste Tabelle voraussetzen.
Ansonsten ist deine vorgeschlagene Vorgehensweise korrekt.
-
Forum: Datenbanken
Delphi
by MrSpock,
17. Sep 2002
Hallo m-werk,
das mit dem Buch ist eine gute Idee. Ich denke, wenn man Datenbankprogrammierung benötigt, sollte man den Grundlagen anfangen und da ist ein gutes Buch viel Wert. Man kann dann auch später gewisse Details einfach noch einmal nachschlagen.
Solange du über die BDE auf eine Datenbank zugreifst, musst du dich mit "Loacal SQL" begnügen, was eine Untermenge des ANSI-SQL Standards...
-
Forum: Datenbanken
Delphi
by MrSpock,
16. Sep 2002
Hallo m-werk,
das Feld kannst du mit:
ALTER TABLE Kinder ADD Rundung NUMERIC
Dabei ist es auch denkbar FLOAT oder MONEY zu nutzen. Letzteres hat aber nur 2 Nachkommastellen.
Du kannst übrigens alles nacheinander in dieselbe TQuery Komponente schreiben. Die SQL Eigenschaft einfach mit Clear löschen, neu setzen und mit ExecSQL ausführen.
-
Forum: Datenbanken
Delphi
by MrSpock,
13. Sep 2002
Hallo m-werk,
wann kommt denn der Syntax Fehler?
Der SQL String sollte lauten:
ALTER TABLE Kinder ADD Zusatz CHAR(20)
und ggf. eine zweite Anweisung:
ALTER TABLE Kinder ADD XY NUMERIC
-
Forum: Datenbanken
Delphi
by MrSpock,
12. Sep 2002
Hallo m-werk,
das Statement der SQL Eigenschaft einer TQuery Komponente hinzufügen. Die TQuery Komponente mit der Datenbank verbinden. Dann dem OnClick - Ereignis des Schalters den Code:
qryAdd.ExecSQL;
hinzufügen, wobei du den Namen qryAdd durch den Namen der o.g. TQuery Kompo ersetzen muss.