![]() |
Datenbank: Access • Zugriff über: JET 4.0
Create Table funzt, aber der Compiler schmiert ab...
Hallo Leute!
Mit Create Table erzeuge ich in einer Access-DB eine Tabelle. Diese Wird auch angelegt, aber wenn ich dann später darauf zugreifen will, stürzt meine Applikation ab. Muss ich vielleicht beim Erstellen einer Tabelle zwangsläufig Felder mit erzeugen???
Delphi-Quellcode:
In einer Schleife lese ich dann die Tabellen in einen Treeview ein. Dabei schmiert mir manchmal alles ab. Und zwar dann, wenn ShowMessage(tab_list.Strings[i]); den Tabellennamen einer leeren Tabelle anzeigen soll.
DM.ADOQuery1.SQL.Clear;
DM.ADOQuery1.SQL.Text :='CREATE TABLE '+ed_name.Text; DM.ADOQuery1.ExecSQL; DM.ADOQuery1.SQL.Text := 'SELECT * FROM '+ed_name.Text;
Delphi-Quellcode:
Die Fehlermeldung lautet:
tab_list:=TStringlist.Create;
DM.ADOConnection1.GetTableNames(tab_list,false); for i:=0 to tab_list.Count-1 do begin DM.ADOTable1.Active:=false; dm.ADOTable1.TableName:=tab_list.Strings[i]; DM.ADOTable1.Active:=true; ShowMessage(tab_list.Strings[i]); myNode:=tree_contents.Items.AddChild(nil,tab_list.Strings[i]); myNode.ImageIndex:=16; myNode.SelectedIndex:=16; end; --------------------------- Abfrage benötigt zumindest ein Zielfeld. --------------------------- Wer kann helfen? |
Re: Create Table funzt, aber der Compiler schmiert ab...
Hallo,
ich verstehe nicht ganz, was Du da machst; Du erzeugst eine Tabelle ohne Felder... versuche das mal manuell in Access selbst zu machen, es wird dir nicht gelingen. Ich weiss allerdings nicht, warum das Programm nicht gleich eine Exception wirft, wenn du das ExecSQL ausführst. Eine Tabelle muss immer Felder haben. Deine SQL-Anweisung ist daher syntaktisch falsch, es muss eine Liste der Tabellenfelder folgen. Wahrscheinlich befindet sich Access nach dem "Erzeugen" in einem inkonsistenten Zustand und deshalb kommt es dann später beim Zugriff in der Schleife zu einer Execption. Was immer du tun möchtest, so geht es nicht. Bis dann Peter |
Re: Create Table funzt, aber der Compiler schmiert ab...
Also der Wunschgedanke war unwissenden User es zu ermöglichen eine oder mehrere Tabellen anzulegen. Dies wollte ich möglich übersichtlich gestalten. Ich dachte, dass war wohl mein erster Fehler, dass es möglich sei, Tabellen anzulegen, die dann "später" mit den gewünschten Feldern befüllt werden.
Leider ist das nicht möglich. Auch im Access ist mir das nicht gelungen. Ich könnte nun die Tabelle mit einem Dummy-Feld anlegen, will aber den Usern dies nicht zumuten. Also werde ich wohl einen anderen Weg finden müssen... |
Re: Create Table funzt, aber der Compiler schmiert ab...
Warum nimmst du dir nicht einfach eine Klasse, die der zu erzeugenden Tabelle entsprechen soll.
Der User würde als erst eine Instanz davon zu Gesicht bekommen. Erst wenn er ihr genügend Felder, Schlüssel, whatever verpasst hat und sie wirklich ablegen will kannst du das nötige DDL daraus erzeugen und absetzen. ;) btw: Du gibst es nicht auf mit dem alten Ding, oder? :zwinker: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 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-2025 by Thomas Breitkreuz