AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DB-Tabelle um Datenfeld erweitern
Thema durchsuchen
Ansicht
Themen-Optionen

DB-Tabelle um Datenfeld erweitern

Ein Thema von BrunoT · begonnen am 28. Nov 2007 · letzter Beitrag vom 3. Dez 2007
Antwort Antwort
Seite 2 von 3     12 3      
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#11

Re: DB-Tabelle um Datenfeld erweitern

  Alt 29. Nov 2007, 00:20
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)
Gruß
Hansa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: DB-Tabelle um Datenfeld erweitern

  Alt 29. Nov 2007, 06:34
Das Problem ist ja ein Update der Datenbank.
Markus Kinzler
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#13

Re: DB-Tabelle um Datenfeld erweitern

  Alt 29. Nov 2007, 09:01
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.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#14

Re: DB-Tabelle um Datenfeld erweitern

  Alt 29. Nov 2007, 09:07
Zitat von mkinzler:
Das Problem ist ja ein Update der Datenbank.
Ich habe auch den Standpunkt, dass eine Änderung an der DB-Struktur nix im eigentlichen Programm verloren hat.
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.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von BrunoT
BrunoT

Registriert seit: 23. Jan 2003
Ort: Sandbeiendorf
360 Beiträge
 
Delphi 8 Professional
 
#15

Re: DB-Tabelle um Datenfeld erweitern

  Alt 29. Nov 2007, 19:22
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
ZConn.Connected := True; Ausserdem muss ich einen Query ausführen können, also
 ZQuery.Active := True; Richtig?
Wenn jemand das Problem schon gelöst hat, dann bitte bitte wie!

Sonst bleibe ich bei Paradox!

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;
Holger

EDV- Ende der Vernunft
Meine Calcedit-Kompo
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#16

Re: DB-Tabelle um Datenfeld erweitern

  Alt 29. Nov 2007, 19:43
Klingt vielleicht blöd, aber schau Dir evtl. mal das Tutorial auf dsdt.info an. Außerdem sieht es für mich komisch aus, dass Du bei einer geöffneten Query deren SQL ändern willst.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von BrunoT
BrunoT

Registriert seit: 23. Jan 2003
Ort: Sandbeiendorf
360 Beiträge
 
Delphi 8 Professional
 
#17

Re: DB-Tabelle um Datenfeld erweitern

  Alt 29. Nov 2007, 20:41
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
Holger

EDV- Ende der Vernunft
Meine Calcedit-Kompo
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: DB-Tabelle um Datenfeld erweitern

  Alt 29. Nov 2007, 20:44
Zitat:
Ich muß also das Query schließen, um die SQL- Anweisung zu ändern?
Natürlich.
Zitat:
Nehme ich dafür Query.active:=false; oder Query
Nimm .Close, obwohl es eigentlich egal ist.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von BrunoT
BrunoT

Registriert seit: 23. Jan 2003
Ort: Sandbeiendorf
360 Beiträge
 
Delphi 8 Professional
 
#19

Re: DB-Tabelle um Datenfeld erweitern

  Alt 29. Nov 2007, 20:57
So nun habe ich Close eingefügt.

Immer noch diese blöde Fehlermeldung bei

Delphi-Quellcode:
      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;
mfg

Frust macht sich langsam breit
Holger

EDV- Ende der Vernunft
Meine Calcedit-Kompo
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#20

Re: DB-Tabelle um Datenfeld erweitern

  Alt 29. Nov 2007, 21:05
Gibt es weitere DataSets?
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 21:07 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