Announcement

Collapse
No announcement yet.

ADO // BOF oder EOF ist True ....

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

  • ADO // BOF oder EOF ist True ....

    Hallo,
    ich arbeite mit D5.1Ent. ADOUpdate2 MSDASQL 2.6 WProf2000
    und Sybabase Anywhere 6.1
    Wenn ich nun mit einem AdoDataset die Daten einer Tabelle anzeigen möchte
    werden die Daten bei Cursor clUseClient normal angezeigt, bei clUseServer
    gibt es die Meldung "Entweder BOF oder EOF ist True, oder der aktuelle
    Datensatz wurde gelöscht" Nein es gibt Daten, wurde auch nix gelöscht.
    Es ist egal welchen CursorType ich einstelle. Bei MSSQL2000 funktoniert es
    ohne Probleme - auch über ODBC.
    Wo liegt das Problem ?? Wo soll ich suchen ???

    Danke Christoph

  • #2
    Hallo,

    gibt es einen speziellen Grund, warum bei einer SQL-Datenbank wie Anywhere 6.1 der Wert clUseServer verwendet werden soll? Tritt das Problem auch dann auf, wenn auf ADO Express verzichtet und die Datenmenge der SELECT-Abfrage nur über das Connection- und Recordset-Objekt angefordert wird? Wenn ja, wird das Problem im ODBC-Treiber liegen

    Comment


    • #3
      Hallo, Danke für die schnelle Antwort
      TADOQuery beendet bei Server seitigem Cursor gleich beim Active mit einer Exception - bei Client Cursor läuft´s.
      Warum Server Cursor - Anzeige von Daten bei der Normalselektion von
      so 2000 Sätze, aber es können verschiedene Details eingeblendet werden, so werden bei kleinerem Group schnell mal 10000 Sätz draus
      Die will ich halt nicht immer übers Netz schicken

      Comment


      • #4
        Hallo,

        wenn nur das Laden der Datensätze stört, kann man zur Kombination von <b>clUseClient + eoAsyncFetchNonBlocking</b> greifen. ADO zeigt die sichtbaren Datensätze im TDBGrid sofort an und lädt die restlichen im Hintergrund, ohne das Programm einzufrieren:
        <pre>
        ADODataSet1.ExecuteOptions := [eoAsyncFetchNonBlocking];
        ADODataSet1.Active := True;
        </pre>
        In der Ereignisbehandlungsmethode für <b>OnFetchProgress</b> darf man dann den asynchronen Ladevorgang abbrechen, wenn zu viele Daten kommen:
        <pre>
        procedure TForm1.ADODataSet1FetchProgress(DataSet: TCustomADODataSet;
        Progress, MaxProgress: Integer; var EventStatus: TEventStatus);
        begin
        if Progress > 1000 then
        DataSet.RecordSet.Cancel;
        Application.ProcessMessages;
        end;
        </pre&gt

        Comment


        • #5
          Danke läuft !
          Das nennt man Live-Support ! :-)
          So und nun schreiben Sie mal an Ihrem ADO Buch weiter !!!
          Ich warte schon drauf !!

          Danke nochmal, Ch.Grun

          Comment

          Working...
          X