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
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
Comment