AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Automatische Felder in der Access-DB erzeugen
Thema durchsuchen
Ansicht
Themen-Optionen

Automatische Felder in der Access-DB erzeugen

Ein Thema von m-werk · begonnen am 9. Sep 2002 · letzter Beitrag vom 1. Okt 2002
Antwort Antwort
Seite 3 von 4     123 4      
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#21
  Alt 20. Sep 2002, 17:32
Hi, ich komm einfach nicht dahinter:

Code:
procedure TForm1.Button1Click(Sender: TObject);
const
   FeldName : array[1..4] of String = ('Rueckzahlung', 'Kreditwaehrung', 'Zinssatz1', 'Zinssatzgebunden');
   var i : Integer;
begin
  for i := 1 to 4 do
  begin
    if Not DataModule2.ADOSFinanzierung.FindField(FeldName[i]) then
    begin
       DataModule2.ADOQuery1.Close;
       DataModule2.ADOQuery1.SQL.Clear;
       DataModule2.ADOQuery1.SQL.Add(InsertStr[i]);
       DataModule2.ADOQuery1.ExecSQL
     end;
   end;
end;
So sieht jetzt mein code aus.

Nun kommen aber wieder folgende Fehlermeldungen:
[Fehler] DBUpdate.pas(42): Operator ist auf diesen Operandentyp nicht anwendbar
Dies kommt bei der zeile:
if Not DataModule2.ADOSFinanzierung.FindField(FeldName[i]) then

[Fehler] DBUpdate.pas(46): Undefinierter Bezeichner: 'InsertStr'

Was ist da jetzt noch los?
Grüße, m-werk
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#22
  Alt 20. Sep 2002, 19:02
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:

Code:
...
if DataModule2.ADOSFinanzierung.FindField(FeldName[i])=NIL then
...
Naja und der 2. Fehler ist doch offensichtlich

Na wo is denn da der InsertStr Array
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#23
  Alt 23. Sep 2002, 16:42
Hi, ist der Code nun richtig?

Code:
procedure TKundendaten.Button3Click(Sender: TObject);
const
   FeldName : array[1..4] of String = ('Rueckzahlung', 'Kreditwaehrung', 'Zinssatz1', 'Zinssatzgebunden');
   var i : Integer;
       InsertStr : String;
begin
  for i := 1 to 4 do
  begin
    if DM.ADOSFinanzierung.FindField(FeldName[i])=NIL then
    begin
       DM.QueryFinanzierung.Close;
       DM.QueryFinanzierung.SQL.Clear;
       DM.QueryFinanzierung.SQL.Add(InsertStr[i]);
       DM.QueryFinanzierung.ExecSQL
     end;
   end;
end;
Wenn ich jetzt den Button klicke, dann kommt folgende Fehlermeldung:
Zugriffsverletzung bei Adresse 004FE3E7 in Modul 'Kundenverwaltung.exe'. Lesen von Adresse 00000000.

Ich hab mir auch die Datenbank dann angesehen, und hab aber keine Felder gefunden, die neu sein sollten.
Grüße, m-werk
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#24
  Alt 23. Sep 2002, 19:25
Hallo m-werk,

wenn du InsertStr lokal deklarierst wie in einem Code gezeigt, dann musst du natürlich auch die Werte für InsertStr[1] bis InsertStr[4] setzen. Du könntest das ebenfalls als typisierte Konstante machen. Oder durch 4 Zuweisungen, wie irgendwo oben beschrieben.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#25
  Alt 24. Sep 2002, 07:12
Hi, ich bin jetzt leider mit deiner Antwort nicht zurechtgekommen. Hab nicht ganz kapiert, wie du das meinst!
Grüße, m-werk
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#26
  Alt 24. Sep 2002, 12:12
Hallo m-werk,

guckst du hier:

Code:
procedure TKundendaten.Button3Click(Sender: TObject);
const
   FeldName : array[1..4] of String = ('Rueckzahlung', 'Kreditwaehrung', 'Zinssatz1', 'Zinssatzgebunden');

   InsertStr : array[1..4] of String =
               ('ALTER TABLE Kinder ADD XY NUMERIC',
                'ALTER TABLE Kinder ADD ...',
                 ...);
var
   i : Integer;  
begin
  for i := 1 to 4 do
  begin
    if DM.ADOSFinanzierung.FindField(FeldName[i])=NIL then
    begin
       DM.QueryFinanzierung.Close;
       DM.QueryFinanzierung.SQL.Clear;
       DM.QueryFinanzierung.SQL.Add(InsertStr[i]);
       DM.QueryFinanzierung.ExecSQL
     end;
   end;
end;
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#27
  Alt 24. Sep 2002, 12:44
Ich habe auch in der Query so einen SQL-String

ALTER TABLE.....


Bleibt dieser Bestehen?
Grüße, m-werk
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#28
  Alt 24. Sep 2002, 16:20
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 ).
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#29
  Alt 25. Sep 2002, 15:22
Danke für die Antwort.

Was ist eigentlich, wenn ich später wieder Felder in die Datenbank einfügen möchte?

Kann ich da ganz normal den Code erweitern und es werden dann nur die Felder eingefügt, die noch nicht existieren oder muß ich da was neu machen?
Grüße, m-werk
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#30
  Alt 25. Sep 2002, 16:14
Hallo m-werk,

kannste einfach erweitern .
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 22:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz