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 1 von 3  1 23      
Benutzerbild von BrunoT
BrunoT

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

DB-Tabelle um Datenfeld erweitern

  Alt 28. Nov 2007, 15:40
Datenbank: Firebird embedded • Zugriff über: Zeos
Hallo alle zusammen,

Ich beschäftige mich nun endlich mit Firebird als Datenbank, um von Paradox wegzukommen.
Erst mal experimentell.

Ich habe da ein kleines Problem. Ich möchte eine vorhandene Tabelle um eine Spalte(Feld) erweitern.

Da erhalte eine Fehlermeldung:

Code:
SQL Error: unsuccessful metadata update T1. Error Code -607. This operation is not defined for system tables.
Die Fehlermeldung kommt im ALTER Table Statment.

Delphi-Quellcode:

function TForm1.Teste_Feld_In_Tabelle(Bez: string): boolean;
var
  i: Byte;
begin
  result := false;
  with data do
    for i := 0 to ZQuery.FieldDefs.Count - 1 do
      begin
        if Bez = ZQuery.FieldDefs[i].Name then
          Result := True;
      end;
end;

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;
      ZQuery.Close;
      ZQuery.SQL.Clear;
      ZQuery.SQL.Add('SELECT * FROM T1;'); //SELECT TOP 0 * FROM T1 ging auch nicht
      ZQuery.open;

//Testen, ob NAME schon vorhanden

      if Teste_Feld_In_Tabelle('Name') = False then
        begin
          ZQuery.SQL.Clear;
          ZQuery.SQL.Add('ALTER TABLE T1 ADD Name Char (30);');
          ZQuery.ExecSQL;
        end;
      ZQuery.SQL.Clear;
      ZQuery.SQL.Add('SELECT * FROM T1 WHERE p1 > 20;');
      ZQuery.open;
      ZQuery.Last;
    end;
end;
Was ist falsch?

mfg
Holger

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

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

Re: DB-Tabelle um Datenfeld erweitern

  Alt 28. Nov 2007, 15:46
Kommt es beim Erzeugen der Tabelle oder später?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von BrunoT
BrunoT

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

Re: DB-Tabelle um Datenfeld erweitern

  Alt 28. Nov 2007, 15:49
Hallo mkinzler,

Die Tabelle ist schon da. Ich habe auch ein DBDrid auf der Form und konnte schon Daten eingeben.

Nun hatte ich das Programm um diese Zeilen erweitert:

Delphi-Quellcode:

      if Teste_Feld_In_Tabelle('Name') = False then
        begin
          ZQuery.SQL.Clear;
          ZQuery.SQL.Add('ALTER TABLE T1 ADD Name Char (30);');
          ZQuery.ExecSQL;
        end;
und nun kommt die Fehlermeldung.

mfg
Holger

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

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

Re: DB-Tabelle um Datenfeld erweitern

  Alt 28. Nov 2007, 16:06
Die Tabelle scheint im Zugriff zu sein.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von BrunoT
BrunoT

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

Re: DB-Tabelle um Datenfeld erweitern

  Alt 28. Nov 2007, 16:09
Zitat von mkinzler:
Die Tabelle scheint im Zugriff zu sein.
wie, ich muss diese schließen? oder das Query.Active auf False setzen?

mfg
Holger

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

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

Re: DB-Tabelle um Datenfeld erweitern

  Alt 28. Nov 2007, 16:10
Der Query muss geschlossen sein.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von BrunoT
BrunoT

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

Re: DB-Tabelle um Datenfeld erweitern

  Alt 28. Nov 2007, 16:12
Danke,

ich hab's mir fast gedacht.

mfg
Holger

EDV- Ende der Vernunft
Meine Calcedit-Kompo
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: DB-Tabelle um Datenfeld erweitern

  Alt 28. Nov 2007, 16:13
Zitat von mkinzler:
Die Tabelle scheint im Zugriff zu sein.
Und ganz gemein ist der Fall, wenn die Query oder Tabelle in der Delphi IDE auf Active = True steht.
Denn dann ist die Tabelle im Zugriff ohne dass man das direkt so merkt.
Andreas
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#9

Re: DB-Tabelle um Datenfeld erweitern

  Alt 28. Nov 2007, 16:27
Zitat von shmia:
Und ganz gemein ist der Fall, wenn die Query oder Tabelle in der Delphi IDE auf Active = True steht.
Denn dann ist die Tabelle im Zugriff ohne dass man das direkt so merkt.
Und deswegen habe ich es mir angewöhnt, NIE und NIMMER irgendwelche DataSets in der IDE zu öffnen rsp. offen zu halten...aber da kommt man erst hinter, wenn einem (zunächst) nicht erklärbare Fehler auf die Augen geknallt werden
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: DB-Tabelle um Datenfeld erweitern

  Alt 28. Nov 2007, 16:29
Zitat:
Und deswegen habe ich es mir angewöhnt, NIE und NIMMER irgendwelche DataSets in der IDE zu öffnen rsp. offen zu halten...aber da kommt man erst hinter, wenn einem (zunächst) nicht erklärbare Fehler auf die Augen geknallt werden Wink
Z.B. wenn das Programm auf anderen Rechnern abschmiert!
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 17:12 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