AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Eine Tabelle zur laufzeit erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Eine Tabelle zur laufzeit erstellen

Ein Thema von Natalia · begonnen am 13. Aug 2003 · letzter Beitrag vom 15. Aug 2003
Antwort Antwort
Seite 1 von 2  1 2      
Natalia

Registriert seit: 13. Mai 2003
47 Beiträge
 
Delphi 7 Professional
 
#1

Eine Tabelle zur laufzeit erstellen

  Alt 13. Aug 2003, 14:43
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.
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Eine Tabelle zur laufzeit erstellen

  Alt 13. Aug 2003, 15:34
Hallo Natalia,

hasst du überprüft (mit dem Debugger), dass die Schleife auch durchlaufen wird?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Natalia

Registriert seit: 13. Mai 2003
47 Beiträge
 
Delphi 7 Professional
 
#3

Re: Eine Tabelle zur laufzeit erstellen

  Alt 13. Aug 2003, 16:26
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
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Eine Tabelle zur laufzeit erstellen

  Alt 13. Aug 2003, 16:52
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:
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;
Da ADOTable leider auch kein DeleteTable kennt, musst du eine Delete Query erstellen mit:

DROP TABLE temp
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#5

Re: Eine Tabelle zur laufzeit erstellen

  Alt 13. Aug 2003, 17:04
Wenn du eine DBase-Datenbank verwendest lösche doch die Dateien auf der Festplatte, die zu der Tabelle gehören.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Natalia

Registriert seit: 13. Mai 2003
47 Beiträge
 
Delphi 7 Professional
 
#6

Re: Eine Tabelle zur laufzeit erstellen

  Alt 13. Aug 2003, 17:10
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

try
temp.Open;
temp.Close;
temp.DeleteTable;
except
on exception do;
end;
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#7

Re: Eine Tabelle zur laufzeit erstellen

  Alt 14. Aug 2003, 08:13
Hallo Natalia,

warum versuchst Du es nicht mal über SQL mit Hilfe einer Query. Dann einfach zunächst DROP TABLE ausführen und anschließend CREATE TABLE
  Mit Zitat antworten Zitat
Natalia

Registriert seit: 13. Mai 2003
47 Beiträge
 
Delphi 7 Professional
 
#8

Re: Eine Tabelle zur laufzeit erstellen

  Alt 14. Aug 2003, 09:49
Das funktioniert leider nicht, ich weiß auch nicht aus welchem Grund.

Code:
    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 bekomme immer wieder die Meldungen "Zugrifsverlstzung" oder "Database Exception..."

Ich möchte jetzt nur prüfen ob die Tabelle exsistiert, un wenn ja, soll sie gelöscht werden. Warum geht das nicht?
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#9

Re: Eine Tabelle zur laufzeit erstellen

  Alt 14. Aug 2003, 10:00
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.
  Mit Zitat antworten Zitat
Natalia

Registriert seit: 13. Mai 2003
47 Beiträge
 
Delphi 7 Professional
 
#10

Re: Eine Tabelle zur laufzeit erstellen

  Alt 14. Aug 2003, 12:49
Funktioniert auch nicht,

wenn ich schreibe
Code:
 if FileExists('C:\temp.adt') then
        DeleteFile('C:\temp.adt');
und beim zweiten Mal versuche die Tabelle zu erstellen
bekomme ich die Fehlermeldung: "File Creation Error..."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:53 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