Announcement

Collapse
No announcement yet.

"Merkmal nicht verfügbar" bei SQL-Anweisung in TQuery nach 749tem Aufruf

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

  • "Merkmal nicht verfügbar" bei SQL-Anweisung in TQuery nach 749tem Aufruf

    Hallo,<br>

    benutze Paradox-DB, Delphi5 prof, BDE 5.1.0, Windows 2000 Server<br>
    folgendes Problem (Ausschnitt aus Sourcecode):<br>
    <br>
    <code>
    while ... do begin<br>
    <br>
    QSArtikel.close;<br>
    QSArtikel.sql.clear;<br>
    QSArtikel.sql.add('select * from SArtikel');<br>
    QSArtikel.sql.add('where IDRubrik='+tsrubrik.fieldbyname('ID').asstring);<b r>
    QSArtikel.sql.add('order by artikel');<br>
    QSArtikel.prepare;<br>
    QSArtikel.open;<br>
    <br>
    QSArtikel.first;<br>
    site:=''; zinp:=0;rse:=1;<br>
    while (not QSArtikel.eof) do begin<br>
    <br>
    QSAusfuehrung.close;<br>
    QSAusfuehrung.sql.clear;<br>
    QSAusfuehrung.sql.add('select * from SAusfuehrung');<br>
    QSAusfuehrung.sql.add('where IDArtikel='+qsartikel.fieldbyname('ID').asstring); <br>
    QSAusfuehrung.sql.add('order by ausfuehrung');<br>
    QSAusfuehrung.prepare;<br>
    <b>QSAusfuehrung.open;</b><br>
    <br>
    while (not QSAusfuehrung.eof) do begin<br>
    /// läuft hier genau 749 mal durch
    <br>
    ...<br>
    </code>
    <br>
    Mit der ersten Abfrage wird die zweite Abfrage angesteuert, die zweite Schleife (<b>while (not QSAusfuehrung.eof) do begin</b>) ganze läuft genau 749 mal problemlos, dann kommt <b>an der fett markierten Stelle</b> die Meldung "Merkmal nicht verfügbar". Habe den 749zigsten Datensatz geprüft, ist aber in Ordnung. Habe mittlerweile in der BDE alle Parameter geändert, jedoch keine Änderung...<br>
    Habe so den Eindruck, als wenn in der BDE irgendwas passiert, Überlauf oder was anderes ...<br>
    Habe das ganze mal unter <b>NT4.0 SP6a getestet</b>, und siehe da, es läuft <b>ohne Probleme</b> durch ...
    Wer weiss Rat ?<br>
    <br>
    Gruss Maikel<br>
    [email protected]

  • #2
    Hallo,

    warum wird der SELECT-Text in der Schleife jedesmal neu zusammengebaut? Normalerweise verwendet man dafür eine parametisierte SELECT-Anweisung, die fest über den Objektinspektor in der Delphi-IDE zugewiesen wird:
    <pre>
    select * from SArtikel
    where IDRubrik = :ID
    order by artikel
    </pre>
    Diese TQuery-Instanz wird nur <b>einmal vor</b> dem Eintritt in die Schleife mit <b>Prepare</b> vorbereitet, in der Schleife wird nur der Parameter-Wert zugewiesen und die Abfrage ausgeführt (Open).
    <pre>
    QSArtikel.Params[0].Value := tsrubrik.fieldbyname('ID').asstring;
    QSArtikel.Open;
    </pre&gt

    Comment


    • #3
      Danke für den Hinweis, habe es geändert, der Fehler ist aber nach wie vor der gleiche ...<br>
      <br>
      Gruss Maike

      Comment

      Working...
      X