collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 96
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 14809
  • stats Beiträge insgesamt: 76028
  • stats Themen insgesamt: 10230
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 933

Autor Thema: DS-Suche aus Hauptformular in Unterformular (Code vorhanden)  (Gelesen 13101 mal)

gast

  • Gast
Hallo,

ich beschäftige mich derzeit mit einer Suchfunktion für ein Unterformular, welches im Hauptformular ausgeführt und angezeigt wird.

Den Code dazu habe ich aus einem anderem Forum erhalten, wo ein versierter Nutzer diesen zur Verfügung gestellt hat.

Der Code funktioniert auch schon, jedoch leider nicht ganz korrekt...


Kurz zur Erläuterung meiner Daten:
- Es existiert ein Hauptformular (HF) mit Bankkontaktdaten (Name, Adresse, etc. pp)
- Es existiert ein Unterformular (UFO) mit Datensätzen zu den Sachbearbeitern der Bank (Name, Tel, Email, etc.)
- Tabellen sind über die Banken_ID (AutoWert) aus dem HF und der Banken_ID (Long) aus dem UFO miteinander verknüpft.

hier nun erstmal der von mir verwendete und von willi wipp erstellte (vielen dank!) Code :
' Menue: Extras -> Verweise Microsoft DAO 3.xx Object Library muss aktiv sein!
Option Compare Database
Option Explicit
Private mrs  As DAO.Recordset

Private Sub btnErsterAP_Click()
    Dim strFind As String
  
    With Me![Banken_UF].Form
        Set mrs = CurrentDb.OpenRecordset(.RecordSource, dbOpenSnapshot)
        strFind = "SB_Name Like '*" & Me!SB_Suche2 & "*'"
        mrs.FindFirst strFind
        If mrs.NoMatch Then                                    'nicht gefunden
            MsgBox "Der gesuchte Ansprechpartner '" & Me!SB_Suche2 & _
                   "' wurde nicht gefunden", , "Verschollen?"
            Me!btnNaechsterAP.Enabled = False
          Else                                                       'gefunden
            Me.Recordset.FindFirst "Banken_ID = " & mrs!Banken_ID
            .Recordset.FindFirst strFind
            !SB_Name.SetFocus
            Me!btnNaechsterAP.Enabled = True
        End If
    End With
End Sub

Private Sub btnNaechsterAP_Click()
    Dim strFind As String
  
    If mrs Is Nothing Then Exit Sub                        'zur Sicherheit ;-)
    With Me![Banken_UF].Form
        strFind = "SB_Name Like '*" & Me!SB_Suche2 & "*'"
        mrs.FindNext strFind
        If mrs.NoMatch Then                                    'nicht gefunden
            MsgBox "Der gesuchte Sachbearbeiter '" & Me!SB_Suche2 & _
                   "' wurde nicht gefunden", , "Das waren Alle?"
            mrs.Close: Set mrs = Nothing
            Me!btnErsterAP.SetFocus
            Me!btnNaechsterAP.Enabled = False
          Else                                                       'gefunden
          
          Me.Recordset.FindFirst "Banken_ID = " & mrs!Banken_ID
            .Recordset.FindFirst strFind
            !SB_Name.SetFocus
        End If
    End With
End Sub

Private Sub Form_Close()
    If Not (mrs Is Nothing) Then
        mrs.Close: Set mrs = Nothing
    End If
End Sub

Nun zu der Stelle an der er harkt. Der erste Button - um die Suche einzuleiten - funktioniert wunderbar. Nach der Eingabe des Suchbegriffs wird auch direkt der passende erste DS im UFO ausgespuckt. Doch beim ersten Klick auf btnNaechsterAP, passiert garnichts und beim zweiten klick, springt er aus dem ersten DS des HF weiter zum Nächsten und gibt mir dort die zu dem Suchbegriff passenden Datensätze aus.

Dadurch ergibt sich folgende Problematik:
Wenn einer in dem Hauptformular hinterlegten Bank mehrere Sachbearbeiter angehören, die den gleichen Namen haben (bspw. 1SB: Peter Meier 2SB: Daniel Meier) und ich eben nach diesem Namen suchen möchte, bekomme ich mit dem Klick auf meinen ersten Button btnErsterAP problemlos den ersten Herrn Meier (SB1) ausgegeben. Beim Klick auf btnNaechsterAP (also beim "weitersuchen"), wird mir aber nicht der zweite SB Daniel Meier (SB2) angezeigt, sondern die Prozedur springt direkt im HF einen DS (also bereits eine Bank) weiter und sucht dort weiter.

Somit wird also ein eventuell existierender zweiter SB mit dem gleichen Namen wie der erste SB der gleichen Bank immer übergangen. Im utopischen Falle, dass eine Bank noch mehr SB mit dem gleichen Namen hat, werden auch diese alle übergangen.

Ich gehe davon aus, das in dem von mir verwendeten Code einfach ein Befehl fehlt, der der Suche sagt, erst alle vorhandenen DS des jeweiligen UFO durchzugehen, bevor er über die verknüpfte Banken_ID einen DS im HF weiterspringt.

Daher würde ich gerne wissen, wie der Code verändert werden muss, damit die Suchfunktion erst alle Unterdatensätze durchgeht, bevor die Suche im nächsten Hauptdatensatz fortgeführt wird.

Für jede Hilfestellung bin ich äußerst dankbar.

kind regards
 

Offline oma

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 4020
Re: DS-Suche aus Hauptformular in Unterformular (Code vorhanden)
« Antwort #1 am: Juli 28, 2010, 19:55:18 »
Hallo Gast,

Probiere mal:


Private Sub btnNaechsterAP_Click()
    Dim strFind As String
  
    If mrs Is Nothing Then Exit Sub                        'zur Sicherheit ;-)
    With Me![Banken_UF].Form
        strFind = "SB_Name Like '*" & Me!SB_Suche2 & "*'"
        mrs.FindNext strFind
        If mrs.NoMatch Then                                    'nicht gefunden
            MsgBox "Der gesuchte Sachbearbeiter '" & Me!SB_Suche2 & _
                   "' wurde nicht gefunden", , "Das waren Alle?"
            mrs.Close: Set mrs = Nothing
            Me!btnErsterAP.SetFocus
            Me!btnNaechsterAP.Enabled = False
          Else                                                       'gefunden
          
          Me.Recordset.FindFirst "Banken_ID = " & mrs!Banken_ID
           ' .Recordset.FindFirst strFind      Entfernen!!!!!
            .Recordset.FindNext strFind      ' Dafür FindNext
            !SB_Name.SetFocus
        End If
    End With
End Sub


Gruß Oma
« Letzte Änderung: Juli 28, 2010, 20:28:47 von oma »
nichts ist fertig!
 

Gast

  • Gast
Re: DS-Suche aus Hauptformular in Unterformular (Code vorhanden)
« Antwort #2 am: Juli 29, 2010, 10:46:45 »
Hallo oma,

vielen Dank für die schnelle Antwort.
Ich wusste doch, dass so eine einfache kleine Änderung mir schon weiterhilft.

Deshalb nochmals Danke.

Leider funktioniert der Code in der Abwandlung nun genau bis zum zweiten Sachbearbeiter.
Ich weiß, es ist ein absolut utopischer und banaler Fall, dass eine Bank mehr als zwei Sachbearbeiter des gleichen Namens hätte, aber ich würde diesen Code auch gerne für andere Unterformularsuchvorgänge nutzen.

Also, beim ersten Klick auf den btnNaechsterAP, springt er direkt zum zweiten korrekten Suchergebnis, beim 3 klick springt er aber spätestens in den nächsten Hauptdatensatz. Also würde ein potenzieller dritter DS, der der Suche entspricht wieder übergangen werden.


Da ich mit VBA gerade meine ersten Gehversuche bestreite, hab ich nur Fetzen von Wissen, die vor allem - bezogen auf die VBA schreibweise - absolut unkoordiniert sind ;)

Könnte man jetzt nicht hier irgendwo mit nem loop arbeiten, dass die Suche in den zugeordneten Unterdatensätzen solange vollzugen wird, bis das Ende der Datensätze erreicht ist? Es gibt doch EOF Befehle, oder sind die hier nicht hilfreich?


Also, zusammengefasst, der Code funktioniert nun  genau einen Klick weiter, bzw. zwei dem Suchbegriff entsprechende Datensätze lang.
 
Es gibt doch bestimmt die Möglichkeit, hier eine Schleife einzubauen kann, die dazu führt, dass erst alle verknüpften Unterdatensätze (gehen wir mal hypothetisch von einer Anzahl x aus) zu einem Hauptformulardatensatz durchlaufen werden, bevor bei den verknüpften Datensätzen des nächsten Hauptformulardatensatzes wieder nach dem eingegebenen Suchbegriff gesucht wird.


Wiederum bin ich für jede Hilfe dankbar!

Beste Grüße
 

Offline oma

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 4020
Re: DS-Suche aus Hauptformular in Unterformular (Code vorhanden)
« Antwort #3 am: Juli 29, 2010, 11:05:47 »
Hallo,

habe dein Problem mal nachgestellt; das richtige Suchen wird doch mit meiner Änderung realisiert!
Voraussetzung ist allerdings eine Sortierung der Datensätze im Unterformular durch eine entsprechende Abfrage.
Siehe hierzu mal mein Beispiel!

Gruß Oma

[Anhang gelöscht durch Administrator]
nichts ist fertig!
 

Gast

  • Gast
Re: DS-Suche aus Hauptformular in Unterformular (Code vorhanden)
« Antwort #4 am: Juli 29, 2010, 12:00:10 »
hallo,

ich glaube zu wissen was du meinst, aber das funktioniert bei mir immer noch nicht richtig.
außerdem sehe ich dein beispiel nicht?! (muss ich dafür registriert sein?)

ich habs jetzt so versucht.
aus meiner Tabelle Banken_SB hab ich per Tabellenerstellungsabfrage eine neue Tabelle machen lassen in der alle Datensätze nach Banken_ID sortiert sind.

Wenn ich jetzt mein Formular mit der neu erstellten Tabelle als Unterformular vernküpfe, dann funktioniert das Weitersuchen im gesamten ersten Hauptdatensatz, aber schon beim zweiten Hauptdatensatz überspringt er wieder einen Sachbearbeiter.

Zur Entwicklung suche ich schlichtweg nach dem Wort Herr, welches vor jedem Namen steht bei den Sachbearbeitern. Das heißt, er müsste beim klick auf btnNaechsterAP ja eigentlich alle Datensätze schön der Reihe nach durchgehen, was aber leider nicht der Fall ist.


Außerdem hab ich noch das Problem, dass ich die Abfrage ja nur über eine Tabellenerstellung lösen kann (zumindest ist das der einzige Weg den ich kenne).
Wenn ich jetzt aber zur neuen Sortierung wieder eine Tabellenerstellungsabfrage über die Banken_SB tabelle laufen lasse um die Banken_SB_Sort neu zu füllen, z.B. nachdem ich neue Sachbearbeiter eingegeben habe, will Access die Tabelle komplett löschen und neu erstellen.

Da die Tabelle aber Teil meiner Beziehungen ist (Banken[Banken_ID] 1:n Banken_SB_Sort[Banken_ID]), funktioniert das auch nicht mehr als einmal!?





 

Offline borst1

  • Newbie
  • Beiträge: 8
Re: DS-Suche aus Hauptformular in Unterformular (Code vorhanden)
« Antwort #5 am: Juli 29, 2010, 12:04:10 »
Hallo

gast=borst1


hab mich jetzt mal angemeldet um deinen Anhang zu sehen...
Leider kann ich meine als Gast erstellten postings nicht editieren, insofern, sorry für Doppelpost!

Sehe mir jetzt mal dein Beispiel an!

[edit]

Also bei dem von dir erstellen Beispiel existiert der gleiche "kleine Bug" wie in meiner Entwicklungs-DB.

Such mal spaßeshalber in deiner Beispiel-DB nach * und klicke dich mit weitersuchen durch.
Sobald der erste Hauptkunde fertig ist, springt er in den nächsten Hauptdatensatz und "übersieht" bei seiner Suche den ersten Datensatz im UFO.

War diese Erklärung verständlich? ;)
« Letzte Änderung: Juli 29, 2010, 12:07:13 von borst1 »
 

Offline oma

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 4020
Re: DS-Suche aus Hauptformular in Unterformular (Code vorhanden)
« Antwort #6 am: Juli 29, 2010, 12:44:14 »
Hallo,

also ich denke, du suchst nach Nachnamen der Mitarbeiter im Unterformular!?

Gebe mal im Beispiel "Schmidt" ein, u. die Suche sollte richtig erfolgen.


Zitat
Außerdem hab ich noch das Problem, dass ich die Abfrage ja nur über eine Tabellenerstellung lösen kann (zumindest ist das der einzige Weg den ich kenne).

verstehe ich überhaupt nicht, du kannst doch einfach eine Abfrage erstellen, in der die Sortierung nach Nr und Nachnamen erfolgt (wie im Beispiel) u. diese Abfrage dann als Datenherkunft des Unterformulars zu wählen. Was hat das mit Tabellenerstellung zu tun ??

Gruß Oma
nichts ist fertig!
 

Offline borst1

  • Newbie
  • Beiträge: 8
Re: DS-Suche aus Hauptformular in Unterformular (Code vorhanden)
« Antwort #7 am: Juli 29, 2010, 13:46:35 »
Zitat
Hallo,

also ich denke, du suchst nach Nachnamen der Mitarbeiter im Unterformular!?

Gebe mal im Beispiel "Schmidt" ein, u. die Suche sollte richtig erfolgen.


Das ist vollkommen richtig. Im zu Grunde gelegten Beispiel möchte ich nach Mitarbeiternamen suchen. Da ich diesen Code aber gerne auch in weiteren Unterformularen zur Suche verwenden möchte, muss diese so funktionieren, dass auch 5, 10 oder 20 Datensätze mit einem gleichen Feldinhalt korrekt von Ihr entdeckt werden!

Ändere in deinem Beispiel einfach mal die Namen der ersten beiden Sachbearbeiter der zweiten Firma auf Schmidt und suche dann nach Schmidt. Die letzten beiden Sachbearbeiter der ersten Firma werden korrekt gefunden und danach wird direkt der zweite Sachbearbeiter der zweiten Firma gefunden. Der erste Sachbearbeiter der zweiten Firma wird übergangen. Und so ist es auch bei der dritten Firma wenn dort der erste Sachbearbeiter auch wieder Schmid heißt.

Ich würde mal raten, dass das an der mrs.FindNext Anweisung liegt. Der Weitersuchenbutton kennt die FindFirst Anweisung ja garnicht. Die gibts ja nur beim Suchen Button.


Private Sub btnNaechsterAP_Click()
    Dim strFind As String
   
    If mrs Is Nothing Then Exit Sub                        'zur Sicherheit ;-)
    With Me![Banken_UF].Form
        strFind = "SB_Name Like '*" & Me!SB_Suche2 & "*'"
        mrs.FindNext strFind



Zitat
du kannst doch einfach eine Abfrage erstellen, in der die Sortierung nach Nr und Nachnamen erfolgt (wie im Beispiel) u. diese Abfrage dann als Datenherkunft des Unterformulars zu wählen. Was hat das mit Tabellenerstellung zu tun ??

Du hast auch vollkommen Recht ;) Ich hab irgendwie versucht um drei Ecken zu denken obwohl dein Weg ebenso funktioniert und dazu noch wesentlich einfacher ist!
« Letzte Änderung: Juli 29, 2010, 14:34:05 von borst1 »
 

Offline oma

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 4020
Re: DS-Suche aus Hauptformular in Unterformular (Code vorhanden)
« Antwort #8 am: Juli 29, 2010, 19:35:03 »
Hallo

crossposting ist in allen Foren unbeliebt, zumal wenn du noch Teilergebnisse aus einem Forum ins andere zur Diskussion stellst!!!

Dann bleibe auch mal dort!

Gruß Oma
nichts ist fertig!
 

Offline borst1

  • Newbie
  • Beiträge: 8
Re: DS-Suche aus Hauptformular in Unterformular (Code vorhanden)
« Antwort #9 am: Juli 30, 2010, 09:52:49 »
hm,

das hätte ich ehrlich gesagt nicht gedacht..

ich betrüge ja keinen um seinen code oder ähnliches.
habe ja auch klar im ersten beitrag dargestellt, dass ich den code in einem anderen forum gefunden habe!

also was sollte ich denn nun tun? den thread hier löschen?

schade, dass der versuch breiter gefächert ne lösung für ein problem zu finden, so negativ interpretiert wird...


 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 8524
Re: DS-Suche aus Hauptformular in Unterformular (Code vorhanden)
« Antwort #10 am: Juli 30, 2010, 10:02:11 »
Hallo,
Zitat
schade, dass der versuch breiter gefächert ne lösung für ein problem zu finden, so negativ interpretiert wird...
Es geht nicht nur um die Quellenangabe, es geht mehr um das Grossposting. Das will keiner. Es steht auch in den Regeln des Forums, dass das nicht erwünscht ist.
Zitat von: Forenregel
Crossposting, d.h. das Posten der gleichen Frage in mehreren Foren zur gleichen Zeit, ist unerwünscht.
Meistens kriegt man auch gar keine Antwort mehr, Du erreicht also eher das Gegenteil.
Bedenke, dass die Access Foren wie ein Dorf sind, da bleibt nichts verborgen. ;D
« Letzte Änderung: Juli 30, 2010, 10:06:07 von MzKlMu »
Gruß
Klaus
 

Offline borst1

  • Newbie
  • Beiträge: 8
Re: DS-Suche aus Hauptformular in Unterformular (Code vorhanden)
« Antwort #11 am: Juli 30, 2010, 10:37:47 »
hi,


Zitat
Es geht nicht nur um die Quellenangabe, es geht mehr um das Grossposting. Das will keiner. Es steht auch in den Regeln des Forums, dass das nicht erwünscht ist.

ok, akzeptiere ich ja auch vollkommen.

Zitat
Meistens kriegt man auch gar keine Antwort mehr, Du erreicht also eher das Gegenteil.
Bedenke, dass die Access Foren wie ein Dorf sind, da bleibt nichts verborgen. ;D

schöne methaphorische darstellung.
also bleibt mir jetzt nichts anderes, als meine mitgliedschaften zu killen, mir ne fake email zu besorgen und unter anderem namen mich neu anzumelden?

oder existiert ne minimale chance, dass fehler - die gerne mal gemacht werden - verziehen werden? irgendeine hoffnung auf freispruch?  :-\

habe ja bereits meine hilfe von hier im anderen forum gelöscht...

 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 8524
Re: DS-Suche aus Hauptformular in Unterformular (Code vorhanden)
« Antwort #12 am: Juli 30, 2010, 10:46:04 »
Hallo,
Zitat
oder existiert ne minimale chance, dass fehler - die gerne mal gemacht werden - verziehen werden? irgendeine hoffnung auf freispruch?
Ja  ;D
Gruß
Klaus
 

Offline borst1

  • Newbie
  • Beiträge: 8
Re: DS-Suche aus Hauptformular in Unterformular (Code vorhanden)
« Antwort #13 am: Juli 30, 2010, 11:01:33 »
schön das schon mal du das so siehst  :-*

hoffe oma kann auch nochmal ein auge zudrücken...
man verscherzt es sich nicht gern mit nem moderator, der auch noch access guru ist  ;D


also ums kurz zu halten: ich bin immer noch dankbar für ne hilfestellung.

mein post im anderen board ist schon (fast) wieder in den tiefen des unterforums verschwunden..

 

Offline oma

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 4020
Re: DS-Suche aus Hauptformular in Unterformular (Code vorhanden)
« Antwort #14 am: Juli 30, 2010, 12:01:53 »
Hallo,

das wir gegen Crossposting sind , ist ja nicht nur weil es in den Regeln des Forums steht, sondern für einen Helfer auch eine unangenehme Sache ist.

Man nimmt sich der Sache an, denkt darüber nach, baut evt. ein kleines Beispiel, schnell ist mal eine 1/2 Stunde vergangen.
Und dann kommt u.U. die Nachricht: Haha, zu spät, habe schon eine andere Lösung.

Nun zum Beispiel:
Ja, meine Lösung klappte nicht, wenn im Unterformular zu einem Datensatz des Hauptformulars der Suchbegriff an erster Stelle stand.
(Habe eben nicht alle Konstellationen geprüft :D)

Probiere doch nun mal das neue Beispiel mit dem Kollegen Schmidt ;D

Klappen tut die Sache aber nur, wenn der ganze Name eingegeben wird. deshalb wäre eine Eingabe des Names mit einem Kombifeld zweckmäßig. Evt. fällt mir auch noch etwas zum Suchen mit Teilstrings ein ?

Gruß Oma


[Anhang gelöscht durch Administrator]
« Letzte Änderung: Juli 30, 2010, 12:08:35 von oma »
nichts ist fertig!
 

 

wieviel Zeilen VBA-Code pro DB

Begonnen von MonsterbieneBoard Access Programmierung

Antworten: 8
Aufrufe: 6800
Letzter Beitrag Juli 29, 2010, 21:33:07
von Hondo
Suche Button und Serienbrief über Access öffnen / ablegen

Begonnen von Muhkuh86Board Access-Hilfe

Antworten: 18
Aufrufe: 15645
Letzter Beitrag Mai 12, 2010, 11:38:08
von Muhkuh86
Summe im Bericht mit Code

Begonnen von T417Board Access Programmierung

Antworten: 10
Aufrufe: 10054
Letzter Beitrag Mai 12, 2010, 14:39:24
von T417
Syntaxfehler bei Anlegen eine neuen Datensatzes in UNterformular

Begonnen von GuidoBoard Formular

Antworten: 3
Aufrufe: 4612
Letzter Beitrag Mai 07, 2010, 17:53:33
von DF6GL
Unterformular: Tabellenansicht wechseln?

Begonnen von macgyverBoard Formular

Antworten: 5
Aufrufe: 8187
Letzter Beitrag Mai 18, 2010, 19:59:17
von macgyver

Advertisment / Werbung - Amazon Affiliate Links