Announcement

Collapse
No announcement yet.

Meldung "Sperrungsdatei zu groß" bei Daten-Auswertung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Meldung "Sperrungsdatei zu groß" bei Daten-Auswertung

    Hallo zusammen,

    ich werte über eine Kombination aus dbQuery und dbTable Daten aus und bekomme immer nach der gleichen Anzahl Daten (510) zuerst die Meldung: „In Ihrem Projekt ist ein DBEnginError aufgetreten. ‚Ungültiger Parameter’“ und nach einem erneuten Aufruf ‚Sperrungsdatei ist zu groß’. Erst wenn ich das Programm beende und wieder neu starte, kann ich z.B. die nächsten 510 Sätze auswerten. Dabei ist es unabhängig, wie viele Datensätze bei der zweiten SQL-Abfrage (dbQuery2) gefunden werden

    Das Vorgehen ist wie folgt:
    Eingrenzung der Daten über 1. SQL-Abfrage
    Satzweises abarbeiten dieser SQL-Menge. Bei jedem Satzwechsel wird Table1 über FindKey auf den Datensatz im dbQuery1 gesetzt.

    while not dbQuery1.eof do<br>
    begin<br>
    ..zspUpdateClick(nil); // Aktualisierung von Daten<br>
    ..dbQuery1.Next;<br>
    end;<br>

    procedure TfoedLief. DbQuery1AfterScroll(DataSet: TDataSet);<br>
    begin<br>
    ..dbTable1.FindKey([dbQuery1.FieldByName('Rufname').Value]);<br>
    end;<br>

    Und hier die Bearbeitung der zweiten dbQuery

    Procedure TfoedLief.zspUpdateClick(Sender: TObject);<br>
    begin<br>
    ..dbQuerry2.Close;<br>

    ..dbQuerry2.SQL.Text:='SELECT A.Nr, A.ID, P.LiefMenge';<br>
    ..dbQuerry2.SQL.Add('FROM Prarprot P');<br>
    ..dbQuerry2.SQL.Add('left outer join PPS_Artikel on P.ArtID=A.ID');<br>
    ..dbQuerry2.QL.Add('where ?????’) // Beliebige Suchabfrage<br>
    ..dbQuerry2.Open;<br>

    ..// Bearbeitung der gefundenen Daten. Dies hat aber kein Einfluss auf dieFehlermeldung<br>

    end;<br>

    Das Beispiel ist um einige Auswertungen gekürzt, zeigt aber den grundsätzlichen Aufbau.

    Wer kann helfen?

    Gruß Gerd

  • #2
    Hallo,

    falls die Datenbank-Tabellen im gleichen Verzeichnis wie die EXE liegen, muss dies geändert werden. Falls Paradox verwendet wird, sollte in der <B>BDE-Verwaltung</b> das Verzeichnis <b>NET DIR</b> sowie die TSession-Eigenschaft <b>PrivateDir</b> auf ein geeignetes Verzeichnis gesetzt werden.

    Falls die beiden ersten Tipps keine Wirkung zeichen und die Datenbank-Tabellen auf einer NTFS-Partition liegen, würde ich danach einen Test machen, ob sich beim Verschieben auf eine FAT16-Partition etwas an dem o.g. Verhalten ändert.
    &#10

    Comment


    • #3
      Hallo,

      die Tabelle liegen in einem Netzwerk-Verzeichnis, ebenso das NetDir-Verzeichnis. Die Exe-Dateien werden auf der lokalen Fetsplatte ausgeführt. PrivateDir wird nicht explizit deklariert.
      Das Verhalten ist auf den Windows Versionen W95, W98, NT und W2000 mit Fat16, Fat32 und NTFS gleich. Die Anwendung läuft an zwei Standorten mit genau dem gleichen Programm und der gleichen Datenbankstruktur aber unterschiedlichen Daten. Trotzdem tritt bei beiden Standorten die Meldung nach genau 510 bearbeiten Sätzen auf.
      Dabei ist es unerheblich, ob es unter den 510 Mastersätzen noch viele oder wenige Detailsätze gibt.

      Gruß Ger

      Comment

      Working...
      X