![]() |
Datenbank: Access • Version: 2003 • Zugriff über: ADO
Tabelle überschreiben
Ich mal wieder! :-D
Lasse eine Tabelle per ADO erzeugen. Nun ist es aber so, dass wenn die Tabelle schon vorhanden ist, eine Exception ausgeworfen wird. Gibt es einen Befehl, der es möglich macht, die Tabelle zu überschreiben? Mein bisheriger Code:
Delphi-Quellcode:
// DDL-Statement in Property SQL schreiben
ADOQuery1.SQL.Text := cCreateTabelle; // DDL-Statement ausführen ADOQuery1.ExecSQL; // DML-Statement zur Anzeige der Tabellendaten in die Property SQL schreiben ADOQuery1.SQL.Text := 'SELECT * FROM '+TName; // DML-Statement ausführen ADOQuery1.Open; |
Re: Tabelle überschreiben
Hi.
Ein DROP TABLE könnte dir helfen. Grüße vom marabu |
Re: Tabelle überschreiben
hab das jetzt mal so ausprobiert:
Delphi-Quellcode:
ADOQuery1.SQL.Text := 'DROP TABLE '+ TName;
// DDL-Statement in Property SQL schreiben ADOQuery1.SQL.Text := cCreateTabelle; // DDL-Statement ausführen ADOQuery1.ExecSQL; // DML-Statement zur Anzeige der Tabellendaten in die Property SQL schreiben ADOQuery1.SQL.Text := 'SELECT * FROM '+TName; // DML-Statement ausführen ADOQuery1.Open; die Logik stimmt ja - zuerst das ev. bereits vorhandene löschen (mit gleichem Namen), dann neues erzeugen. Er wirft aber immer noch die Exception aus... |
Re: Tabelle überschreiben
Da fehlt ein ExecSQL nach dem "Drop Table"
Grüße Mikhal |
Re: Tabelle überschreiben
Danke! Klappt mal wieder alles perfekt durch euch! :thumb:
|
Re: Tabelle überschreiben
du musst aber aufpassen: Sollte die Tabelle noch nicht existieren gibt dir das erste Löschen eine Exception.
Schachtel das ganze ein:
Delphi-Quellcode:
try
DOQuery1.SQL.Text := 'DROP TABLE '+ TName; DOQuery1.ExecSQL; except // sollte die Tabelle nicht existieren die Exception abfangen. end; // DDL-Statement in Property SQL schreiben ADOQuery1.SQL.Text := cCreateTabelle; // DDL-Statement ausführen ADOQuery1.ExecSQL; // DML-Statement zur Anzeige der Tabellendaten in die Property SQL schreiben ADOQuery1.SQL.Text := 'SELECT * FROM '+TName; // DML-Statement ausführen ADOQuery1.Open; |
Re: Tabelle überschreiben
Hallo Leute,
noch besser: vor dem Löschen prüfen, ob die Tabelle existiert:
Delphi-Quellcode:
Grüße vom marabu
function TableExists(conn: TAdoConnection; tableName: String): Boolean;
var s: TStrings; begin s := TStringList.Create; conn.GetTableNames(s); Result := s.IndexOf(tableName) >= 0; s.Free; end; |
Re: Tabelle überschreiben
hey! bin gerade am ausprobieren.
aber leider mache ich was bei der Funktion falsch. Er gibt immer an, dass er die Parameter nicht identifizieren kann - also die Connection und den String. kann ich denn auch eine solch ähnliche Funktion für eine Spalte der Tabelle schreiben? |
Re: Tabelle überschreiben
Guten Morgen.
Welche Delphi Version verwendest du? Lässt sich der Code bei dir nicht übersetzen oder erhältst du einen Laufzeitfehler?
Delphi-Quellcode:
Grüße vom marabu
function FieldExists(conn: TADOConnection; const tableName, fieldName: String): Boolean;
var s: TStrings; begin s := TStringList.Create; conn.GetFieldNames(tableName, s); Result := s.IndexOf(fieldName) >= 0; s.Free; end; |
Re: Tabelle überschreiben
Ich verwende Delphi 7 professional.
Der Code lässt sich nicht übersetzen und es wir als Fehler ausgegeben: Undefinierter Bezeichner: TADOConnection |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:25 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