Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: AllenWalker am August 25, 2013, 21:08:57

Titel: Formular mit Suchfeld auf Unterformular
Beitrag von: AllenWalker am August 25, 2013, 21:08:57
Hallo,

Ich möchte gerne ein Formular mit einem Suchfeld erstellen. In einem Unterformular sollen alle Datensätze (Kundendaten) angezeigt werden und anhand des eingegebenen Suchwort (Nachname) gefiltert werden.
Die Filterung soll bereits beginnen wenn ich Buchstabe für Buchstabe eingebe (müsste das Ereignis "OnChange" sein)

Habe mir ein paar Gedanken über die Umsetzung gemacht. Ich gehe davon aus dass man einen String zusammenbasteln soll für die Abfrage. Die Abfrage sieht in etwa so aus:

SELECT K.Name, K.Vorname
FROM Kontakte AS K
WHERE K.Name LIKE '...*'

Hinter dem LIKE würde die eingegebenen Buchstaben mit dem Jokerzeichen (*) kommen.

Was mir bei meinen Überlegungen fehlt ist wie ich diese Filterung (falls korrekt) auf das Unterformular anwenden könnte. Eine Umsetzung anhand diesem Lösungsvorschlag  (http://www.donkarl.com/FAQ/FAQ4Formulare.htm#4.4)klappte nicht wie gewünscht.

Danke sehr,
Gruß,
AllenWalker
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: DF6GL am August 25, 2013, 22:31:22
Hallo,


es soll ja auch gefiltert und nicht gesucht werden...


Sub Suchfeld_Change()
Me!Unterform_Steuerelementname.Form.Recordsource = "SELECT [Name], Vorname FROM Kontakte  WHERE [Name] LIKE '" & Me!Suchfeld.Text & "*'"
End Sub
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: AllenWalker am August 26, 2013, 16:32:10
Danke sehr für deine Hilfe.
Die Codezeile habe ich für die 3 Suchfelder eingefügt und angepasst aber glaube habe noch einen kleinen Fehler drin.
Im Anhang befindet sich ein Screenshot des Problems und folgende Codezeilen habe ich bei den Textfeldern hinterlegt.


Private Sub tbNachnameSuche_Change()

  Me!SucheKontakteSub.Form.RecordSource = "SELECT [kliName], kliVorname, kliOrt FROM Kontakte WHERE [kliName] LIKE '" & Me!tbNachnameSuche.Text & "*'"

End Sub

Private Sub tbVornameSuche_Change()

  Me!SucheKontakteSub.Form.RecordSource = "SELECT kliName, [kliVorname], kliOrt FROM Kontakte WHERE [kliVorname] LIKE '" & Me!tbVornameSuche.Text & "*'"

End Sub

Private Sub tbWohnortSuche_Change()

  Me!SucheKontakteSub.Form.RecordSource = "SELECT kliName, kliVorname, [kliOrt] FROM Kontakte WHERE [kliOrt] LIKE '" & Me!tbWohnortSuche.Text & "*'"

End Sub



Danke sehr,
Gruß,
AllenWalker

[Anhang gelöscht durch Administrator]
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: Stapi am August 26, 2013, 17:35:32
Hallo

Aus meiner Sicht solltest du das als mehrstufigen Filter aufbauen. Zum Verständnis deiner Aufgabe:

Im ersten Feld Nachname suchst du alle Nahnamen mit "H"

Darauf aufbauen sollten im zweiten Feld nur alle mit "Peter" gefiltert werden

Was im Dritten Feld Wohnort dann in deinem Fall "Frankfurt" übrig bleibt, würde es mehre "H, Peter" in mehren Wohnorten geben so ist hier nochmals eine Auswahl zu treffen.
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: DF6GL am August 26, 2013, 18:01:45
Hallo,

es ist kein Fehler im Code zu entdecken.. zumindest sehe ich keinen. 


Anmerkung zu den Eckklammern:   Die Eckklammern sind nur dort nötig, wo ein reserviertes Wort verwendet wird ("Name" im ersten Post) . Damit wird Access bekannt gemacht, dass es sich um einen Objektnamen handelt und nicht eben um ein reserviertes Wort, das eine andere Bedeutung für Access darstellt ( z. B: der Name einer Methode/Funktion oder  einer Eigenschaft.

Die Suchfunktion arbeitet mit unabhängigen Textfeldern , so dass immer nur die Spalte gefiltert wird, bei dessen Suchfeld gerade die Eingabe erfolgt.  Stapi hat für abhängiges Suchen ja einen Vorschlag gebracht..
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: AllenWalker am August 26, 2013, 18:34:03
Aufbauend auf die Antwort von Stapi habe ich versucht die mehrstufige Filterung um zu setzen aber ohne Erfolg.


Me!SucheKontakteSub.Form.RecordSource = "SELECT kliName, [kliVorname], kliOrt FROM Kontakte WHERE [kliName] LIKE '" & Me!tbNachnameSuche.Text & "*' AND [kliVorname] LIKE '" & Me!tbVornameSuche.Text & "*'"


Bekomme bei dieser Zeile den folgenden Fehler

Zitat
You can't reference a property or method for a control unless the control has the focus.

Die Bedeutung der Eckklammern habe ich nicht ganz verstanden.
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: bahasu am August 26, 2013, 18:48:58
Hi

was passiert bei:
Me!SucheKontakteSub.Form.RecordSource = "SELECT kliName, [kliVorname], kliOrt FROM Kontakte WHERE [kliName] LIKE '" & Me!tbNachnameSuche & "*' AND [kliVorname] LIKE '" & Me!tbVornameSuche & "*'"

Harald
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: Stapi am August 26, 2013, 18:53:39
Hallo

Ich persönlich würde Kombifelder den Textfeldern vorziehen.
ZitatMe!SucheKontakteSub.Form.RecordSource = "SELECT kliName, [kliVorname], kliOrt FROM Kontakte WHERE [kliName] LIKE '" & Me!tbNachnameSuche.Text & "*' AND [kliVorname] LIKE '" & Me!tbVornameSuche.Text & "*'"
Bei deiner Codezeile müssen alle drei Felder ausgewählt sein, erst dann kann der Filter gesetzt werden. Vorraus gesetzt die gesuchten Namen sind in deiner Tabelle auch vorhanden und so geschrieben wie du sie suchst.
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: AllenWalker am August 26, 2013, 19:03:04
@bahasu
Egal ob das Textfeld Nachname leer ist oder ein Buchstabe eingetippt wurde bewirkt eine Eingabe bei Vorname keine Filterung

@Stapi
Danke für den Hinweis aber würde es auch mit Textfeldern klappen?
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: Stapi am August 26, 2013, 19:20:37
Hallo

ZitatDanke für den Hinweis aber würde es auch mit Textfeldern klappen?

Bei Kombifelder kann ich vorgeben "nur Listeneinträge" = ja , das vereinfacht die Suche da nur die Namen oder Wohnorte dir Angezeigt werden die du auch über das Formular in die Tabelle eingegeben hast.
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: DF6GL am August 26, 2013, 19:23:08
Hallo,

eine abhängige Filterung kann bei Textfeldern sich nur im Form selber auswirken. Die Such-Textfelder habe ja keine einschränkbare "Liste"..


Private Sub tbNachnameSuche_Change()

 Me!SucheKontakteSub.Form.RecordSource = "SELECT kliName, kliVorname, kliOrt FROM Kontakte WHERE kliName LIKE '" & Me!tbNachnameSuche.Text & "*'   And kliVorname LIKE '" & Me!tbVornameSuche & "*'  And kliOrt LIKE '" & Me!tbWohnortSuche & "*'"



End Sub

Private Sub tbVornameSuche_Change()

  Me!SucheKontakteSub.Form.RecordSource = "SELECT kliName, kliVorname, kliOrt FROM Kontakte WHERE kliName LIKE '" & Me!tbNachnameSuche& "*'   And kliVorname LIKE '" & Me!tbVornameSuche.Text  & "*'  And kliOrt LIKE '" & Me!tbWohnortSuche & "*'"

End Sub

Private Sub tbWohnortSuche_Change()

  Me!SucheKontakteSub.Form.RecordSource = "SELECT kliName, kliVorname, kliOrt FROM Kontakte WHERE kliName LIKE '" & Me!tbNachnameSuche & "*'   And kliVorname LIKE '" & Me!tbVornameSuche & "*'  And kliOrt LIKE '" & Me!tbWohnortSuche.Text   & "*'"

End Sub

Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: bahasu am August 26, 2013, 19:25:52
Hi,

mein Vorschlag bezog sich auf die Fehlermeldung:

Zitat von: AllenWalker am August 26, 2013, 18:34:03
Bekomme bei dieser Zeile den folgenden Fehler

You can't reference a property or method for a control unless the control has the focus.

Ist der Fehler noch da?

Sind die Namen der Suchfelder und der Tabellenfelder im Formular und in der VBA-Anweisung stimmig?

Harald
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: AllenWalker am August 26, 2013, 19:32:47
@bahasu
Die Fehlermeldung trat nicht mehr auf nachdem ich deine Codezeile eingefügt hatte und die Bezeichnung stimmen überein.

@DF6GL
Danke für deine Hilfe. Es klappt  :D
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: AllenWalker am Oktober 13, 2013, 11:27:36
Ich muss diesen alten Thread nochmals ausgraben da ich eine Änderung an dem Suchformular vornehmen möchte.

Anstelle des Textfeldes für den Wohnort, soll eine Auswahl für den Standort anhand einer ComboBox gemacht werden. Die Werte für die ComboBox kommen aus der Tabelle Standorte. Diese Tabelle ist mit der Tabelle Kontakte verknüpft. Wenn ich in das Unterformular bei Standort ein Feld auswähle erscheint auch da eine ComboBox. Das gleiche wenn ich ein Feld in der Tabelle Kontakte bei Standort auswähle. Im Feld Standort in der Tabelle Kontakte ist bei RowSourceType "Table/Query" und bei RowSource "SELECT Standort.ID, Standort.Ort FROM Standort ORDER BY [ID];" eingetragen. Gehe mal davon aus daher kommt auch die ComboBox im Unterformular.

Habe auch für die 3 Felder das Event OnChange angepasst aber bekomme folgende Fehlermeldung:
Zitat
Data type mismatch in criteria expression

Hier ist mein angepasster Quellcode:

Private Sub cbStandortAuswahl_Change()
 
  MsgBox "Auswahl: " & Me!cbStandortAuswahl.ItemData(Me!cbStandortAuswahl.ListIndex)
 
  Me!SucheKontakteDetailSub.Form.RecordSource = "SELECT kliName, kliVorname, KBO FROM Kontakte WHERE kliName LIKE '" & Me!tbNachnameSuche & "*'   And kliVorname LIKE '" & Me!tbVornameSuche & "*'  And KBO = '" & Me!cbStandortAuswahl.ItemData(Me!cbStandortAuswahl.ListIndex) & "*'"
 
End Sub

Private Sub tbNachnameSuche_Change()

  Me!SucheKontakteDetailSub.Form.RecordSource = "SELECT kliName, kliVorname, KBO FROM Kontakte WHERE kliName LIKE '" & Me!tbNachnameSuche.Text & "*'   And kliVorname LIKE '" & Me!tbVornameSuche & "*'  And KBO = '" & Me!cbStandortAuswahl.ItemData(Me!cbStandortAuswahl.ListIndex) & "*'"

End Sub

Private Sub tbVornameSuche_Change()

    Me!SucheKontakteDetailSub.Form.RecordSource = "SELECT kliName, kliVorname, KBO FROM Kontakte WHERE kliName LIKE '" & Me!tbNachnameSuche & "*'   And kliVorname LIKE '" & Me!tbVornameSuche.Text & "*'  And KBO = '" & Me!cbStandortAuswahl.ItemData(Me!cbStandortAuswahl.ListIndex) & "*'"

End Sub


Möchte gerne noch vermerken, dass Teile der Datenbank bereits vorgefertigt waren bevor ich die Funktion einbauen möchte.

Danke sehr,
Gruß,
AllenWalker
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: DF6GL am Oktober 13, 2013, 11:47:00
Hallo,

nach der Schilderung zu urteilen, benutzt Du Nachschlagefelder in der Tabelle...  Wirf die raus, die sorgen in den meisten Fällen für Verwirrung und Ärger.

Die Kombifelder im Form bleiben natürlich.


Vermutlich muss es so lauten:

.....  Me!tbVornameSuche & "*'  And KBO =" & Me!cbStandortAuswahl
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: AllenWalker am Oktober 13, 2013, 12:43:33
Zitat
nach der Schilderung zu urteilen, benutzt Du Nachschlagefelder in der Tabelle...  Wirf die raus, die sorgen in den meisten Fällen für Verwirrung und Ärger.
Ich habe in der Tabelle Kontakte die Nachschlagefelder im Feld Standorte entfernt. In den Eigenschaften des besagten Feldes steht bei Lookup - Display Control nun TextBox anstelle von ComboBox. Durch die Relation stehen nun die Fremdschlüssel aus der Tabelle Standorte in den Feldern. Im Unterformular sind diese Nachschlagefelder auch nicht mehr vorhanden und es werden die Fremdschlüssel angezeigt. Wie bekomme ich da wieder die Namen der Standorte hin? Über eine Query?

Zitat
Me!tbVornameSuche & "*'  And KBO =" & Me!cbStandortAuswahl
Wenn ich den Quellcode entsprechend anpasse bekomme ich die gleiche Fehlermeldung mit Type mismatch.
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: bahasu am Oktober 13, 2013, 13:49:15
Hi

ist Me!cbStandortAuswahl eine Zahl oder ein Text-Feld?

Wenn Text:
... Me!tbVornameSuche & "*'  And KBO = '" & Me!cbStandortAuswahl & "'"


Harald
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: AllenWalker am Oktober 13, 2013, 14:24:54
Ich habe in der Tabelle Standort das Feld ID entfernt und die Bezeichnung als Primärschlüssel gesetzt. Die Bezeichnung kommt jeweils nur einmal vor.
Auf dem Suchformular habe ich die Kombobox angepasst und im Quellcode waren die * zuviel wie bahasu es bereits erwähnt hat.
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: bahasu am Oktober 13, 2013, 15:07:36
Hi,

Zitat von: AllenWalker am Oktober 13, 2013, 14:24:54
Kann ich das Feld ID nicht löschen und Ort als Primärschlüssel nehmen?

Da wäre eine wunderbare Möglichkeit, Chaos zu produzieren!  :(
Stell Dir vor, Du hattest "Duesseldorf" mit "ue" geschrieben und willst es in "Düsseldorf" ändern.
Dann stimmen die Beziehungen nicht mehr.

Harald
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: AllenWalker am Oktober 13, 2013, 15:13:32
Habe die Entfernung des vorherigen Primärschlüssel wieder rückgängig gemacht aber dann kommt wieder die Frage wie ich im Unterformular anstelle des Fremdschlüssels die Bezeichnungen der Standorte gezeigt bekomme?
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: bahasu am Oktober 13, 2013, 15:23:37
Hi,

das Kombifeld hat eine Datenquelle, die besteht aus:
- der ID zum Standort und
- der Bezeichnung vom Standort


Im Reiter "Daten" steht bei "gebundene Spalte" = 1

Im Reiter "Format" steht bei:
- Spaltenzahl = 2
- Spaltenbreite: 0; 10 cm     ' oder irgendein besser passender Wert

Harald
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: AllenWalker am Oktober 13, 2013, 15:30:25
Es geht nicht um das KombiFeld. Das habe ich bereits richtig dargestellt. Es geht um das Feld Standorte im Unterformular. Da das Unterformular auf die Tabelle Kontakte aufbaut stehen im Feld Standort die Fremdschlüssel durch die Relation mit der Tabelle Standorte. Diese Fremdschlüssel möchte ich durch die Bezeichnung des Standortes ändern.
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: DF6GL am Oktober 13, 2013, 15:54:27
Hallo,


"Es geht nicht um das KombiFeld." 

Es geht (jetzt) um das Kombifeld im Unterformular, das den Standort anzeigen soll...


In welcher Ansicht wird das Unterformular dargestellt?  Ist in diesem Formular als Anzeige für den Standort ein Kombifeld eingesetzt?

Wenn so, wie lautet die Datensatzherkunft dieses Kombis?


Lt. den Beschreibungen sollte es so lauten:
SELECT ID, Ort FROM Standort ORDER BY Standort


mit den restlichen Kombi-Einstellungen:

gebundene Spalte: 1
Spaltenanzahl: 2
Spaltenbreiten:  0cm;3cm


Das Ganze funktioniert nur, wenn "KBO" das Fremdschlüsselfeld (das Feld, das den ID-Wert aus "tblStandorte" aufnimmt) ist.
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: AllenWalker am Oktober 13, 2013, 16:23:54
Hatte vergessen anzugeben dass es sich bei dem Feld Standort im Unterformular nach dem Entfernen der Nachschlagefelder in der Tabelle Kontakte um ein Textfeld handelt.
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: DF6GL am Oktober 13, 2013, 17:05:47
HAllo,

Du beantwortest nicht meine Fragen...

In der Tabelle muss es sich um eine Textfeld handeln, im (Unter)-Formular um ein Kombifeld, wie ich es beschrieben habe...

Es kann sein, dass im Falle der "Datenblattansicht" des Formulars kein Kombifeld angezeigt wird.  Ändere dann auf "Endlosform" und erstelle dort wie beschrieben ein Kombifeld für das Standort-ID-Feld (Fremdschlüsselfeld).
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: AllenWalker am Oktober 13, 2013, 17:27:40
Ich habe das wie beschrieben geändert und musste noch die Abfrage etwas anpassen um die Werte aus der Tabelle Kontakte richtig angezeigt zu bekommen.

SELECT ID, Standort
FROM Standorte AS O, Kontakte AS K
WHERE O.ID = K.KBO
ORDER BY Standort;

Die Ansicht des Unterformulars hat sich nach der Beschreibung komplett geändert. Es wird jeweils nur ein Datensatz angezeigt zwischen denen ich wechseln kann. Vorher war dies eine Art Tabellenform mit den 3 Spalten Name, Vorname und Standort. Und wenn ich jetzt eine Eingabe durchführe erhalte ich die Fehlermeldung Type mismatch.
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: AllenWalker am Oktober 14, 2013, 22:35:53
@DF6GL
Ich habe das Feld Standort im Unterformular laut deiner Beschreibung angepasst und habe die SQL Abfrage aus dem vorherigen Post von mir benutzt. Bekomme aber jetzt wieder ein Kombifeld mit Auswahl angezeigt wenn ich in das Feld Standort klicke im Unterformular. Dies ist aber nicht gewollt für die weiteren Aufgaben dieses Formulars.
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: DF6GL am Oktober 15, 2013, 08:35:51
Hallo,


ZitatDies ist aber nicht gewollt für die weiteren Aufgaben dieses Formulars.

???


habe jetzt keinen Überblick mehr über Deine Sachlage.  

Beschreibe nochmal den Istzustand (genau und mit Angaben der jeweiligen SQL-Strings) und was genau erreicht werden soll.


Vielleicht wäre es zielführend, die DB oder eine Demo- DB , die das Verhalten zeigt, hier hochzuladen.
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: AllenWalker am Oktober 20, 2013, 11:52:19
IST-Zustand

Das Formular besitzt 5 Suchkriterien nach den sortiert werden kann. Davon sind 2 Kriterien Textfelder (Name, Vorname) und 3 Auswahlfelder (Standort, Aktiv, Kontaktart). Diese Kriterien werden auf das Unterformular angewendet. Im Unterformular wird neben den bereits genannten Feldern noch zusätzlich das Feld für die Mobiltelefonnummer angezeigt.

Für die Suchkriterien gilt beim Event "OnChange" der jeweiligen Elemente der folgende Code:

Private Sub cbAktivArchiv_Change()

  Me!SucheKontakteDetailSub.Form.RecordSource = "SELECT kliName, kliVorname, KBO FROM Kontakte WHERE kliName LIKE '" & Me!tbNachnameSuche & "*'   And kliVorname LIKE '" & Me!tbVornameSuche & "*'  AND KBO = " & Me!cbStandortAuswahl & " AND aktivArchiv = " & Me!cbAktivArchiv & " AND KontaktArt = " & Me!cbKontaktart

End Sub

Private Sub cbKontaktart_Change()

  Me!SucheKontakteDetailSub.Form.RecordSource = "SELECT kliName, kliVorname, KBO FROM Kontakte WHERE kliName LIKE '" & Me!tbNachnameSuche & "*'   And kliVorname LIKE '" & Me!tbVornameSuche & "*'  AND KBO = " & Me!cbStandortAuswahl & " AND aktivArchiv = " & Me!cbAktivArchiv & " AND KontaktArt = " & Me!cbKontaktart

End Sub

Private Sub cbStandortAuswahl_Change()
 
  Me!SucheKontakteDetailSub.Form.RecordSource = "SELECT kliName, kliVorname, KBO FROM Kontakte WHERE kliName LIKE '" & Me!tbNachnameSuche & "*'   And kliVorname LIKE '" & Me!tbVornameSuche & "*'  AND KBO = " & Me!cbStandortAuswahl & " AND aktivArchiv = " & Me!cbAktivArchiv & " AND KontaktArt = " & Me!cbKontaktart
   
End Sub

Private Sub tbNachnameSuche_Change()

  Me!SucheKontakteDetailSub.Form.RecordSource = "SELECT kliName, kliVorname, KBO FROM Kontakte WHERE kliName LIKE '" & Me!tbNachnameSuche & "*'   And kliVorname LIKE '" & Me!tbVornameSuche & "*'  AND KBO = " & Me!cbStandortAuswahl & " AND aktivArchiv = " & Me!cbAktivArchiv & " AND KontaktArt = " & Me!cbKontaktart

End Sub

Private Sub tbVornameSuche_Change()

    Me!SucheKontakteDetailSub.Form.RecordSource = "SELECT kliName, kliVorname, KBO FROM Kontakte WHERE kliName LIKE '" & Me!tbNachnameSuche & "*'   And kliVorname LIKE '" & Me!tbVornameSuche & "*'  AND KBO = " & Me!cbStandortAuswahl & " AND aktivArchiv = " & Me!cbAktivArchiv & " AND KontaktArt = " & Me!cbKontaktart

End Sub


SOLL-Zustand


Danke sehr,
Gruß,
AllenWalker
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: DF6GL am Oktober 20, 2013, 14:47:53
Hallo,


-- wie lauten die Datensatzherkünfte der 3 Auswahlkombis?

-- Kann das Feld "Standort" im UFO nicht "unsichtbar" gesetzt werden (oder, falls vorhanden, nicht aus der Form-Abfrage entfernt werden)?

-- einfach auch für diese UFO-Felder je ein Kombi verwenden...
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: AllenWalker am Oktober 20, 2013, 18:21:23
Zitat
wie lauten die Datensatzherkünfte der 3 Auswahlkombis?
Die Datenherkunft der 3 Auswahlkombis ist eine Tabelle.
Feld - Tabelle
Standort - Standort
Aktiv - AktivArchiv
Kontaktart - KontaktArt

Zitat
Kann das Feld "Standort" im UFO nicht "unsichtbar" gesetzt werden (oder, falls vorhanden, nicht aus der Form-Abfrage entfernt werden)?
In der Entwurfsansicht kann ich die Eigenschaft "Visible" auf No setze aber wenn ich die Ansicht wechsle bleibt das Feld "Standort" trotzdem sichtbar. Brauche ich das Feld nicht wegen der Suchkriterie Standort?

Zitat
einfach auch für diese UFO-Felder je ein Kombi verwenden...
Für die weitere Anwendung des Formulares wäre so ein Auswahlfeld im Unterformular irritierend, da man denken könnte man könnte den Wert ändern außer wenn ich die Eigenschaft "Enable" auf "No" setze.

Danke sehr,
Gruß,
AllenWalker
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: DF6GL am Oktober 20, 2013, 20:08:49
Hallo,

die Datensatzherkunft der Kombis sollte so lauten (jeweils angepasst):

Select StandortID, Standort From Standort  Order BY Standort


mit  
Spaltenanzahl: 2
Spaltenbreiten: 0cm;2cm



In der Tabelle "Standort"  kommt ein weiterer Eintrag hinzu:

StandortID    Standort

  6                _Alle         Der Unterstrich hier soll für ein Leerzeichen stehen !  Der ID-Wert ist hier natürlich beispielhaft




Im Code könnte der SQL-String dann so aussehen (besser bei den Kombis das AfterUpdate()-Ereignis benutzen:


Private Sub cbStandortAuswahl_Afterupdate()
 
 Me!SucheKontakteDetailSub.Form.RecordSource = "SELECT kliName, kliVorname, KBO FROM Kontakte WHERE kliName LIKE '" & Me!tbNachnameSuche & "*'   And kliVorname LIKE '" & Me!tbVornameSuche & "*'  AND (KBO = " & Me!cbStandortAuswahl & " Or " & Me!cbStandortAuswahl & " = 6 )  AND aktivArchiv = " & Me!cbAktivArchiv & " AND KontaktArt = " & Me!cbKontaktart
 
End Sub



Die "rote" Where-Condition muss natürlich auch in den restlichen SQL-Strings so eingesetzt werden...



Bei den Such-Textfeldern sollte bei der Verwendung des Change-Ereignisses die "Text"-Eigenschaft des akt. Textfeldes verwendet werden:


Private Sub tbNachnameSuche_Change()

 Me!SucheKontakteDetailSub.Form.RecordSource = "SELECT kliName, kliVorname, KBO FROM Kontakte WHERE kliName LIKE '" & Me!tbNachnameSuche.Text  & "*'   And kliVorname LIKE '" & Me!tbVornameSuche & "*'  AND KBO = " & Me!cbStandortAuswahl & " AND aktivArchiv = " & Me!cbAktivArchiv & " AND KontaktArt = " & Me!cbKontaktart

End Sub






Ich sehe nicht ein , warum ein Feld weiterhin sichtbar sein sollte, wenn dessen Eigenschaft auf "unsichtbar" steht. Außer an der DB (am Formular) ist irgendetwas zerschossen.




Wenn kein Kombi im Ufo benutzt werden soll, kann man:

-- eine verknüpfende Abfrage über alle beteiligten Tabellen für die Datenherkunft des UFOs benutzen und ein Textfeld an das Feld "Standort" binden.

oder

--  ein ungebundenes Textfeld im Detailbereich platzieren, das etwa einen solchen Eintrag hat:

= Dlookup("Standort";"Standort";"StandortID= " & [StandortID])


wobei StandortID das entspr. Feld  aus der Datenherkunft des Forms ist.




Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: AllenWalker am Oktober 21, 2013, 10:18:41
Zitat
In der Tabelle "Standort"  kommt ein weiterer Eintrag hinzu:

StandortID    Standort

   6                _Alle         Der Unterstrich hier soll für ein Leerzeichen stehen !  Der ID-Wert ist hier natürlich beispielhaft




Im Code könnte der SQL-String dann so aussehen (besser bei den Kombis das AfterUpdate()-Ereignis benutzen:


Private Sub cbStandortAuswahl_Afterupdate()
 
  Me!SucheKontakteDetailSub.Form.RecordSource = "SELECT kliName, kliVorname, KBO FROM Kontakte WHERE kliName LIKE '" & Me!tbNachnameSuche & "*'   And kliVorname LIKE '" & Me!tbVornameSuche & "*'  AND (KBO = " & Me!cbStandortAuswahl & " Or " & Me!cbStandortAuswahl & " = 6 ) AND aktivArchiv = " & Me!cbAktivArchiv & " AND KontaktArt = " & Me!cbKontaktart
   
End Sub



Die "rote" Where-Condition muss natürlich auch in den restlichen SQL-Strings so eingesetzt werden...


Danke sehr für deine Mühe aber kann noch nicht so richtig nachvollziehen in wie fern das bei der Auswahl von dem Eintrag "Alle" alle Datensätze gezeigt werden?
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: DF6GL am Oktober 21, 2013, 10:46:28
Hallo,

http://www.donkarl.com/?FAQ3.14

Beachte aber auch den letzten Satz in diesem Artikel...
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: AllenWalker am Oktober 28, 2013, 22:29:01
Ich komme gerade etwas aus dem Konzept bei der langen Abfrage für die Elemente (Dropdown und Textfelder) bei den Suchkriterien.
Versuche mit der Beschreibung von DF6GL die Änderungen vorzunehmen aber bekomme eine Fehlermeldung von Access.

Zitat
Run-Time error '2185'

You can't reference a property or method for a control unless the control has focus.

Mein Code für die Dropdown Box bei AktivArchiv

Private Sub cbAktivArchiv_AfterUpdate()
 'Kontrolle
 MsgBox "SELECT kliName, kliVorname, KBO FROM Kontakte WHERE kliName LIKE '" & Me!tbNachnameSuche.Text & "*'   And kliVorname LIKE '" & Me!tbVornameSuche.Text & "*' AND (KBO = " & Me!cbStandortAuswahl & " Or " & Me!cbStandortAuswahl & " = 8) AND (aktivArchiv = " & Me!cbAktivArchiv & " Or " & Me!cbAktivArchiv & " = 3) AND (Kontaktart = " & Me!cbKontaktart & " Or " & Me!cbKontaktart & " = 6)"

 Me!SucheKontakteDetailSub.Form.RecordSource = "SELECT kliName, kliVorname, KBO FROM Kontakte WHERE kliName LIKE '" & Me!tbNachnameSuche.Text & "*'   And kliVorname LIKE '" & Me!tbVornameSuche.Text & "*' AND (KBO = " & Me!cbStandortAuswahl & " Or " & Me!cbStandortAuswahl & " = 8) AND (aktivArchiv = " & Me!cbAktivArchiv & " Or " & Me!cbAktivArchiv & " = 3) AND (Kontaktart = " & Me!cbKontaktart & " Or " & Me!cbKontaktart & " = 6)"

End Sub


Kleine Frage am Rande. Wie kann man nochmal im Code Zeilenbrüche einfügen um den Code etwas lesbarer zu machen bei langen Codezeilen?

Für die korrekte Anzeige der Inhalte im Unterformular anstelle der Fremdschlüssel aus der Tabelle Kontakte, habe ich momentan ein ungebundenes Textfeld für Standort im Unterformular hinzugefügt und als Datenherkunft folgende Zeile eingefügt.


=DLookUp("Standortbezeichnung";"Standort";"ID= " & [ID])


Bekomme als Ergebnis im Unterformular "#Name?" angezeigt.

Danke sehr,
Gruß,
AllenWalker
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: DF6GL am Oktober 28, 2013, 23:15:17
Hallo,

Private Sub cbAktivArchiv_AfterUpdate()
  'Kontrolle
  MsgBox "SELECT kliName, kliVorname, KBO FROM Kontakte WHERE " & _
  " kliName LIKE '" & Me!tbNachnameSuche & "*'   And " & _
  " kliVorname LIKE '" & Me!tbVornameSuche  & "*' AND " & _
  " (KBO = " & Me!cbStandortAuswahl & " Or " & Me!cbStandortAuswahl & " = 8) AND " & _
  " (aktivArchiv = " & Me!cbAktivArchiv & " Or " & Me!cbAktivArchiv & " = 3) AND " & _
  " (Kontaktart = " & Me!cbKontaktart & " Or " & Me!cbKontaktart & " = 6)"

  Me!SucheKontakteDetailSub.Form.RecordSource ="SELECT kliName, kliVorname, KBO FROM Kontakte" & _
  "  WHERE  kliName LIKE '" & Me!tbNachnameSuche & "*' " & _
  "  And kliVorname LIKE '" & Me!tbVornameSuche  & "*' " & _
  "  AND (KBO = " & Me!cbStandortAuswahl & " Or " & Me!cbStandortAuswahl & " = 8)" & _
  "  AND (aktivArchiv = " & Me!cbAktivArchiv & " Or " & Me!cbAktivArchiv & " = 3)" & _
  "  AND (Kontaktart = " & Me!cbKontaktart & " Or " & Me!cbKontaktart & " = 6)"

End Sub




=DLookUp("Standortbezeichnung";"Standort";"ID= " & [ID])   

Gibt es im UFO und in der Tabelle ein Feld mit Namen "ID") ?
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: AllenWalker am Oktober 29, 2013, 07:35:12
Danke sehr :) Habe meinen Code entsprechend angepasst aber wenn ich bei einem Kombinationsfeld etwas auswähle und die anderen Kombinationsfelder sind leer kommt eine Fehlermeldung die besagt dass in der Abfrage Elemente fehlen. Ich gehe davon aus dass die Kombinationsfelder Standardwerte enthalten sollen. In diesem Fall wäre es das Feld mit dem Wert "_Alle" (Leerzeichen).

Durch eine Suche habe ich folgendes gefunden aber keins von beiden hat den Standardwert im Kombinationsfeld angezeigt.
Zitat

  • =DLookup(" Alle";"Kontaktart")
  • =[cbKontaktart].[ItemData](6)

Zitat
=DLookUp("Standortbezeichnung";"Standort";"ID= " & [ID])    

Gibt es im UFO und in der Tabelle ein Feld mit Namen "ID") ?
Im Unterformular gibt es kein Feld mit dem Namen "ID". Im Unterformular befinden sich die Felder "Name", "Vorname", "Mobil", "KBO" (Standort), "AktivArchiv" und "Kontaktart". Alle Felder kommen aus der Tabelle "Kontakte". Aus den Vorschlägen ein, zwei Post vorher habe ich das mit dem ungebundenen Textfeld benutzt.

Danke sehr,
Gruß,
AllenWalker
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: DF6GL am Oktober 29, 2013, 08:24:00
Hallo,


nun,  meine Vorschläge sollten halt (im Prinzip) GENAU umgesetzt werden..


Beim Ereignis "Change" eines Kombis/Textfeldes kann (muss) dessen .TEXT- Eigenschaft verwendet werden, beim "AfterUpdate"-Ereignis jedoch nicht....


Wenn bei leeren Feldern Elemente fehlen, dann muss dieser Zustand mit der NZ() oder IsNull()-Funktion abgefangen und ein Ersatzwert bereitgestellt werden.


z. B.:


.
.
" aktivArchiv = " & nz(Me!cbAktivArchiv,3)  AND " & _  
" Kontaktart = " & nz(Me!cbKontaktart,6) "
.
.



Das alleinige Setzen der Standard-Eigenschaft auf den " ALLE"-Wert (besser:  den Primärschlüsselwert für " ALLE" ) eliminiert nicht den Fall, dass der angezeigte Wert manuell gelöscht, d. h. das Kombifeld geleert wird.

Bei solchen Felder, die mit    Like '....*'     verglichen werden, ist das nicht unbedingt nötig.



Hier:
=DLookUp("Standortbezeichnung";"Standort";"ID= " & [ID])

muss für ID  der Name des Primärschlüsselfeldes der Tabelle "Standort" und für ID der Name des Formulartextfeldes, das den Primärschlüsselwert anzeigt, eingesetzt werden.
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: AllenWalker am Oktober 29, 2013, 14:42:32
Irgendwie habe ich etwas falsch verstanden oder falsch programmiert. Bin der Beschreibung von DF6GL gefolgt um über den Eintrag " Alle" im Kombinationsfeld alle Datensätze im Unterformular anzeigen zu lassen. Wenn ich etwas bei einem Kominationsfeld was auswähle bleibt das Unterformular leer obwohl in der Tabelle solche Datensätze enthalten sind und wenn ich bei den Textfelder was eingebe bekomme ich folgenden Fehler.
Zitat
Run-Time error '2185'

You can't reference a property or method for a control unless the control has focus.

Mein Quellcode

Private Sub cbAktivArchiv_AfterUpdate()
         
  Me!SucheKontakteDetailSub.Form.RecordSource = "SELECT kliName, kliVorname, KBO FROM Kontakte " & _
                                                " WHERE kliName LIKE '" & Me!tbNachnameSuche & "*'" & _
                                                " AND kliVorname LIKE '" & Me!tbVornameSuche & "*'" & _
                                                " AND KBO = " & Nz(Me!cbStandortAuswahl, 8) & _
                                                " AND aktivArchiv = " & Nz(Me!cbAktivArchiv, 3) & _
                                                " AND KontaktArt = " & Nz(Me!cbKontaktart, 6)

End Sub

Private Sub cbKontaktart_AfterUpdate()

  Me!SucheKontakteDetailSub.Form.RecordSource = "SELECT kliName, kliVorname, KBO FROM Kontakte " & _
                                                " WHERE kliName LIKE '" & Me!tbNachnameSuche & "*'" & _
                                                " AND kliVorname LIKE '" & Me!tbVornameSuche & "*'" & _
                                                " AND KBO = " & Nz(Me!cbStandortAuswahl, 8) & _
                                                " AND aktivArchiv = " & Nz(Me!cbAktivArchiv, 3) & _
                                                " AND KontaktArt = " & Nz(Me!cbKontaktart, 6)

End Sub

Private Sub cbStandortAuswahl_AfterUpdate()

  Me!SucheKontakteDetailSub.Form.RecordSource = "SELECT kliName, kliVorname, KBO FROM Kontakte " & _
                                                " WHERE kliName LIKE '" & Me!tbNachnameSuche & "*'" & _
                                                " AND kliVorname LIKE '" & Me!tbVornameSuche & "*'" & _
                                                " AND KBO = " & Nz(Me!cbStandortAuswahl, 8) & _
                                                " AND aktivArchiv = " & Nz(Me!cbAktivArchiv, 3) & _
                                                " AND KontaktArt = " & Nz(Me!cbKontaktart, 6)

End Sub

Private Sub tbNachnameSuche_Change()

  Me!SucheKontakteDetailSub.Form.RecordSource = "SELECT kliName, kliVorname, KBO FROM Kontakte " & _
                                                " WHERE kliName LIKE '" & Me!tbNachnameSuche.Text & "*'" & _
                                                " AND kliVorname LIKE '" & Me!tbVornameSuche.Text & "*'" & _
                                                " AND KBO = " & Nz(Me!cbStandortAuswahl, 8) & _
                                                " AND aktivArchiv = " & Nz(Me!cbAktivArchiv, 3) & _
                                                " AND KontaktArt = " & Nz(Me!cbKontaktart, 6)

End Sub

Private Sub tbVornameSuche_Change()

  Me!SucheKontakteDetailSub.Form.RecordSource = "SELECT kliName, kliVorname, KBO FROM Kontakte " & _
                                                " WHERE kliName LIKE '" & Me!tbNachnameSuche.Text & "*'" & _
                                                " AND kliVorname LIKE '" & Me!tbVornameSuche.Text & "*'" & _
                                                " AND KBO = " & Nz(Me!cbStandortAuswahl, 8) & _
                                                " AND aktivArchiv = " & Nz(Me!cbAktivArchiv, 3) & _
                                                " AND KontaktArt = " & Nz(Me!cbKontaktart, 6)
End Sub


Zitat
Hier:
=DLookUp("Standortbezeichnung";"Standort";"ID= " & [ID])

muss für ID  der Name des Primärschlüsselfeldes der Tabelle "Standort" und für ID der Name des Formulartextfeldes, das den Primärschlüsselwert anzeigt, eingesetzt werden.
Nochmal zum besseren Verständnis, diese Vorgehensweise war gedacht für ein ungebundenes Textfeld im Unterformular. Aber dann kann ich bei ID keinen Wert übergeben da in dem ungebundenen Textfeld vorher kein Wert enthalten ist.

Danke sehr,
Gruß,
AllenWalker
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: DF6GL am Oktober 29, 2013, 15:38:28
Hallo,

bezgl. "Property" liegt der Fehler darin, dass im Change-Ereignis eines Such-Textfeldes die Referenz auf NUR DESSEN TEXT-Eigenschaft zulässig , bei den anderen aber die Referenz auf deren VALUE-Eigenschaft (die als "Standard" auch weggelassen werden kann) erforderlich ist.


Private Sub tbNachnameSuche_Change()

 Me!SucheKontakteDetailSub.Form.RecordSource = "SELECT kliName, kliVorname, KBO FROM Kontakte " & _
                                               " WHERE kliName LIKE '" & Me!tbNachnameSuche.Text  & "*'" & _
                                               " AND kliVorname LIKE '" & Me!tbVornameSuche.Text  & "*'" & _
                                               " AND KBO = " & Nz(Me!cbStandortAuswahl, 8) & _
                                               " AND aktivArchiv = " & Nz(Me!cbAktivArchiv, 3) & _
                                               " AND KontaktArt = " & Nz(Me!cbKontaktart, 6)

End Sub

Private Sub tbVornameSuche_Change()

 Me!SucheKontakteDetailSub.Form.RecordSource = "SELECT kliName, kliVorname, KBO FROM Kontakte " & _
                                               " WHERE kliName LIKE '" & Me!tbNachnameSuche.Text & "*'" & _
                                               " AND kliVorname LIKE '" & Me!tbVornameSuche.Text  & "*'" & _
                                               " AND KBO = " & Nz(Me!cbStandortAuswahl, 8) & _
                                               " AND aktivArchiv = " & Nz(Me!cbAktivArchiv, 3) & _
                                               " AND KontaktArt = " & Nz(Me!cbKontaktart, 6)
End Sub



Bezgl. von " Alle" liegt ein Logik-Fehler vor.  Es muss vor dem Zusammenbau des SQL-Strings der akt. Inhalt aller  Kombifelder auf diese Situation hin geprüft und entspr. reagiert werden:



Private Sub cbStandortAuswahl_AfterUpdate()
If Nz(Me!cbStandortAuswahl, 8) = 8 Then   '"Alle" ist gewählt oder das Kombifeld ist leer

 Me!SucheKontakteDetailSub.Form.RecordSource = "SELECT kliName, kliVorname, KBO FROM Kontakte " & _
                                               " WHERE kliName LIKE '" & Me!tbNachnameSuche & "*'" & _
                                               " AND kliVorname LIKE '" & Me!tbVornameSuche & "*'" & _
                                               " AND KBO = " & Nz(Me!cbStandortAuswahl, 8 ) & _
                                               " AND aktivArchiv = " & Nz(Me!cbAktivArchiv, 3) & _
                                               " AND KontaktArt = " & Nz(Me!cbKontaktart, 6)

End Sub



wobei hier nur dieses eine Kombifeld berücksichtigt ist, die anderen müssten ebenfalls (in jeder Ereignisprozedur) geprüft werden. In diesem Fall der voneinander unabhängigen Kombifelder und der Tatsache, dass bei Datentyp Zahl, Long nicht mit dem Like-Operator plus "*" gearbeitet werden kann, wäre es angebracht, den Zusammenbau des SQL_Strings in eine Funktion/Sub  auszulagern und dort die Überprüfung aller beteiligten Suchfelder durchzuführen.  In den Ereignisprozeduren käme dann lediglich der Aufruf dieser Funktion/Sub zu stehen.
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: AllenWalker am November 03, 2013, 15:40:35
Zitat
Bezgl. von " Alle" liegt ein Logik-Fehler vor.  Es muss vor dem Zusammenbau des SQL-Strings der akt. Inhalt aller  Kombifelder auf diese Situation hin geprüft und entspr. reagiert werden:

Private Sub cbStandortAuswahl_AfterUpdate()
If Nz(Me!cbStandortAuswahl, Cool = 8 Then   '"Alle" ist gewählt oder das Kombifeld ist leer

  Me!SucheKontakteDetailSub.Form.RecordSource = "SELECT kliName, kliVorname, KBO FROM Kontakte " & _
                                                " WHERE kliName LIKE '" & Me!tbNachnameSuche & "*'" & _
                                                " AND kliVorname LIKE '" & Me!tbVornameSuche & "*'" & _
                                               " AND KBO = " & Nz(Me!cbStandortAuswahl, 8 ) & _
                                                " AND aktivArchiv = " & Nz(Me!cbAktivArchiv, 3) & _
                                                " AND KontaktArt = " & Nz(Me!cbKontaktart, 6)

End Sub



wobei hier nur dieses eine Kombifeld berücksichtigt ist, die anderen müssten ebenfalls (in jeder Ereignisprozedur) geprüft werden. In diesem Fall der voneinander unabhängigen Kombifelder und der Tatsache, dass bei Datentyp Zahl, Long nicht mit dem Like-Operator plus "*" gearbeitet werden kann, wäre es angebracht, den Zusammenbau des SQL_Strings in eine Funktion/Sub  auszulagern und dort die Überprüfung aller beteiligten Suchfelder durchzuführen.  In den Ereignisprozeduren käme dann lediglich der Aufruf dieser Funktion/Sub zu stehen.

Bezüglich des rot markierten Satzes zerbreche ich mir etwas den Kopf. Mir fallen da zwei Möglichkeiten ein. Entweder über IF... THEN... ELIF... END IF oder die Inahlte aller Kombifelder in der IF-Abfrage mit ODER zu verknüpfen. Aber mir will nicht einfallen wie ich den SQL-String zusammengebastelt bekomme. Würde der auch durch die IF-Abfragen zusammengebastelt werden?
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: AllenWalker am November 04, 2013, 20:36:46
Keiner eine Idee wie er mir helfen könnte ???
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: DF6GL am November 05, 2013, 09:17:27
Hallo,

wo ist denn das Problem?


unter Logikproblem habe ich gemeint, dass eine "Alle"-Abfrage mit Hilfe einer    " xxx=  yyy  Or  xxx is Null" _Konstruktion innerhalb mehrerer anderer Kriterien nicht so funktioniert, wie es erwartet wird.

Es sollten (müssen) alle Kombinationen von möglichen "NULL"-Situtionen der jeweils anderen Suchfelder über If/Endif oder SelectCase entspr. behandelt werden.
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: AllenWalker am November 10, 2013, 14:55:28
Die Suche habe ich hinbekommen. Im weiteren der Quellcode dazu:


Private Sub MakeRecordSource()
  Dim strFilter As String
  ' Kombifelder AktivArchiv, Standort und Kontaktart
  If Not IsNull(Me!cbAktivArchiv) Then
    If Not Me!cbAktivArchiv = 3 Then _
    strFilter = strFilter & " AND aktivArchiv = " & Me!cbAktivArchiv
  End If
  If Not IsNull(Me!cbKontaktart) Then
    If Not Me!cbKontaktart = 6 Then _
    strFilter = strFilter & " AND KontaktArt = " & Me!cbKontaktart
  End If
  If Not IsNull(Me!cbStandortAuswahl) Then
    If Not Me!cbStandortAuswahl = 8 Then _
    strFilter = strFilter & " AND KBO = " & Me!cbStandortAuswahl
  End If
  ' Textfelder Vor- und Nachname
  ' mit Unterstützung des Change-Ereignisses
  If Screen.ActiveControl.Name = "tbNachnameSuche" Then
      strFilter = strFilter & " AND kliName LIKE '" & Me!tbNachnameSuche.Text & "*'"
  ElseIf Not IsNull(Me!tbNachnameSuche) Then
      strFilter = strFilter & " AND kliName LIKE '" & Me!tbNachnameSuche & "*'"
  End If
  If Screen.ActiveControl.Name = "tbvornameSuche" Then
      strFilter = strFilter & " AND kliVorname LIKE '" & Me!tbVornameSuche.Text & "*'"
  ElseIf Not IsNull(Me!tbVornameSuche) Then
      strFilter = strFilter & " AND kliVorname LIKE '" & Me!tbVornameSuche & "*'"
  End If
  ' Filterstring auswerten
  If Len(strFilter) > 5 Then
     strFilter = Mid(strFilter, 6) 'erstes AND abschneiden
     MsgBox strFilter
     Me!SucheKontakteDetailSub.Form.Filter = strFilter
     Me!SucheKontakteDetailSub.Form.FilterOn = True
  Else
   'mach was anderes
     Me!SucheKontakteDetailSub.Form.FilterOn = False
  End If
End Sub


Habe nun das Problem wenn ich einen Kunden aus den Suchergebnissen auswähle, die Daten nicht an den Filter eines weiteren Unterformulars weitergeben kann. Dieses Formular enthält die Terminprotokolle aller Kunden und soll anhand des ausgewählten Kunden gefiltert werden.

Dazu habe ich folgenden Quellcode:

Private Sub kliName_Click()

  MsgBox "Text für Label: " & Me!kliName & " " & Me!kliVorname
  ' Von Unterformular "SucheKontakteDetailSub" auf Steuerelement "lblProtokollUebersicht" im Hauptformular
  Me.Parent!lblProtokollUebersicht = Me.Parent!lblProtokollUebersicht & " " & Me!kliName & " " & Me!kliVorname
 
  Dim strFilter As String
 
  strFilter = "KliID = " & Me!KliID
 
  MsgBox strFilter
  'Forms!ProtokollUebersicht.Form.Filter = strFilter
  'Forms!ProtokollUebersicht.Form.FilterOn = True

End Sub


Als Meldung bekomme ich für das Schreiben auf das Label im Hauptformular. Das Label soll nachher den Text "Protokolle von X Y" enthalten. Benötige ja noch die Daten aus dem ersten Formular (Suchergebnisse) für das zweite Unterformular (Protokollübersicht).
Zitat
Laufzeitfehler '438':
Objekt unterstützt diese Eigenschaft oder Methode nicht

Folgende Seite  (http://dbwiki.net/wiki/Access_Bedienungsanleitung:_Bezug_auf_Formular/Unterformular) habe ich zur Rate geholt aber hat nichts gebracht.

Danke sehr,
Gruß,
AllenWalker
Titel: Re: Formular mit Suchfeld auf Unterformular
Beitrag von: DF6GL am November 10, 2013, 15:38:13
Hallo,


http://www.ms-office-forum.de/forum/showthread.php?t=304293



I'm not amused..




<gelöscht>