AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ADO: mehrfache Zugriffe auf Foxpro Tabellen: Fehermeldung
Thema durchsuchen
Ansicht
Themen-Optionen

ADO: mehrfache Zugriffe auf Foxpro Tabellen: Fehermeldung

Ein Thema von Gambit · begonnen am 30. Sep 2004 · letzter Beitrag vom 30. Sep 2004
Antwort Antwort
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#1

ADO: mehrfache Zugriffe auf Foxpro Tabellen: Fehermeldung

  Alt 30. Sep 2004, 16:04
Hallo,

ich möchte aus einer Tabelle(Foxpro) zunächst alle records löschen und dann neu anlegen:

Delphi-Quellcode:
DB_DataModul.MDBQuery.Close;
DB_DataModul.MDBQuery.SQL.Text:= 'delete from mdb';
DB_DataModul.MDBQuery.ExecSQL;
das funzt auch erstmal so...

wenn ich dann aber wie folgt weitergehe:

Delphi-Quellcode:
DB_DataModul.MDBQuery.Open;
DB_DataModul.MDBQuery.Edit;
  while not DB_DataModul.ZQueryDBMaster.Eof do
  begin
    DB_DataModul.MDBQuery.Append;
    DB_DataModul.MDBQuery.FieldByName('Nr').AsInteger:= DB_DataModul.ZQueryDBMaster.FieldByName('Nr').AsInteger;
    DB_DataModul.MDBQuery.Post;
    DB_DataModul.ZQueryDBMaster.Next;
  end;
DB_DataModul.MDBQuery.Close;
bekomme ich eine OLE DB Exception: Der aktuelle Provider unterstützt nicht die Wiedergabe mehrfacher Recordsets bei einer einzelnen Ausführung

Was mache ich denn da falsch?

Gruß

Gambit
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#2

Re: ADO: mehrfache Zugriffe auf Foxpro Tabellen: Fehermeldun

  Alt 30. Sep 2004, 20:15
Habe mittlerweile eine-allerdings unbefriedigende-Lösung gefunden:

wenn ich eine ADOConnection benutze, kann ich die Datensätze löschen mit:

ADOConnection.Execute('delete from mdb'); Danach kann ich dann wie beschrieben fortfahren:

Delphi-Quellcode:
DB_DataModul.MDBQuery.Open;
DB_DataModul.MDBQuery.Edit;
  while not DB_DataModul.ZQueryDBMaster.Eof do
  begin
    DB_DataModul.MDBQuery.Append;
    DB_DataModul.MDBQuery.FieldByName('Nr').AsInteger:= DB_DataModul.ZQueryDBMaster.FieldByName('Nr').AsInteger;
    DB_DataModul.MDBQuery.Post;
    DB_DataModul.ZQueryDBMaster.Next;
  end;
DB_DataModul.MDBQuery.Close;
Das Problem, welches sich aber aus der Foxprotabelle ergiebt ist, dass die Datensätze nicht wirklich gelöscht werden, sondern nur als gelöscht makiert werden. Bei jedem Durchgang wird die Datenbank dadurch um die Erstellgröße größer. Bei einer BDE Datenbank werden die frei gewordenen Plätze wenigstens wieder belegt wodurch die Datenbank zwar nie kleiner aber auch bei einem Durchgang nicht unwesentlich größer wird. Eben nur durch die hinzugefügten Datensätze.
Eine Möglichkeit die Foxprodatenbank auch physisch zu leeren gibts wohl so nicht...falls jemand was anderes weiß, immer her damit...

Gruß

Gambit
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:36 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