Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Problem mit Foxpro Tabelle (https://www.delphipraxis.net/31008-problem-mit-foxpro-tabelle.html)

Gambit 2. Okt 2004 16:08


Problem mit Foxpro Tabelle
 
Hallo,

ich kann wie folgt eine FoxPro Tabelle mit ADO anlegen, wenn entsprechender OLE Treiber ist:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  AdoQuery1.sql.clear;
  AdoQuery1.SQL.add('create table tmp (Nr c(10), Titel c(100), SearchText c(100))');
  AdoQuery1.ExecSQL;
end;
Wenn ich aber jetzt versuche, die Tabelle mit Daten zu füllen:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  AdoConnection1.Connected:= true;
  AdoQuery1.Open;
  AdoQuery1.Edit;
  AdoQuery1.Append;
  AdoQuery1.FieldByName('Nr').AsString:='2';
  AdoQuery1.FieldByName('Titel').AsString:='Der Pate';
  AdoQuery1.FieldByName('SearchText').AsString:='DER PATE';
  AdoQuery1.Post;
end;
, erhalte ich folgende Exception/Fehlermeldung:

Delphi-Quellcode:
Nicht genügend Basistabelleninformationen zum Aktualisieren.
Interessanterweise funktionieren aber beide Prozeduren einwandfrei, wenn ich sie als 2 verschiedene Einzelprogramme nacheinander ausführe. Es funzt nur nicht innerhalb des selben Programms nacheinander.
Muss man da vorher irgendwas auf NIL setzen oder was?

Gruß

Gambit

Union 2. Okt 2004 16:29

Re: Problem mit Foxpro Tabelle
 
Zitat:

Zitat von Gambit
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  AdoConnection1.Connected:= true;
  AdoQuery1.Open;
  AdoQuery1.Edit;
  AdoQuery1.Append;
  AdoQuery1.FieldByName('Nr').AsString:='2';
  AdoQuery1.FieldByName('Titel').AsString:='Der Pate';
  AdoQuery1.FieldByName('SearchText').AsString:='DER PATE';
  AdoQuery1.Post;
end;

In welcher Zeile tritt die Exception auf ? Warum verwendest Du Edit zusammen mit Append ? Append bzw. Insert genügen!

Gambit 2. Okt 2004 16:38

Re: Problem mit Foxpro Tabelle
 
wenn ich beide Methoden im selben Programm ausführe kommt die Exception tritt bei ADOQuery1.Post.

Gruß

Gambit

MrSpock 2. Okt 2004 17:17

Re: Problem mit Foxpro Tabelle
 
Hallo Gambit,

Edit wird nur benutzt um einen bestehenden Datensatz zu editieren. Append um einen Datensatz einzufügen, der dann automatisch im Editiermodus ist. Lasse also einmal den Aufruf von Edit weg.

Gambit 2. Okt 2004 18:24

Re: Problem mit Foxpro Tabelle
 
Nutzt auch nix, wenn ich Edit weglasse, gleiche Fehlermeldung...

MrSpock 2. Okt 2004 19:39

Re: Problem mit Foxpro Tabelle
 
Hallo Gambit,

wenn du in der Button2 Methode AdoQuery1.Open schreibst, wird ja versucht das zugeordnete SQL Statement auszuführen. Steht da immer noch das Create Stetement drin? Dann kannst du die Query gar nicht mit Open öffnen. Du könntest dann besser mit einer AdoTable arbeiten.

Gambit 2. Okt 2004 19:54

Re: Problem mit Foxpro Tabelle
 
Spock, du bist ein Held!!

Jetzt sieht meine Methode so aus und es funzt:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  AdoQuery1.sql.clear;
  AdoQuery1.SQL.add('create table tmp (Nr c(10), Titel c(100), SearchText c(100))');
  AdoQuery1.ExecSQL;

  AdoQuery1.sql.clear;
  AdoQuery1.SQL.add('select * from tmp');
  AdoQuery1.ExecSQL;

  ADOConnection1.Connected:= true;

  AdoQuery1.Open;
  AdoQuery1.Append;
  AdoQuery1.FieldByName('Nr').AsString:='2';
  AdoQuery1.FieldByName('Titel').AsString:='Der Pate';
  AdoQuery1.FieldByName('SearchText').AsString:='DER PATE';
  AdoQuery1.Post;
end;
Schwere Geburt, Danke!

Live long and prosper!

Gambit

MrSpock 2. Okt 2004 20:07

Re: Problem mit Foxpro Tabelle
 
Hallo Gambit,

ich meine, du könntest die beiden Zeilen:

Delphi-Quellcode:
AdoQuery1.ExecSQL;

  ADOConnection1.Connected:= true;
noch einsparen. Ein SELECT Statement wird nicht mit ExecSQL, sondern mit Open ausgeführt. Das Open folgt ja kurz darauf. Die Verbindung sollte ja schon hergestellt sein, sonst könntest du das erste Statement nicht ausführen.

Gambit 2. Okt 2004 20:18

Re: Problem mit Foxpro Tabelle
 
Faszinierend, du hast natürlich recht, logisch...;)

Das mit ExcecSQL war mir eigentlich auch klar, das mit der Connection aber nicht. Zur Entwurfszeit steht die nämlich auf false. Dann müsste .SQL.Clear die Connection wohl schon automatisch mit herstellen oder was?

Gruß

Gambit

MrSpock 2. Okt 2004 20:36

Re: Problem mit Foxpro Tabelle
 
Hallo Gambit,

das weiß ich auch nicht. Ich hatte vermutet, dass du im Programmcode irgendwo die Connection auf True setzt, bevor du das Create Statement ausführst. Ich selbst arbeite nicht mit ADO Komponenten, deshalb bin ich mir nicht sicher, ob dort die Verbindung automatisch hergestellt wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:38 Uhr.
Seite 1 von 2  1 2      

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