AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Neue Tabelle erstellen und öffnen
Thema durchsuchen
Ansicht
Themen-Optionen

Neue Tabelle erstellen und öffnen

Ein Thema von Thomas F · begonnen am 10. Feb 2009 · letzter Beitrag vom 12. Feb 2009
Antwort Antwort
Seite 1 von 3  1 23      
Thomas F

Registriert seit: 3. Sep 2008
Ort: Nürnberg
281 Beiträge
 
Delphi 2005 Architect
 
#1

Neue Tabelle erstellen und öffnen

  Alt 10. Feb 2009, 21:07
Datenbank: Access • Zugriff über: ADO
Ich wollte eine neue Tabelle in meiner Datenbank erstellen und dann sofort öffnen(enthält noch keine Daten)
Dazu folgender Code
Man gibt in ein Edit1 den Namen der Tabelle ein und auf Button1click wird die Tabelle (Tabelle2) erstellt,
während bereits eine Tabelle (Tabelle1) geöffnet ist
Allerdings bekomme ich danach immer eine Fehlermeldung, dass die Tabelle nicht existiert.
Wenn ich danach in das Verzeichnis der Tabellen schaue (Combobox1) ,dann existiert die neue Tabelle und ich kann die Tabelle2 auch ohne Fehlermeldung öffnen.

Delphi-Quellcode:
procedure TForm5.Button1Click(Sender: TObject);
var Tabellenname:string;
begin

if Edit1.text <> 'then
begin
  Tabellenname:= Edit1.Text;
unit1.form1.adoconnection1.ConnectionString:=Unit1.form1.ADOTable1.ConnectionString;
unit1.form1.ADOConnection1.Execute('CREATE TABLE '+Tabellenname+' (Nr COUNTER NOT NULL PRIMARY KEY,Feld1 varchar(60),Feld2 varchar(60),Feld3 varchar(5),Datum DATE,Feld5 varchar(40))');
 Unit1.form1.adotable1.Close;
unit1.Form1.ADOTable1.TableName:=tabellenname;
 Unit1.form1.adotable1.open;
close;
 end;

end;
Gruß

Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Neue Tabelle erstellen und öffnen

  Alt 10. Feb 2009, 21:45
Schließe mal die Connection nach dem Erzeugen. Access hat ein teilweise bescheuertes Cachingverhalten welches sowas verursachen könnte.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Thomas F

Registriert seit: 3. Sep 2008
Ort: Nürnberg
281 Beiträge
 
Delphi 2005 Architect
 
#3

Re: Neue Tabelle erstellen und öffnen

  Alt 10. Feb 2009, 21:53
Zitat von Bernhard Geyer:
Schließe mal die Connection nach dem Erzeugen. Access hat ein teilweise bescheuertes Cachingverhalten welches sowas verursachen könnte.
geht leider auch nicht, ich habs probiert

Delphi-Quellcode:
procedure TForm5.Button1Click(Sender: TObject);
var Tabellenname:string;
begin

if Edit1.text <> 'then
begin
  Tabellenname:= Edit1.Text;
unit1.form1.adoconnection1.ConnectionString:=Unit1.form1.ADOTable1.ConnectionString;
unit1.form1.ADOConnection1.Execute('CREATE TABLE '+Tabellenname+' (Nr COUNTER NOT NULL PRIMARY KEY,Feld1 varchar(60),Feld2 varchar(60),Feld3 varchar(5),Datum DATE,Feld5 varchar(40))');
  unit1.form1.ADOConnection1.Close; //<----------
Unit1.form1.adotable1.Close;
unit1.Form1.ADOTable1.TableName:=tabellenname;
unit1.form1.ADOConnection1.open;
Unit1.form1.adotable1.open;
close;
end;

end;
[/delphi]
Gruß

Thomas
  Mit Zitat antworten Zitat
Benutzerbild von blawen
blawen

Registriert seit: 1. Dez 2003
Ort: Luterbach (CH)
677 Beiträge
 
Delphi 12 Athens
 
#4

Re: Neue Tabelle erstellen und öffnen

  Alt 10. Feb 2009, 21:58
Hast Du Dir den erzeugten SQL-Befehl mal ausgeben lassen und hast Du ihn mit einem ext. DB-Tool überprüft?

Ev. musst Du den Tabellennamen in "" einklammern?
Roland
  Mit Zitat antworten Zitat
Thomas F

Registriert seit: 3. Sep 2008
Ort: Nürnberg
281 Beiträge
 
Delphi 2005 Architect
 
#5

Re: Neue Tabelle erstellen und öffnen

  Alt 10. Feb 2009, 22:01
Seltsam, ich hab nur zum Testen einen 2.Button hinzugefügt, und öffne die neue Tabelle mit Buttonclick
Dann gehts
Offenbar ist die Tabelle noch nicht erstellt, wenn sie geöffnet wird

Delphi-Quellcode:
procedure TForm5.Button1Click(Sender: TObject);
var Tabellenname:string;
begin

if Edit1.text <> 'then
begin
  Tabellenname:= Edit1.Text;
unit1.form1.adoconnection1.ConnectionString:=Unit1.form1.ADOTable1.ConnectionString;
unit1.form1.ADOConnection1.Execute('CREATE TABLE '+Tabellenname+' (Nr COUNTER NOT NULL PRIMARY KEY,Feld1 varchar(60),Feld2 varchar(60),Feld3 varchar(5),Datum DATE,Feld5 varchar(40))');
Unit1.form1.adotable1.Close;
unit1.Form1.ADOTable1.TableName:=tabellenname;

close;
end;

end;


procedure TForm1.Button2Click(Sender: TObject);//2.Button
begin

 adotable1.open; //funktioniert
end;
Gruß

Thomas
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: Neue Tabelle erstellen und öffnen

  Alt 10. Feb 2009, 22:50
Dein ADOTable bezieht sich vermutlich auch auf Form5 und nicht auf Form1.
Zumindest bei den Buttons ist das offenbar so, sonst würde es nicht
---> procedure TForm5.Button1Click(Sender: TObject);
heißen
Die Referenzierung mit "unit1.form1." mal rausnehmen, dann müsste sich alles auf das aktuelle Formular beziehen.
  Mit Zitat antworten Zitat
Thomas F

Registriert seit: 3. Sep 2008
Ort: Nürnberg
281 Beiträge
 
Delphi 2005 Architect
 
#7

Re: Neue Tabelle erstellen und öffnen

  Alt 10. Feb 2009, 23:05
Zitat von globetrotter77:
Dein ADOTable bezieht sich vermutlich auch auf Form5 und nicht auf Form1.
Zumindest bei den Buttons ist das offenbar so, sonst würde es nicht
---> procedure TForm5.Button1Click(Sender: TObject);
heißen
Die Referenzierung mit "unit1.form1." mal rausnehmen, dann müsste sich alles auf das aktuelle Formular beziehen.
ADO und die DBGird befindet sich auf dem Form1, von dort klickt man auf "Neue Tabelle" , dann öffnet sich Form5,
wo man in das Edit1 den Tabellennamen eingibt, und mit Button1.click die Tabelle erstellt.
Problem ist, dass die Tabelle noch nicht erstellt ist, wenn sie geöffnet wird.
Dann kommt die Fehlermeldung.
Gruß

Thomas
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: Neue Tabelle erstellen und öffnen

  Alt 10. Feb 2009, 23:32
und wie findet dann Button2 die passende Tabelle???
Delphi-Quellcode:
procedure TForm5.Button2Click(Sender: TObject);//2.Button
begin

adotable1.open; //funktioniert
end;
  Mit Zitat antworten Zitat
Thomas F

Registriert seit: 3. Sep 2008
Ort: Nürnberg
281 Beiträge
 
Delphi 2005 Architect
 
#9

Re: Neue Tabelle erstellen und öffnen

  Alt 11. Feb 2009, 08:24
Zitat von globetrotter77:
und wie findet dann Button2 die passende Tabelle???
Delphi-Quellcode:
procedure TForm5.Button2Click(Sender: TObject);//2.Button
begin

adotable1.open; //funktioniert
end;
Ja, da hab ich einen Fehler gemacht, es muß TForm1.Button2Click heissen.

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);//2.Button
begin

adotable1.open; //funktioniert
end;
Gruß

Thomas
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#10

Re: Neue Tabelle erstellen und öffnen

  Alt 11. Feb 2009, 09:52
Hallo,

falls das Problem noch nicht weg sein sollte, versuche mal bitte folgendes:
Delphi-Quellcode:
  unit1.form1.ADOConnection1.Close; //<----------
Unit1.form1.adotable1.Close;
ShowMessage('****');
unit1.Form1.ADOTable1.TableName:=tabellenname;
unit1.form1.ADOConnection1.open;
Unit1.form1.adotable1.open;
Dadurch wird eine mehr oder weniger von Dir beeinflussbare Pause eingebaut. Wenn es damit funktioniert, bist Du im Programmablauf zu schnell und "überholst" quasi die Datenbank. Um das Problem zu lösen könntest Du anstelle von ShowMessage ein Sleep(1000) einbauen. Den Wert 1000 musst Du eventuell anpassen. Eine "brutalere" Möglichkeit könnte in etwa so aussehen:
Delphi-Quellcode:
var
      i : Integer;
...
  Unit1.form1.adotable1.Close;
  unit1.Form1.ADOTable1.TableName:=tabellenname;
  unit1.form1.ADOConnection1.open;
  i := 0;
  repeat
    inc(i);
    Try
      Unit1.form1.adotable1.open;
    Except
    End;
  until Unit1.form1.adotable1.Active or (i >= 3); // maximal drei Versuche starten
  if Not Unit1.form1.adotable1.Active then begin
    // Behandlung der Situation, dass die Tabelle nach dem 3. Versuch nicht zu öffnen ist.
    ShowMessage('Die Tabelle ' + tabellenname + ' konnte nicht geöffnet werden.');
  end;
Über die "Eleganz" dieser Lösung wollen wir uns lieber nicht unterhalten
  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 07:51 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