Re: Zeilen im Datagrid bewegen
From: Peter Götz (gssg_nospam_at_t-online.de)
Date: 02/02/05
- Next message: Peter Götz: "Re: Form Eigenschaften/Methoden"
- Previous message: Peter Götz: "Re: Listview Darstellung bei Schriftgrad 110%"
- In reply to: Alexander Szigetvary: "Re: Zeilen im Datagrid bewegen"
- Next in thread: Alexander Szigetvary: "Re: Zeilen im Datagrid bewegen"
- Reply: Alexander Szigetvary: "Re: Zeilen im Datagrid bewegen"
- Messages sorted by: [ date ] [ thread ]
Date: Wed, 2 Feb 2005 13:23:39 +0100
Hallo Alexander,
> Das ADODC-Steuerelement ist doch ganz nett.
Nett ja, vielleicht, aber völlig überflüssiger Ballast.
Das ADODC macht nichts anderes als ein ADODB.Connection-Objekt und ein
ADODB.Recordset-Objekt zu kapseln und Dir die Sicht auf die wahren Abläufe
bei diesen Objekten zu versperren.
> Damit kann ich das DG zumindest
> zu Entwurfszeit entsprechend berabeiten.
Was kannst Du wie beim DG zur Entwurfszeit mit dem ADODC bearbeiten?
> In VB6 kann ich doch das
> ADODB.Recordset nur zur Laufzeit füllen, oder?
Ja.
Und wo ist dabei das Problem?
> Vielleicht habe ich nicht ganz gut erklärt was ich will. Ich verstehe
nicht
> wie ich das mit deinem Code tun kann. Ich habe noch nie mit bookmarks
> gearbeitet.
Wohl auch eine Folge des Gebrauchs von ADODCs. Damit wirst Du vermutlich nie
lernen, wie Connectionobjekte und Recordsets funktionieren. Für stabil
laufende Datenbankanwendungen ist das aber schon eine unumgängliche
Voraussetzung.
> Ich habe allerdings gemerkt, dass mein Adodc.refresh und
> datagrid.rebind die bookmarks wieder löscht.
Bookmarks haben nur innerhalb des gerade aktuell geladenen Recordsets
Gültigkeit.
Du kannst nach dem Laden eines Recordsets die Reihenfolge der Datensätze
durch entsprechende Sortierung ändern. Dabei bleiben die Bookmarks gültig
und können unabhängig von der jeweiligen Sortierung zum Auffinden eines
bestimmten Datensatzes verwendet werden.
Dim BM as Variant
BM = RS.Bookmark
RS.MoveLast
RS.Bookmark = BM
Du kannst Dir auf so simple Weise also einen bestimmten Datensatz merken und
ihn durch setzen der Bookmark-Eigenschaft jederzeit wieder zum aktuellen
Datensatz machen.
Das funktioniert aber nur, solange das Recordset nicht neu geladen wird.
Sobald das Recordset neu geladen wird, werden auch die Bookmarks neu
vergeben und sind nicht mehr vergleichbar mit Bookmarks aus dem Recordset
vor dem erneuten Laden.
> Was ich erreichen möchte ist folgendes:
>
> Der Benutzer klickt einmal und wählt eine Zeile im DG aus. Danach klickt
er
> nicht mehr ins Datagrid sondern auf einen up oder down-button, der sich
> neben dem DG befindet um die vorher markierte Zeile im DG hinauf- oder
> hinterzuschieben. Pro klick auf den Button wandert die Zeile rauf oder
> runter. Das funktioniert zwar schon, aber jetzt muss der Benutzer die
Zeile
> immer wieder neu auswählen und das möchte ich ihm ersparen.
Genau das erreichst Du mit der Methode
DataGrid.SelBookmarks.Add RS.Bookmark
oder eben ganz einfach durch Setzen der MarqueeStyle-Eigenschaft des
DataGrids.
Beide Methoden habe ich Dir im vorigen Posting ja bereits gezeigt.
> Vom Code her habe ich in meiner Datenbankspalte, die die Reihenfolge
> aufnimmt.
Auch nach mehrmaligem Lesen verstehe ich nicht, was dieser Satz aussagen
soll.
> Wenn ich hinaufschieben will
Wenn Du was hinaufschieben willst?
> vertausche ich in der Datenbank
> einfach die beiden Reihungswerte,
Wer oder was sind diese "Reihungswerte?"
> refreshe die datasource (adodc) und
> rebinde das dg.
Damit lädtst Du das vom ADODC verwaltete Recordset komplett neu. In einem
LAN mit einer hohen Anzahl von Benutzern und grosser Anzahl von Datensätzen
würdest Du damit recht schnell eine unerwünscht hohe Netz- und Serverlast
produzieren und somit den gesamten Betrieb einbremsen.
Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tips u. Beispielprogrammen)
- Next message: Peter Götz: "Re: Form Eigenschaften/Methoden"
- Previous message: Peter Götz: "Re: Listview Darstellung bei Schriftgrad 110%"
- In reply to: Alexander Szigetvary: "Re: Zeilen im Datagrid bewegen"
- Next in thread: Alexander Szigetvary: "Re: Zeilen im Datagrid bewegen"
- Reply: Alexander Szigetvary: "Re: Zeilen im Datagrid bewegen"
- Messages sorted by: [ date ] [ thread ]