PDA

Vollständige Version anzeigen : Goto DS statt DS Filtern


Markusb
05.08.2004, 11:00
Hi Leute!

Hatte bis jetzt das ganze so aufgebaut:

Wenn von einem anderem Formular auf das Felder KundenNr geklickt wurde wird das Formular Kundenverzeichnis geöffnet u. der DS mit der KundenNr gefilter. :

DoCmd.OpenForm "Kundenverzeichnis", , , "[KundenNr] = " & Me.KundenNr & " "

funktioniert soweit.
Nur ist es mühsam immer wieder den Filter danach zu entfernen.


Möchte das ganze so lösen das der DS nicht gefillter wird sondern eben nur der DS mit dieser KundenNr gesucht wird.

Geht das vl mit Goto?

Wenn ja wie?

Wie könnte ich das lösen?

Danke

MFG
Markus

SNowack
05.08.2004, 11:30
Hallo Markus,

probier doch mal folgendes:


dim rsCl as object
dim SuchStr as String

DoCmd.OpenForm "Kundenverzeichnis"

suchstr="[KundenNr] = " & Me!KundenNr
set rscl=forms!Kundenverzeichnis.recordset.clone

rscl.findfirst suchstr
if not rscl.nomatch then
forms!Kundenverzeichnis.bookmark=rscl.bookmark
end if

set rscl=nothing
suchstr=""


Gruss Stefan

Markusb
05.08.2004, 14:10
geht leider nicht:

habs beim klicken eingebaut:
öffnet das Kundenverzeichnis dann kommt Laufzeitfehler 2465 (Anwendungs- od. objektdefinierter fehler)

diese Zeile wird markiert:

Set rsCl = Forms!Kundenverzeichnis.Recordset.Clone

woran könnte das liegen.

Bitte auch um Code Erklärung

MFG
Markus

SNowack
05.08.2004, 14:19
Hallo,

ersetze die Zeile mal durch:
Set rsCl = Forms!Kundenverzeichnis.RecordsetClone

Sind die Verweise (VBA-Editor, Extras, Verweise) auf Microsoft DAO gesetzt?

Gruss Stefan

Markusb
05.08.2004, 14:38
Jetzt funkt es!

der punkt war zuviel*gg*

Was bewirkt der Code genau um die Zeilen genau zu verstehen?

was wird bei Recordsetclone genau gemacht? was ist bookmark?

Danke
MFG
Markus

SNowack
05.08.2004, 15:07
=> Suchkriterium festlegen
suchstr="[KundenNr] = " & Me!KundenNr

=> Ein "unsichtbares" Duplikat erzeugen
set rscl=forms!Kundenverzeichnis.recordsetclone

=> Duplikat nach ersten Treffer durchsuchen
rscl.findfirst suchstr

=> Nur wenn ein Ergebnis gefunden wird dann
if not rscl.nomatch then

=> Gefundenes Ergebnis auf Original beziehen (Datensatzzeiger übertragen)
forms!Kundenverzeichnis.bookmark=rscl.bookmark

Markusb
05.08.2004, 15:10
Danke schön!

Markusb
10.08.2004, 12:37
Hi Leute!

Rufe jetzt den folgenden Code auf aber mein Problem ist wenn das Formular "Kundenverzeichnis" bereits geöffnet ist sich nichts tut.

funktioniert nur wenn das Form zu ist:

Private Sub KundenNr_DblClick(Cancel As Integer)

Dim rsCl As Object
Dim SuchStr As String

DoCmd.OpenForm "Kundenverzeichnis"

SuchStr = "[KundenNr] = " & Me!KundenNr
Set rsCl = Forms!Kundenverzeichnis.RecordsetClone


rsCl.FindFirst SuchStr
If Not rsCl.NoMatch Then
Forms!Kundenverzeichnis.Bookmark = rsCl.Bookmark
End If

Set rsCl = Nothing
SuchStr = ""
End Sub

Wie könnte ich das noch ändern?

Danke
MFG
Markus

Markusb
12.08.2004, 08:51
Hi

hat vl irgender eine Idee zu diesem Problem?

Danke

MFG
Markus

Markusb
12.08.2004, 12:55
Hi Leute!

Habs mal so gelöst:

Wenn ich das Formular jedes mal neu öffne gibts kein Problem!

dh. ich schließe vor jedem öffnen sicherheitshalber das Form u. öffne es dann erneut deswegen hab ich:

Private Sub KundenNr_DblClick(Cancel As Integer)

Dim rsCl As Object
Dim SuchStr As String

DoCmd.Close acForm, "Kundenverzeichnis", acSaveYes
DoCmd.OpenForm "Kundenverzeichnis"

SuchStr = "[KundenNr] = " & Me!KundenNr
Set rsCl = Forms!Kundenverzeichnis.RecordsetClone


rsCl.FindFirst SuchStr
If Not rsCl.NoMatch Then
Forms!Kundenverzeichnis.Bookmark = rsCl.Bookmark
End If

Set rsCl = Nothing
SuchStr = ""
End Sub

dazu eingebaut.

müßte doch klappen oder?

Danke
MFG
Markus