![]() |
Eine Tabelle zur laufzeit erstellen
Hallo, :)
ich möchte zur Laufzeit eine Tabelle erstellen und einige Feldernamen aus einer anderen Tabelle zu Laufzeit ablesen. Was mache ich hier falsch? :?: :?: :?:
Code:
temp:=TADSTable.Create(self);
temp.AutoCalcFields:=true; temp.DatabaseName:='Database'; temp.TableName:='temp'; temp.TableType:=ttAdsADT; temp.FieldDefs.Clear; temp.FieldDefs.Add('Artikelnummer', ftString, 6, false); temp.FieldDefs.Add('Bestellnummer', ftString, 6, false); temp.FieldDefs.Add('Warenbezeichnung', ftString, 6, false); temp.FieldDefs[0].CreateField(temp); temp.FieldDefs[1].CreateField(temp); temp.FieldDefs[2].CreateField(temp); for j:=0 to FilialeGrid.SelectedRows.Count-1 do begin qrFiliale.GotoBookmark(pointer(FilialeGrid.SelectedRows.Items[j])); temp.FieldDefs.Add(qrFilialeFilialnummer.AsString+' '+qrFilialeName.AsString, ftInteger,0,false); temp.FieldDefs[3+j].CreateField(temp); end; temp.FieldDefs.Update; temp.CreateTable; temp.Open; ds := TDataSource.Create(self); ds.DataSet:=temp; SAGrid.DataSource:=ds; Ich bekomme eine Fehlermeldung, dass die Felder, die in der Schleife erstellt sind, nicht gefunden werden können. Könnte mir jemand hier helfen? Vielen Dank schon mal für alle Vorschläge. :) |
Re: Eine Tabelle zur laufzeit erstellen
Hallo Natalia,
hasst du überprüft (mit dem Debugger), dass die Schleife auch durchlaufen wird? |
Re: Eine Tabelle zur laufzeit erstellen
Ja, die Schleife wird durchgelaufen.
Aber ich glaube, wenn ich diese Tabelle erstelle, existiert sie schon bereits. Wie kann ich am besten prüfen, ob diese Tabelle schon exsistiert und wenn ja die Tabelle löschen? Ich habe folgendes probiert: if temp.exsists then temp.free Aber das funktioniert nicht, Fehlermeldung - Zugrifsverletzung :cry: |
Re: Eine Tabelle zur laufzeit erstellen
Hallo Natalia,
leider existiert die Methode "exists" nicht für ADOTable. Du kannst aber, nachdem du die Eigenschaft DataBase und TableName gesetzt hast einfach versuchen, ob du die Tabelle Öffnen kannst und falls es funktioniert, löscht du die Tabelle:
Delphi-Quellcode:
Da ADOTable leider auch kein DeleteTable kennt, musst du eine Delete Query erstellen mit:
temp:=TADSTable.Create(self);
temp.AutoCalcFields:=true; temp.DatabaseName:='Database'; temp.TableName:='temp'; try temp.Open; temp.Close; ADODelete.Execute; except on exception do; end;
SQL-Code:
DROP TABLE temp
|
Re: Eine Tabelle zur laufzeit erstellen
Wenn du eine DBase-Datenbank verwendest lösche doch die Dateien auf der Festplatte, die zu der Tabelle gehören.
|
Re: Eine Tabelle zur laufzeit erstellen
Das ist Ads-Table (Advantage), Table-Typ: ADT
Es gibt bei Ads-Tables die Methode DeleteTable, aber bei mir scheint sie irgendwie nicht so richtig zu funktionieren :cry: try temp.Open; temp.Close; temp.DeleteTable; except on exception do; end; |
Re: Eine Tabelle zur laufzeit erstellen
Hallo Natalia,
warum versuchst Du es nicht mal über SQL mit Hilfe einer Query. Dann einfach zunächst
SQL-Code:
ausführen und anschließend
DROP TABLE
SQL-Code:
CREATE TABLE
|
Re: Eine Tabelle zur laufzeit erstellen
Das funktioniert leider nicht, ich weiß auch nicht aus welchem Grund. :cry:
Code:
Ich bekomme immer wieder die Meldungen "Zugrifsverlstzung" oder "Database Exception..."
query : TADSQuery;
query:=TADSQuery.Create(self); query.Databasename:='Databasse'; query.TableTyp:=ttAdsAdt; query.SQL.Add('drop table temp'); try if temp.Exists then query.ExecSQL; except on exception do; end; Ich möchte jetzt nur prüfen ob die Tabelle exsistiert, un wenn ja, soll sie gelöscht werden. Warum geht das nicht? :wall: |
Re: Eine Tabelle zur laufzeit erstellen
Hallo Natalia,
dann versuche doch mal zu testen, ob die Datei existiert. Bei ADS gbt es ja für jede Tabelle eine eigene Datei. Einfach mit FileExists überprüfen. |
Re: Eine Tabelle zur laufzeit erstellen
Funktioniert auch nicht,
wenn ich schreibe
Code:
und beim zweiten Mal versuche die Tabelle zu erstellen
if FileExists('C:\temp.adt') then
DeleteFile('C:\temp.adt'); bekomme ich die Fehlermeldung: "File Creation Error..." |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:09 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