![]() |
Problem mit Foxpro Tabelle
Hallo,
ich kann wie folgt eine FoxPro Tabelle mit ADO anlegen, wenn entsprechender OLE Treiber ist:
Delphi-Quellcode:
Wenn ich aber jetzt versuche, die Tabelle mit Daten zu füllen:
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;
Delphi-Quellcode:
, erhalte ich folgende Exception/Fehlermeldung:
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;
Delphi-Quellcode:
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.
Nicht genügend Basistabelleninformationen zum Aktualisieren.
Muss man da vorher irgendwas auf NIL setzen oder was? Gruß Gambit |
Re: Problem mit Foxpro Tabelle
Zitat:
|
Re: Problem mit Foxpro Tabelle
wenn ich beide Methoden im selben Programm ausführe kommt die Exception tritt bei ADOQuery1.Post.
Gruß Gambit |
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. |
Re: Problem mit Foxpro Tabelle
Nutzt auch nix, wenn ich Edit weglasse, gleiche Fehlermeldung...
|
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. |
Re: Problem mit Foxpro Tabelle
Spock, du bist ein Held!!
Jetzt sieht meine Methode so aus und es funzt:
Delphi-Quellcode:
Schwere Geburt, Danke!
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; Live long and prosper! Gambit |
Re: Problem mit Foxpro Tabelle
Hallo Gambit,
ich meine, du könntest die beiden Zeilen:
Delphi-Quellcode:
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.
AdoQuery1.ExecSQL;
ADOConnection1.Connected:= true; |
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 |
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 05:08 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