![]() |
Re: DB-Tabelle um Datenfeld erweitern
Ja, ist schwierig. Man siehts immer wieder : Änderungen an der DB sollen mit Delphi gemacht werden, anstatt mit einem vernünftigen Admin-Tool. Mit Delphi entwerfe ich die Programme, aber doch nicht das Datenbank-Design. 8)
|
Re: DB-Tabelle um Datenfeld erweitern
Das Problem ist ja ein Update der Datenbank.
|
Re: DB-Tabelle um Datenfeld erweitern
Unter "Update" der Datenbank versteht man üblicherweise die Änderung des Inhalts der Datenbank und nicht eine Änderung der Daten-Definition ! Letzteres macht man am besten mit in 1 Min. mit IBExpert, anstatt dafür ein Delphi Programm selber zu schreiben. Allerdings sind in dem Vorhaben noch mehr Fehlerquellen zu entdecken : FB embedded braucht exklusiven Zugriff auf die DB. Programm laufen lassen und in der IDE das DBGrid angucken geht nicht. Zeos kann lediglich eine Transaktion steuern. Keine zwei.
|
Re: DB-Tabelle um Datenfeld erweitern
Zitat:
Ausserdem kannst Du die DB nicht umstrukturieren, solange Du darauf zugreifst. Also würde ich ein kleines Tool schreiben, das die Anpassung macht. Oder ein SQL-Script, das der Benutzer im IBExpert oder einem anderen DB-Manager ausführen kann. Oder ein kleines Batch-File, das dieses SQL-Script ausführt. |
Re: DB-Tabelle um Datenfeld erweitern
Hallo Ihr,
danke für die Kommentare, ich habe jetzt alles noch einmal durchgecheckt, es geht noch nicht. Zur Klarstellung: Zeoslib 6.6.1 – beta Protocol firebird-1.5 Ich habe ein Datenmodul mit: TZConnection (ZConn), TZQuery (ZQuery) Ich habe nichts auf activ gesetzt sondern aktiviere im Programm. Das DataModul wird vor der Form erstellt. Auch die Datenbankverbindung wird im Programm hergestellt. Bei ZQuery ist ZConn als Connection eingestellt sonst nichts. Das DBGrid und die Datasource ist entfernt. Ich habe das Programm auch ohne IDE gestartet. Natürlich würde ich die Änderungen an der Datenbank nicht im eigentlichen Programm machen, sondern in einem separaten Update- Programm. Mir geht es nur ums Prinzip, warum geht das bei mir nicht und was mache ich falsch. Ich habe auch schon in allen möglichen Foren gesucht, da war der Fehler auch beschrieben, aber die Lösung hat keiner aufgezeigt. Nur nochmal zum Verständnis für mich: um die Spalte einzufügen muss ich Zugriff auf die Datenbank haben, also
Delphi-Quellcode:
Ausserdem muss ich einen Query ausführen können, also
ZConn.Connected := True;
Delphi-Quellcode:
Richtig?
ZQuery.Active := True;
Wenn jemand das Problem schon gelöst hat, dann bitte bitte wie! :firejump: :gruebel: Sonst bleibe ich bei Paradox! :wall:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var vFirst: Boolean; begin with data do begin vFirst := False; ZConn.User := 'SYSDBA'; ZConn.Password := 'egal'; ZConn.Database := '.\TestFb.fdb'; if not fileExists('.\TestFb.fdb') then begin vFirst := True; ZConn.Properties.Add('CreateNewDatabase=CREATE DATABASE ' + QuotedStr('.\TestFb.fdb') + ' USER ' + QuotedStr('sysdba') + ' PASSWORD ' + QuotedStr('masterkey') + ' PAGE_SIZE 4096 DEFAULT CHARACTER SET ISO8859_1'); end; ZConn.Properties.Add('Dialect=3'); ZConn.Connected := true; if vFirst then begin ZQuery.SQL.Clear; ZQuery.SQL.Add('Create TABLE T1 (P1 INTEGER NOT NULL PRIMARY KEY);'); ZQuery.ExecSQL; end; ZQuery.SQL.Add('SELECT P1 FROM T1;'); ZQuery.Active := True; //Testen, ob NAME schon vorhanden if Teste_Feld_In_Tabelle('Name') = False then begin ZQuery.SQL.Clear; ZQuery.SQL.Add('ALTER TABLE T1 ADD INAME CHAR(30);'); ZQuery.ExecSQL; end; end; end; |
Re: DB-Tabelle um Datenfeld erweitern
Klingt vielleicht blöd, aber schau Dir evtl. mal das
![]() |
Re: DB-Tabelle um Datenfeld erweitern
Hi,
Das Tutorial hilft mir nicht weiter. Das liegt ausgedruckt vor mir. Ich habe es schon schräg und quer gelesen. In den Demos ist auch nicht sondelich viel mit SQL-Statements los. Ich muß also das Query schließen, um die SQL- Anweisung zu ändern? Nehme ich dafür Query.active:=false; oder Query.close; ? mfg |
Re: DB-Tabelle um Datenfeld erweitern
Zitat:
Zitat:
|
Re: DB-Tabelle um Datenfeld erweitern
So nun habe ich Close eingefügt.
Immer noch diese blöde Fehlermeldung bei
Delphi-Quellcode:
mfg
if Teste_Feld_In_Tabelle('Name') = False then
begin ZQuery.close; ZQuery.SQL.Clear; ZQuery.SQL.Add('ALTER TABLE T1 ADD INAME CHAR(30);'); ZQuery.ExecSQL; end; Frust macht sich langsam breit :gruebel: :wall: :gruebel: |
Re: DB-Tabelle um Datenfeld erweitern
Gibt es weitere DataSets?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:23 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 by Thomas Breitkreuz