Announcement

Collapse
No announcement yet.

BOF und EOF

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

  • BOF und EOF

    Hallo zusammen,

    da ich kein D5 habe, aber dennoch ADO nutzen will, verwende ich hauptsächlich native ADO Objekte. Für den Einsatz db-fähiger Steuerelemente kommen die ADO Komponenten (Freeware, Opensource)von Aloha zum Einsatz. Ansonsten wir d D4 prof. und W2k verwendet.

    Ich erzeuge ein ADO Recordset und öffne es:
    <PRE>
    procedure TForm1.OpenDB;
    resourcestring
    CCS = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Sales\sales2000.mdb;Persist Security Info=False';
    c1 = 'SELECT Name1 FROM Kundendata;';
    var
    aCon : _Connection;
    aRS : _RecordSet;
    begin
    aCon:= CoConnection.Create as _Connection;
    aCon.Open(cCS, '', '', adConnectUnspecified);
    aRS := CoRecordset.Create as _Recordset;
    aRS.CursorLocation := adUseClient;
    aRS.Open(c1, aCon, adOpenDynamic, adLockOptimistic , 0);
    aRS.MoveFirst;
    end;
    </PRE>
    Wenn ich nun nach BOF oder EOF frage, ist beides 'FALSE'. Verwende ich ein aoADODataset mit exakt der gleichen Konfiguration und öffne das Dataset und sage 'First', ist BOF 'TRUE', der Befehl 'Last' erzeugt EOF = 'TRUE'.

    Das native ADO Recordset enthält vor dem ersten und nach dem letzten Datensatz immer einen "leeren" Datensatz. Wird vor, bzw. nach diesem MoveNext oder MovePrev gesagt, dann ist BOR, bzw. EOF erreicht.

    Woran liegt das und wie kann einem nativen ADO Recordset das 'Benehmen' des Komponenten Recordsets 'anerziehen'?

    Viele Grüsse
    Uwe

  • #2
    Hallo,

    die Regeln zu BOF und EOF sowie die Übersichts-Tabellen, unter welchen Umständen welcher Wert zurückgeliefert wird, hat Microsoft auf der Hilfeseite <i>BOF, EOF Properties</i> des Platform SDK dokumentiert.

    Wenn ein Recordset geöffnet wird, das mindestens einen Datensatz enthält, wird automatisch der erste Datensatz positioniert (daher ist BOF und EOF = False). Microsoft definiert BOF und EOF als "Überlauf"

    Comment

    Working...
    X