Hallo Leute,
ich bin (immer noch) dabei einige Tests mit ADO durchzuführen und bin auf folgendes 'lustige Feature' gestoßen:
adsartikel ist ein TADODataSet, dass über ODBC auf eine informix 7 DB zugreift.
<PRE>
if (!adsartikel->IsEmpty())
{
adsartikel->First();
do
{
count++;
adsartikel->Next();
} while (!adsartikel->Eof);
}
</PRE>
Laut Doku soll mit ->First() auf den ersten DS positioniert werden. Leider gibt es mir den ZWEITEN Datensatz zurück... Wenn ich die Zeile adsartikel->First(); auskommentiere funktioniert es, da wird mir dann auch der erste DS zurückgegeben. Kennt einer dieses Phänomen? Gibt es eine Abhilfe? Wie sonst kann ich sicher stellen, dass ich auf dem ersten DS stehe (außer das ADODataSet schließen und neu öffnen)?
BCB 6 Enterprise, Update 4 installiert.
Grüße
Jochen
P.S.:
Hab's nochmal so getestet:
<PRE>
if (!adsartikel->IsEmpty())
{
if (adsartikel->Bof)
RichEdit1->Lines->Add(adsartikelartnr->AsString + " ist der erste DS");
adsartikel->First();
if (adsartikel->Bof)
RichEdit1->Lines->Add(adsartikelartnr->AsString + " ist der erste DS");
}
</PRE>
Ausgabe im RichEdit:<BR>
2 ist der erste DS<BR>
540.047-3.0001 ist der erste DS
Wobei "2" tatsächlich der erste DS ist...
ich bin (immer noch) dabei einige Tests mit ADO durchzuführen und bin auf folgendes 'lustige Feature' gestoßen:
adsartikel ist ein TADODataSet, dass über ODBC auf eine informix 7 DB zugreift.
<PRE>
if (!adsartikel->IsEmpty())
{
adsartikel->First();
do
{
count++;
adsartikel->Next();
} while (!adsartikel->Eof);
}
</PRE>
Laut Doku soll mit ->First() auf den ersten DS positioniert werden. Leider gibt es mir den ZWEITEN Datensatz zurück... Wenn ich die Zeile adsartikel->First(); auskommentiere funktioniert es, da wird mir dann auch der erste DS zurückgegeben. Kennt einer dieses Phänomen? Gibt es eine Abhilfe? Wie sonst kann ich sicher stellen, dass ich auf dem ersten DS stehe (außer das ADODataSet schließen und neu öffnen)?
BCB 6 Enterprise, Update 4 installiert.
Grüße
Jochen
P.S.:
Hab's nochmal so getestet:
<PRE>
if (!adsartikel->IsEmpty())
{
if (adsartikel->Bof)
RichEdit1->Lines->Add(adsartikelartnr->AsString + " ist der erste DS");
adsartikel->First();
if (adsartikel->Bof)
RichEdit1->Lines->Add(adsartikelartnr->AsString + " ist der erste DS");
}
</PRE>
Ausgabe im RichEdit:<BR>
2 ist der erste DS<BR>
540.047-3.0001 ist der erste DS
Wobei "2" tatsächlich der erste DS ist...
Comment