VScroll + DataGrid

Hallo alle miteinander.
Hab ja gestern schonmal n Thread gehabt in dem standen so meine Problemchen mit dem mausrad die ich nun gelöst habe.
Aber das Problem welches sich als nächstes ergab war folgendes:

Die Scrollbar eines DataGrids wird nicht aktualisiert beim Change. Das heist wenn man diesen balken nach unten zieht wird der fensterinhalt erst beim loslassen des Maus Buttons aktualisiert.

Jetz wurde mir geraten ich solle n VScroll über das Originale Vscroll von dem Grid legen und den ganzen spaß verknüpfen. Aber irgendwie hab ich da so meine Probleme damit.

 Dim Delta As Integer
 Dim Value As Long

 With VScroll

 'Mausrad-Drehung bestimmen:
 Delta = (wParam And &HFFFF0000) \ &H10000

 'Zielwert bestimmen:
 If Delta .Max: Value = .Max
 End Select

 'ScrollBar-Anzeige aktualisieren:
 .Value = Value

 End With
End Sub

Private Sub VScroll\_Change()
 VScroll\_Scroll
End Sub

Private Sub VScroll\_Scroll()
 DGV.Scroll 0, VScroll.Value

End Sub

So es Scrollt ja ^^ aber nur in eine Richtung. Das ist mir auch klar warum. Denn der Value wert der VScroll hat nur Positive werte. Ich brauhc aber n negativen wert um hoch zu scrollen. Aber der wParam wert der beinhaltet ob das Mausrad nach oben oder Unten gedreht wurde ist ja oben in der Funktion die sich auf die Module bezieht die die bewegung des maus rades auswerten. Wie kann ich nun dem Grid erklären das es bei Mausrad hoch hoch scrollen soll und umgekehrt? ^^ Ich finde irgendwie nicht die richtigen worte :smiley:

Hoffe mir kann wer helfen :wink:

Danke vom digi … :smile:

Hallo,

Datagrid ist ja wirklich schrecklich. Wer hat das üble Ding nur geschrieben … :smile:

Die TopRow Eigenschaft fehlt natürlich auch, deshalb habe ich mit .Scroll rumgespielt. Irgendwie komme ich nicht so recht vorwärts, deshalb gibt’s erst mal das Ergebnis, wie ich es bis jetzt habe.

Private Sub Form\_Load()
 Form1.Show
 DoEvents
 VScroll1.Min = 1
 VScroll1.Max = DataGrid1.ApproxCount - DataGrid1.VisibleRows + 3
End Sub

Private Sub VScroll1\_Change()
 w1 = DataGrid1.FirstRow
 w2 = VScroll1.Value
 While w1 w2
 w1 = DataGrid1.FirstRow
 w2 = VScroll1.Value
 If w2 w2
 w1 = DataGrid1.FirstRow
 w2 = VScroll1.Value
 If w2 
Das scrollt aber immer nur bis zur vorletzten Zeile. Entweder fehlt oben eine oder die Eingabezeile wird nicht sichtbar, so wie in dem Beispiel hier. Sieh mal, ob Du den Fehler findest, ich such mal, ob ich den Datensatz selektiert bekomme. :smile:

Gruß, Rainer

Es funktioniert zwar. ABER ^^ … wenn man den balken bis ganz unten verschiebt, dann schmiert das ab. Und da ich da mit dem scrollrad dieses subclass ding eingebaut hab schmiert er auch einfach ab. Das is bei den letzten datensätzen. Weiß nich ob du des gemeint hast ^^ Aber ich bin beeindruckt das das so halbwegs geht ^^ Danke für die mühe :smile:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

Es funktioniert zwar. ABER ^^ … wenn man den Balken bis ganz
unten verschiebt, dann schmiert das ab.

??? Komisch, abgeschmiert ist er mir nicht … Moment! Hast Du ‚AddNew‘ eventuell auf ‚False‘ stehen? Dann ändere:

VScroll1.Max = DataGrid1.ApproxCount - DataGrid1.VisibleRows + 3

in

VScroll1.Max = DataGrid1.ApproxCount - DataGrid1.VisibleRows + 2

dann scrollt das Dinge eine Zeile weniger. Nur erreichst Du dann mit dem Scrollbalken die letzte Zeile nicht.

Wenn Du aber ‚AddNew‘ auf ‚False‘ hast, drängt sich mir die Frage auf, warum Du Dich überhaupt mit dem Datagrid herumquälst und nicht das MSFlexgrid dafür nimmst. Brauchst Du das Datagrid wirklich? Oder hast Du das Steuerelement nur leichter gefunden?
Das Datagrid ist dazu da, Daten in der Datenbank zu ändern, ohne viel selbst programmieren zu müssen. Um das Recordset nur anzuzeigen ist das Flexgrid besser geeignet. Was beide gemeinsam haben, bei mehr als 32000 Datensätzen arbeiten sie unzuverlässig! Es werden dann nicht alle Datensätze angezeigt, Du bekommst noch nicht einmal einen Fehler. Die letzten Datensätze werden dann einfach nicht mit angezeigt, der Anwender erfährt nicht, daß es noch mehr Datensätze gibt.

Und da ich da mit dem
scrollrad dieses subclass ding eingebaut hab schmiert er auch
einfach ab. Das is bei den letzten datensätzen. Weiß nich ob
du des gemeint hast ^^ Aber ich bin beeindruckt das das so
halbwegs geht ^^ Danke für die mühe :smile:

Ich bin eher verärgert über das Datagrid und das unverständliche Verhalten. Ich werde das Ding garantiert nie wieder verwenden. Zu schade, daß ich das (noch!) nicht besser kann. :smile:

Gruß, Rainer

Hallo,

Es funktioniert zwar. ABER ^^ … wenn man den Balken bis ganz
unten verschiebt, dann schmiert das ab.

??? Komisch, abgeschmiert ist er mir nicht … Moment! Hast Du
‚AddNew‘ eventuell auf ‚False‘ stehen? Dann ändere:

VScroll1.Max = DataGrid1.ApproxCount - DataGrid1.VisibleRows +
3

in

VScroll1.Max = DataGrid1.ApproxCount - DataGrid1.VisibleRows +
2

dann scrollt das Dinge eine Zeile weniger. Nur erreichst Du
dann mit dem Scrollbalken die letzte Zeile nicht.

Wenn Du aber ‚AddNew‘ auf ‚False‘ hast, drängt sich mir die
Frage auf, warum Du Dich überhaupt mit dem Datagrid
herumquälst und nicht das MSFlexgrid dafür nimmst. Brauchst Du
das Datagrid wirklich? Oder hast Du das Steuerelement nur
leichter gefunden?
Das Datagrid ist dazu da, Daten in der Datenbank zu ändern,
ohne viel selbst programmieren zu müssen. Um das Recordset nur
anzuzeigen ist das Flexgrid besser geeignet. Was beide
gemeinsam haben, bei mehr als 32000 Datensätzen arbeiten sie
unzuverlässig! Es werden dann nicht alle Datensätze angezeigt,
Du bekommst noch nicht einmal einen Fehler. Die letzten
Datensätze werden dann einfach nicht mit angezeigt, der
Anwender erfährt nicht, daß es noch mehr Datensätze gibt.

Und da ich da mit dem
scrollrad dieses subclass ding eingebaut hab schmiert er auch
einfach ab. Das is bei den letzten datensätzen. Weiß nich ob
du des gemeint hast ^^ Aber ich bin beeindruckt das das so
halbwegs geht ^^ Danke für die mühe :smile:

Ich bin eher verärgert über das Datagrid und das
unverständliche Verhalten. Ich werde das Ding garantiert nie
wieder verwenden. Zu schade, daß ich das (noch!) nicht besser
kann. :smile:

Also. Naja ich hatte vorher wie gesagt noch nie was mit VB gemacht und hab vom DataGrid gehört hab die komplette applikation auf dem ding aufgebaut meine events usw. und ich glaub es dürfte verständlich sein wenn ich jetz nich alles wieder ändern will :smile: Es funktioniert ja jetz wunderbar :smile: *zufrieden auf sein werk herabschaut* :smiley:

Danke für die hilfe! Ohne deine hilfe währ ich nich so weit gekommen oder hätte länger gebraucht ^^

Hallo,

Also. Naja ich hatte vorher wie gesagt noch nie was mit VB
gemacht und hab vom DataGrid gehört hab die komplette
applikation auf dem ding aufgebaut meine events usw. und ich
glaub es dürfte verständlich sein wenn ich jetz nich alles
wieder ändern will :smile:

vollstes Verständnis, das würde ich wohl auch nicht tun. :smile: Das war mehr ein Tipp für das nächste Projekt. Wenn die Tabelle nur angezeigt werden soll, Du aber nicht in die Tabelle klicken willst, um dort Werte zu verändern, dann ist das Flexgrid besser geeignet.

Es funktioniert ja jetz wunderbar :smile:

Das freut mich! Dann bis zum nächsten Problem.

Gruß, Rainer

Ähm ja ^^ nächstes Problem :smile:
Ist bereits da… Ich habe ja 2 Filter die miteinander verkettet sind.
So. Ich hab mir ne Funktion angelegt die aufgerufen wird, wenn diese Filter aktiviert worden sind. Und auch bei der Suche. Bei der Suche funktioniert diese Funktion wunderbar. Aber bei den Filtern, hab ich

Matches = rsMain.RecordCount
bzw wenn suche ausgeführt worden ist
Matches = rsSuche.RecordCount

Eingebaut genau wie auch bei der suche.

Zudem hab ich in diese funktion folgendes geschrieben:

Private Sub ScrollMaxMin()
 VScroll1.Min = 1
 VScroll1.Max = DGV.ApproxCount - DGV.VisibleRows + 2

 If DGV.ApproxCount 

Das funktioniert auch bei den filtern, dass dort die Scrollbar verschwindet wenn weniger als 17 sind. Aber wenn mehr als 17 sind, aktualisiert er anscheinend nicht den Max wert und erzeugt somit eine endlosschleife und das Programm schmiert vom feinsten ab.
Die Matches variable ist im Kopf Global deklariert als Integer und wird von den einzelnen sub funktionen wie zb suche, filter oder auch einfach die Main funktion aktualisiert. Das heißt ich kann immer ermitteln wieviele Records das RecordSet gerade hat.

Aber bei den Filtern funktioniert das irgendwie nicht. Obwohl er dort einen konkreten wert in einem Label anzeigt wie meinetwegen 56 wird dieser aber nicht als Max wert genommen habe ich den eindruck.

Hm hört sich bestimmt ziemlich unverständlich an ^^

ne ahnung wieso? Ich bastel gerade da dran rum aber komm auf kein grünen zweig ^^

grüße vom digi :smile:


> <small>[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]</small>

Hallo,

Hm hört sich bestimmt ziemlich unverständlich an ^^

ne ahnung wieso? Ich bastel gerade da dran rum aber komm auf
kein grünen zweig ^^

Ahnung ist zu viel gesagt, eine Vermutung. Kopier mal einen Teil des Codes in ein neues Projekt, in dem Du auf das Scrollrad verzichtest, dann stürzt das nicht so oft ab.

Dann zeige das Recordset an und laß Dir in ein Label schreiben, wie viel Datensätze angezeigt werden. Dann setze den Filter und laß in einem weiteren Label die Anzahl Datensätze erneut ausgeben. Stehen da jetzt wirklich nur die sichtbaren Zeilen? Es könnte sein, daß Datagrid die ausgefilterten Datensätze nur unsichtbar schaltet, weil das Recordset ja nicht verändert wird, sondern nur die Anzeige des Datagrid. Dann könnten die unsichtbaren Datensätze weiterhin mitgezählt werden. Wenn das so ist, können wir den Code so vergessen und müssen nach einer ‚ordentlichen‘ Lösung suchen. (oder einen nöch übleren Code schreiben, der die Endlosschleife ‚austrickst‘. :smile:)

Gruß, Rainer

Also er bekommt die richtigen Werte. Und er zählt auch wirklich nur die die gerade Visible sind. Irgendwie hab ich gerade kein Plan wie ich die Endlosschleife austricksen sollte bzw wie du das meinst.*g*

Ich habe da mal das Probiert die While Schleife noch in ne IF abfrage zu klatschen die so aussieht:

If Not w2 \> DGV.ApproxCount Then
 While w1 w2
 w1 = DGV.FirstRow
 w2 = VScroll1.Value
 If w2 

Das funktionierte zuvor, bevor du das mit dem
VScroll1.Max = DGV.ApproxCount - DGV.VisibleRows + 2
gepostet hast. Aber auch nur so das die Letzten 17 Datensätze nicht mit indexiert waren. Aber da ist er erstmal nich mehr abgeschmiert.

Aber bei dem Filter Funktioniert das nicht, obwohl auch wirklich die Zählung der einträge des DGV gleich der Matches (RecordCount) aus dem Recordset sind.


> <small>[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]</small>

Hallo,

Also er bekommt die richtigen Werte. Und er zählt auch
wirklich nur die die gerade Visible sind. Irgendwie hab ich
gerade kein Plan wie ich die Endlosschleife austricksen sollte
bzw wie du das meinst.*g*

ich z.Z. auch nur verschwommen, bis aus der Idee ein Code wird, dauert es noch einen Moment. :smile:

Ich habe da mal das Probiert die While Schleife noch in ne IF
abfrage zu klatschen die so aussieht:

If Not w2 > DGV.ApproxCount Then
While w1 w2
w1 = DGV.FirstRow
w2 = VScroll1.Value
If w2

Das funktionierte zuvor, bevor du das mit dem
VScroll1.Max = DGV.ApproxCount - DGV.VisibleRows + 2
gepostet hast.

Du weißt, was ich da rechne? Du hast ja offensichtlich 17 sichtbare Zeilen, wenn ich Dein Beispiel weiter oben so betrachte. Wenn Du nun 20 Datensätze hast, wird VSCroll1.Max auf 20-17+2 = 5 gesetzt. Ganz oben ist die Kopfzeile des Datagrids und wir fangen auch bei 1 an zu zählen. Ist der erste Datensatz oben sichtbar, dann ist der Letzte sichtbare Datensatz der Datensatz Nr.16. … 1-16 … ist der zweite …
2-17
3-18
4-19
5-20
… 5 ist VScroll1.max, weil das Datagrid nicht weiter nach oben scrollt, als bis der letzte (20) Datensatz der unterste ist. Weiter scrollt es nicht. Versuchst Du dann doch noch zu scrollen, VScroll1.max auf 6 zu setzen, passiert folgendes: Der oberste Datensatz hat die Nummer 5, Du schickst den Scrollbefehl, das Datagrid prüft, ob es weiter scrollen darf und lehnt die Ausführung ab. Dann ist der Obere Datensatz immer noch Nummer 5, wird nie Nummer 6. Wenn das Passiert, hängt das Programm in einer Endlosschleife.

An der Stelle will ich einen Prüfwert einfügen. Ist Datagrid1.Rowfirst nach dem Scrollen so groß, wie vor dem Scrollen soll die Prozedur mit ‚Exit Sub‘ verlassen werden … das kannst Du eigentlich auch ohne mich programmieren. :smile: Sag, ob’s geklappt hat.

Gruß, Rainer

OK ^^ verstanden hab ichs. Aber mit der Umsetzung haperts n bisl.

Also:
Ich dacht mir das so, dass ich ne Globale Variable Deklariere die in den einzelnen Subs geändert wird. Namens CheckFR (integer).
In dieser steht zum zeitpunkt des aufrufs der wert, der zzt First Row ist.

In den Beiden funktionen der VScroll1_Change und VScroll1_Scroll muss ich dann an irgendeiner stelle, diesen wert mit dem Aktuellen FirstRow vergleichen. Wenn dieser dann noch gleich ist „Exit Sub“. ?!

Also dacht ich mir:

Private Sub VScroll1\_Scroll()
 Dim w1 As Integer
 Dim w2 As Integer
 w1 = DGV.FirstRow
 w2 = VScroll1.Value

 While w1 w2
 w1 = DGV.FirstRow
 w2 = VScroll1.Value
 If w2 

so in etwa ^^ ... aber kann auch nich sein. Dann hab ich nochmal Probiert FirstRow neu zu ermitteln nach dem DGV.Scroll. Aber funzt auch nicht. So ganz versteh ichs nich ^^ es ist schrecklich ^^

hmm ... hab schon hier rum probiert und mal da aber so wirklich weiss ich nich wieso s net geht. Und wenn ich in den Debug Modus gehe um mir mal die variablen anzuschauen was wo drinne steht usw dann hängt gleich alles und ich muss mit n Tast Manager alles beenden. :frowning: meine nerven liegen so langsam blank ^^

grüße vom digi :smile:

So…
N kleinen fortschritt gibt es.

Private Sub VScroll1\_Scroll()
 Dim w1 As Integer
 Dim w2 As Integer
 w1 = DGV.FirstRow
 w2 = VScroll1.Value

 While w1 w2
 w1 = DGV.FirstRow
 w2 = VScroll1.Value
 If w2 

So hab ichs jetz gemacht. Und das geht jetz quasi, wenn ich bei dem:
VScroll1.Max = DGV.ApproxCount - DGV.VisibleRows + 3
Angebe wenigstens in der suche und in dem HauptRecordset bis ganz zum letzten Datensatz zu scrollen ohne das ne endlosschleife auftritt.

Aber bei dem Filtern geht absolut gar nix. Da hängt er sich vom feinsten auf.

grüße vom digi ^^

Hallo,

So…
N kleinen fortschritt gibt es.

Private Sub VScroll1\_Scroll()
 Dim w1 As Integer
 Dim w2 As Integer
 w1 = DGV.FirstRow
 w2 = VScroll1.Value

 While w1 w2
 w1 = DGV.FirstRow
 w2 = VScroll1.Value
 If w2 



> So hab ichs jetz gemacht.


ja, so war's gemeint. 



> Und das geht jetz quasi, wenn ich  
> bei dem:  
> VScroll1.Max = DGV.ApproxCount - DGV.VisibleRows + 3  
> Angebe wenigstens in der suche und in dem HauptRecordset bis  
> ganz zum letzten Datensatz zu scrollen ohne das ne  
> endlosschleife auftritt.


Gut.



> Aber bei dem Filtern geht absolut gar nix. Da hängt er sich  
> vom feinsten auf.


Hmmmm, da sehe ich jetzt nicht durch. Kommentier das Subklassing mal vorübergehend aus, dann hast Du in der Zeit eben mal kein Scrollrad, bekommst aber beim Scrollen mit VScroll eine Fehlermeldung, da kannst Du Dich ja fast nur vertippt haben oder eine Variable nicht deklariert oder etwas anderes, ähnlich simples. Das ist bestimmt nur ein kleiner Fehler, den Du sofort findest, wenn der Computer die Fehlermeldung liefert, statt abzustürzen.

Gruß, Rainer

Nene, mit dem MouseWheel hat das nix zu tun. Das habe ich schon raus gemacht wie du schon mal gesagt hast. Das Programm Pausiert dann aber ich kann nich mehr zwischen den Tasks wechseln. Ganz komische sache. Ich lass mir einfach die werte die ich sehen will in ner MsgBox zeigen. Das geht auch.

So und ich denke ich weiss was das problem ist.
Wenn ich die suche ausführe, wird das Recordset komplett neu geschrieben und beginnt mit DGV.FirstRow = 1 und endet bei 10000. Wenn ich den Spaß nun filtere, kann es sein das DGV.FirstRow = 600 oder nen anderer Wert je nach Filtereingabe. Ich denke mal irgendwas damit wird es zu tun haben. Aber was?! ^^ Selbst wenn weiss ich nich was man da machen könnte.

Die Werte vom „DGV.AproxCount“ sind gleich dem „recordset.RecordCount“ also daran kann es nicht liegen. Meine Unterfunktion die vom DataGrid neu ermittelt was max ist funktioniert auch und blendet die VScroll bar ein bzw aus wenn die „DGV.AproxCount“ unter 17 gehen. Das funktioniert auch. Also im Prinzip haut alles hin. Bis auf das DGV.FirstRow bei filtern meistens nich mit 1 oder so beginnt sondern mit extrem unterschiedlichen werten. Deshalb denk ich das das damit irgendwas zu tun haben könnte.

Grüße vom digi.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

Nene, mit dem MouseWheel hat das nix zu tun. Das habe ich
schon raus gemacht wie du schon mal gesagt hast.

Dann darf es aber nicht abstürzen, höchstens hängen bleiben, das ist ja auch schlimm genug.

Das Programm
Pausiert dann aber ich kann nich mehr zwischen den Tasks
wechseln. Ganz komische sache. Ich lass mir einfach die werte
die ich sehen will in ner MsgBox zeigen. Das geht auch.

OK, geht auch. Ich hätte einen Stoppunkt gesetzt und den Debugger verwendet. Eingach mal neben dem Code auf den breiten grauen Rand klicken. Wenn das Programm steht mit F8 schrittweise abarbeiten. Stellst Du den Mauszeiger auf eine Variable, bekommst Du deren Inhalt angezeigt. Wenn Du das schon wußtest, hab’ ich’s auch gar nicht erzählt. :smile:

So und ich denke ich weiss was das problem ist.
Wenn ich die suche ausführe, wird das Recordset komplett neu
geschrieben und beginnt mit DGV.FirstRow = 1 und endet bei
10000. Wenn ich den Spaß nun filtere, kann es sein das
DGV.FirstRow = 600 oder nen anderer Wert je nach
Filtereingabe.

Ahhh, Recordset.Absoluteposition ist nicht mehr ‚0‘, der scrollt beim Filtern zum Ende! Schreib hinter Filter… mal ein

[Dein Recordset].MoveFirst
DoEvents

Gruß, Rainer

So, das habe ich gemacht. Aber seitdem wir die If abfragen mit den Exit Sub eingefügt haben, macht er gar nix mehr wenn man den Scrollbalken beim nach dem Filtern bewegt. Das einzige was er macht, wenn ich nach unten Scrolle, und dann den VScroll verschiebe egal wohin, dann scrollt er automatisch ganz nach oben. DGV.FirstRow ist immernoch bei 22. Kann man DGV.FirstRow nicht irgendwie selbst festlegen? Das ich jetz sage DGV.FirstRow = 1 geht ja nich da sagt er Bookmark Fehler oder sowas.

noch ne idee? ^^

grüße vom hilflosen ^^

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

So, das habe ich gemacht. Aber seitdem wir die If abfragen mit
den Exit Sub eingefügt haben, macht er gar nix mehr wenn man
den Scrollbalken beim nach dem Filtern bewegt. Das einzige was
er macht, wenn ich nach unten Scrolle, und dann den VScroll
verschiebe egal wohin, dann scrollt er automatisch ganz nach
oben. DGV.FirstRow ist immernoch bei 22. Kann man DGV.FirstRow
nicht irgendwie selbst festlegen? Das ich jetz sage
DGV.FirstRow = 1 geht ja nich da sagt er Bookmark Fehler oder
sowas.

Eben. DGV.FirstRow = 1 geht nicht, mir sagt er auf deutsch ‚ungültiges Lesezeichen‘. Das ist ja unser Problem mit dem Datagrid. Beim Flexgrid hättest Du einfach ‚MsFlexgrid.TopRow = Vscroll1.Value‘ geschrieben und es wäre erledigt gewesen.

noch ne idee? ^^

Im Moment mal wieder nicht. :frowning: Da hilft nur debuggen und genau nachsehen, was passiert. Ich muß mir erst mal ein Projekt bauen und den Filter mal ausprobieren. Ich habe das Datagrid noch in keinem Projekt verwendet. Bei meinem ersten Versuch hatte ich einen Grafikfehler, das Datagrid wurde nicht sauber angezeigt, der Rand hat gefehlt, die letzte Zeile hatte ‚Schatten‘ … deshalb habe ich es aus dem Projekt entfernt und nie wieder angefasst. :smile: Ich muß mal noch ein wenig experimentieren, das kann aber Weihnachten werden, bis ich zu Ergebnissen komme. Wenn mir die Geduld ausgeht, bau ich das nach und erweitere es um die fehlenden Funktionen! :smile: Inzwischen weiß ich, was mir dazu noch gefehlt hat.

Gruß, Rainer

oh je ^^ ich wieder mit meinen Problemen ^^ warum können das nich einfach nur kleine fehler sein wo ich ne 1 anstelle von ner 2 geschrieben hab :smiley: immer alles so kompliziert *g*

hm Ich schau mir das ganze noch mal genau an. Bis dahin muss es halt erstmal so gehen. Danke für deine mühe. Find ich echt klasse :smile:

güße vom digi

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ich hätte da ma noch n Problem das mal nix mit Filtern zu tun hat^^

Also. Wenn man mit der Maus im Grid Scrollt bewegt sich die VScroll nicht mit. Genauso ist es, wenn man die einträge nach DESC oder ASC sortiert. Der Scrollbalken bleibt ganz unten oder da wo er halt ist.

Nun zur Frage:
Wie kann ich dem sagen wo er hin soll?
VScroll1.Value geht nich oder ich hab ne falsche syntax.

Hoffe da hat noch wer ne lösung :smile:

nochma grüße vom digi.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

OK Gut hatte nurn fehler im tippen^^ oh man muss ich fertig sein :smiley:

 If Not rsMain.EOF Then
 rsMain.MoveFirst
 VScroll1.Value = 1
 ElseIf Not rsSuche.EOF Then
 rsSuche.MoveFirst
 VScroll1.Value = 1
 End If
 DoEvents

So das geht :smile: