Re: Recordset-Problem
- From: Peter Götz <gssg_nospam@xxxxxxxxxxx>
- Date: Tue, 15 Nov 2005 13:15:00 +0100
Hallo Torsten,
> >> rs.ActiveConnection = Conn
> >
> > Das sollte besser heissen:
> > Set rs.ActiveConnection = Conn
> >
> > Bei Deiner Variante (ohne Set) würde als ActiveConnection nicht die
> > bereits
> > existierende Instanz des Connectionobjektes Conn verwendet, sondern es
> > würde
> > eine neue (weitere) Instanz erstellt.
>
> Danke,gut zu wissen.
Weisst Du auch warum das so ist?
> > Ein Recordset mit clientseitigem Cursor kann kein dynamisches Recordset
> > sein.
> > Ein sinnvoller Wert wäre adOpenStatic.
> > Beim Zugriff via Jet-Engine auf eine Access.mdb sind Recordsets mit
> > dynamischen Cursor überhaupt nicht möglich. Bestenfalls wäre
adOpenKeyset
> > möglich, was aber einen serverseitigen Cursor mit dem damit verbundenen
> > hohen Ressourcenverbrauch erfordern würde.
>
> Wird von Ado "auf Static umgebogen", deswegen hab ich nicht mitbekommen,
> "daß es nicht geht".
Ja, ADO biegt sich unpassende Einstellungen von Recordset-Eigenschaften
zurecht ohne einen Fehler auszulösen oder sich sonstwie bemerkbar zu machen.
Es ist deshalb angebracht, genau zu überlegen, mit welchen Werten man die
Eigenschaften belegt und auch zu kontrollieren, was ADO letztlich daraus
gemacht hat.
> > Und was hindert Dich daran, ein Recordset mit der entsprechenden
> > Where-Klausel zu öffnen?
>
> Ich hab immer ein neues recordset, oder ich muß das Alte vorher schließen.
> einfach ein Requery ist besser,denke ich.
Ein Requery ohne "Zusätze" wird auch das gesamte Recordset neu einlesen.
> Außerdem ist die Arbeit mit den Parameter-Objekten mehr .NET-like und auch
> übersichtlicher.
Ich habe leider immer noch nicht wirklich verstanden, wie Deine Anwendung
arbeitet und kann deshalb nur im Nebel stochern.
In vielen Fällen ist es z.B. günstig, eine grosse Menge an Datensätzen in
einem Stück einzulesen und dann per Recordset.Filter und/oder Recordset.Find
je nach Bedarf und Anwendungssituation entsprechende Teilmengen aus den nun
lokal vorhandenen Datensätzen herauszupicken. Eine solche Arbeitsweise
vermeidet wiederholte Zugriffe auf den DB-Server via LAN und kann so dazu
beitragen die Last beim Server und auf dem LAN zu verringern.
> > Du hast vermutlich bei Deinem Connectionobjekt keinen Wert für
> > CursorLocation angegeben. Als Default-Wert nimmt ADO dann adUseServer.
>
> Korrekt.
>
> Ich habe mich für die Variante von Herrn Basedau entschieden.
> Hatte das überlesen, daß auch ein Commend-Objekt geht.
Wenn Du mit Parametern arbeiten willst, ist der Weg über das
ADODB.Command-Objekt der richtige. Wie aber schon vorher erwähnt, ist es
eine Überlegung wert, ob ein einmaliges Einlesen aller Datensätze und
späteres Filtern bzw. Suchen (Find) der dann bereits im Client vorhandenen
Datensätze evtl. günstiger ist. Ein RS.Filter oder RS.Find auf ein Recordset
mit clientseitigem Cursor muss keine Daten aus der DB lesen und ist deshalb
entsprechend schnell.
Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tips u. Beispielprogrammen)
.
- Follow-Ups:
- Re: Recordset-Problem
- From: Konrad Hammerer
- Re: Recordset-Problem
- References:
- Recordset-Problem
- From: Torsten Blohm
- Re: Recordset-Problem
- From: Peter Götz
- Re: Recordset-Problem
- From: Torsten Blohm
- Re: Recordset-Problem
- From: Peter Götz
- Re: Recordset-Problem
- From: Torsten Blohm
- Recordset-Problem
- Prev by Date: Re: [Newbie] Zugriff auf AccessDB, neuen Datensatz generieren, Auslesen von Daten
- Next by Date: Re: read-only MDB über VBA auslesen
- Previous by thread: Re: Recordset-Problem
- Next by thread: Re: Recordset-Problem
- Index(es):
Relevant Pages
|