Suchen im Formular

Hallo Leute,

bin noch Recht neu was Access betrifft. Hab zwar in den letzten Tagen einiges getestet und gelernt, aber hab grad irgendwie nen Brett vor dem Kopf.
Ich soll ein Formular erstellen zu Auswertung von Messdaten von 4 Anlagen. Jede Anlage gibt die Daten in .csv Dateien aus. Diese importiere ich jedes in eine eigene Tabelle.
Das Formular soll so aussehen, das im Suchfeld die entsprechende Anlage ausgewählt wird und unten die Parameter ausgegeben werden. Nicht jede Anlage hat die gleichen Parameter, nicht ausgefüllte sollen eben leer bleiben.
Suchkriterien wären also die entsprechene Anlage, Datum und evtl. Uhrzeit.

Wie kann ich die 4 Tabellen in das Formular bekommen und dann aber nur von den jeweils ausgesuchten Anlagen die Parameter angezeigt bekommen?
Und wie bekomm ich das hin, das ich nur einmal die Parameter erstelle und das entsprechende dort ausgegeben wird und nicht für jede Tabelle die Textfelder da sein müssen.

Ich hoffe ihr versteht mich so bisschen :-/

Vielen Dank

Niesel

Hallo Niesel,

Ich soll ein Formular erstellen zu Auswertung von Messdaten
von 4 Anlagen. Jede Anlage gibt die Daten in .csv Dateien aus.
Diese importiere ich jedes in eine eigene Tabelle.

warum importierst du diese nicht in eine Tabelle mit einem Kennzeichnungsfeld, von welcher Anlage die Informationen kommen?

Das Formular soll so aussehen, das im Suchfeld die
entsprechende Anlage ausgewählt wird und unten die Parameter
ausgegeben werden.

Beispiele dafür findest du hier in den FAQs. Allerdings wird bei 4 Tabellen der Einsatz von 4 Formularen, oder 4 Unterformularen (UFOs) notwendig sein.

Nicht jede Anlage hat die gleichen Parameter,

Parameter? was meinst du damit?

nicht ausgefüllte sollen eben leer bleiben.

das liegt am Filter den du bestimmst…

Suchkriterien wären also die entsprechene Anlage, Datum und
evtl. Uhrzeit.

erstelle für Anlage ein Kombifeld und für die anderen entsprechend Datum und Zeitfelder um die Daten einzugeben.

Wie kann ich die 4 Tabellen in das Formular bekommen und dann
aber nur von den jeweils ausgesuchten Anlagen die Parameter
angezeigt bekommen?

mit 4 UFOs die übereinander liegen und die du entsprechend ein- und ausblendest.
(besser wäre eine Tabelle mit allen Daten)

Und wie bekomm ich das hin, das ich nur einmal die Parameter
erstelle und das entsprechende dort ausgegeben wird und nicht
für jede Tabelle die Textfelder da sein müssen.

sorry, aber könntest du DAS mal genauer beschreiben, was du damit meinst?

Ich hoffe ihr versteht mich so bisschen :-/

eher so ein bisschen :wink:

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Hallo Wolfgang,

danke für deine Antwort, ich würde mich wohl selber auch nicht verstehen :wink:

warum importierst du diese nicht in eine Tabelle mit einem
Kennzeichnungsfeld, von welcher Anlage die Informationen
kommen?

wie geht das?

Parameter? was meinst du damit?

Suchergebnisse, also zum Beispiel Datum, Uhrzeit, Temperatur, …
Nur sind die in den verschiedenen Tabellen unterschiedlich benannt?!
Also ich möchte das das ergebnis Datum von Anlage 1 in dem vorgesehen Feld Datum steht und das Ergebnis von der Datumssuche der Anlage 2 auch wieder im Feld Datum steht.

Suchkriterien wären also die entsprechene Anlage, Datum und
evtl. Uhrzeit.

erstelle für Anlage ein Kombifeld und für die anderen
entsprechend Datum und Zeitfelder um die Daten einzugeben.

Wie kann ich nach den Anlagen suchen? Das sind ja irgendwie nur die Tabellen Überschriften?

Und wie bekomm ich das hin, das ich nur einmal die Parameter
erstelle und das entsprechende dort ausgegeben wird und nicht
für jede Tabelle die Textfelder da sein müssen.

sorry, aber könntest du DAS mal genauer beschreiben, was du
damit meinst?

Ich möchte die Felder Datum, Uhrzeit, Temperatur, Leistung nur einmal stehen haben und die Tabellen sollen jeweils die Ergebnisse nach der Suche dort anzeigen.

Ich hoffe ihr versteht mich so bisschen :-/

eher so ein bisschen :wink:

sorry

Danke

Niesel

Hallo Niesel,

warum importierst du diese nicht in eine Tabelle mit einem
Kennzeichnungsfeld, von welcher Anlage die Informationen
kommen?

wie geht das?

= mit vier Anfügeabfragen

Du erstellst eine Mastertabelle z.B. mit dem Namen: MESSWERTE
Dort drin hast du die Felder:

ID_Messwert Typ=Autowert
Anlagenname Typ=Text
Datum_Messung Typ=Datum
Zeit_Messung Typ=Datum Format=24Stunden
Temperatur Typ=Zahl (ggf. Formatierung an deine Bedürfnisse anpassen)
Leistung Typ=? (keine Ahnung, wie du die Leistung darstellst)

Da du die CSV über Datei -> externe Daten -> verknüpft hast, hast du ja vier „Tabellen“ dieser Dateien in Access.

Nun erstellst du für jede externe Tabelle eine Anfügeabfrage an die Mastertabelle. Wird diese dann ausgeführt, werden die Daten in die Mastertabelle übertragen.

Das könnte man dann per Button/Taste aus dem Formular steuern.

Parameter? was meinst du damit?

Suchergebnisse, also zum Beispiel Datum, Uhrzeit, Temperatur,

also die Daten in den dargestellten Feldern…

Nur sind die in den verschiedenen Tabellen unterschiedlich
benannt?!

das ist egal, da das mit der jeweiligen Anfügeabfrage pro externer Tabelle ja egalisiert wird.

Also ich möchte das das ergebnis Datum von Anlage 1 in dem
vorgesehen Feld Datum steht und das Ergebnis von der
Datumssuche der Anlage 2 auch wieder im Feld Datum steht.

das kannst du mit den Anfügeabfragen alles zuordnen :smile:

Wie kann ich nach den Anlagen suchen? Das sind ja irgendwie
nur die Tabellen Überschriften?

in der Mastertabelle hast du dann ein Feld [Anlagename] das kannst du dann durchsuchen :smile:

In der Anfügeabfrage gibst du dann einfach an, für welche Anlage es sein soll.

Ich möchte die Felder Datum, Uhrzeit, Temperatur, Leistung nur
einmal stehen haben und die Tabellen sollen jeweils die
Ergebnisse nach der Suche dort anzeigen.

mit der Mastertabelle kein Problem, da es die Felder dann ja nur einmal gibt. D.h. diese Mastertabelle würde dann die Datenbasis für dein Formular sein. Im Formularkopf erstellst du dann deine Suchfelder und Tasten.

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Hallo Netwolf,

danke für die Antwort, das ist super, so langsam komme ich meinem Ziel näher :smile:

Du erstellst eine Mastertabelle

ok das funktioniert :smile:

Nun erstellst du für jede externe Tabelle eine Anfügeabfrage
an die Mastertabelle. Wird diese dann ausgeführt, werden die
Daten in die Mastertabelle übertragen.

Das könnte man dann per Button/Taste aus dem Formular steuern.

für jede eine Anfügeabfrage habe ich gemacht, soll ich das in der Anfrage noch nicht ausführen? Wie geht das mit dem Button im Formular?

Wie kann ich nach den Anlagen suchen? Das sind ja irgendwie
nur die Tabellen Überschriften?

in der Mastertabelle hast du dann ein Feld [Anlagename] das
kannst du dann durchsuchen :smile:

In der Anfügeabfrage gibst du dann einfach an, für welche
Anlage es sein soll.

Wie geht das? Das Feld Anlagenname erstelle ich ja nun zusätzlich, aber das ist ja inhaltlich leer, da kommen ja keine Daten aus den Tabellen, das ist ja nur die Tabellenüberschrift…muss ich das noch nachträglich per Hand eintragen oder wie kann das Suchfeld erkennen, welche Daten zu der jeweiligen Anlage gehören?

Vielen Dank für deine Mühe Netwolf :smile:

Niesel

Hallo Niesel,

Wie geht das mit dem Button im Formular?

lese FAQ:2711

Erzeuge eine Taste/Button im Kopf, oder Fuß (über Ansicht auszuwählen) deines Formulares.

  • (Doppelklick) oder Rechtsklick auf diese Taste/Button -> Eigenschaften
  • Reiter = Ereignis
  • klicke auf den Schriftzug -> [Beim Klicken] dann erscheint: [Ereignisprozedur]
  • dann hinter der Zeile auf die Taste […] klicken
  • nun bist du im VBA-Editor (ein extra Programm)
  • dort eintragen:

docmd.openquery „Abfrage_für_Tabelle1“
docmd.openquery „Abfrage_für_Tabelle2“
docmd.openquery „Abfrage_für_Tabelle3“
docmd.openquery „Abfrage_für_Tabelle4“
me.requery

  • speichern
  • VBA-Editor schließen
  • Formular speichern
  • fertig

nun werden alle vier Abfragen beim Klick auf die Taste/Button ausgeführt.
(die Bezeichnung für deine Abfragen musst du noch anpassen!!)

In der Anfügeabfrage gibst du dann einfach an, für welche
Anlage es sein soll.

Wie geht das? Das Feld Anlagenname erstelle ich ja nun
zusätzlich, aber das ist ja inhaltlich leer, da kommen ja
keine Daten aus den Tabellen, das ist ja nur die
Tabellenüberschrift…muss ich das noch nachträglich per Hand
eintragen oder wie kann das Suchfeld erkennen, welche Daten zu
der jeweiligen Anlage gehören?

  • erstelle eine neue, leere Spalte in der Abfrage
  • in der Zeile „FELD“ tippst du folgendes ein: „Anlage1“ (mit Anführungszeichen)
  • und drückst die TAB- oder Enter-Taste
  • in der Zeile „Anfügen an“ wählst du das Feld der Mastertabelle in der diese Information gespeichert werden soll.
  • fertig

nun wird das Feld der Mastertabelle immer mit der entsprechenden Information des Anlagenamens gefüllt, ohne das du etwas manuell nachtragen musst.

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Hallo Netwolf,

vielen vielen danke für deine Hilfe. Das mit den Anfügetabellen klappt super. Und mit dem Suchfeld zum auswählen der Anlagen klappt auch langsam.

Aber ein Problem hab ich noch, und zwar zeigt mein Formular nur noch gerundete Werte an, wobei in den einzelnen Tabellen alle Zahlen mit Dezimalstellen sind. In der Mastertabelle allerdings sind die Werte auch schon gerundet :-/
Hab alles nochmal neu gemacht, die Formate in der Importspezifikation angepasst, die Formate in den Tabellen, Abfragen und im Formular selbst geprüft. Hab überall Long Integer, Allgemeine Zahl und Dezimalstellen automatisch drin stehen. Versteh nicht, wo und warum der das auf einmal rundet.

Niesel

Hallo Niesel,

Hab überall Long Integer

ok, ggf. auf Double umstellen

Allgemeine Zahl

manchmal ist weniger, mehr: also diesen Eintrag löschen

Versteh nicht, wo und warum der das auf einmal rundet.

Antwort: Allgemeine Zahl

Die Dezimalstellen immer fest definieren, sonst sieht es ggf. nicht so gut aus, wenn mal eine, zwei oder drei Stellen angezeigt werden.

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Hallo Netwolf,

ok, ggf. auf Double umstellen

Allgemeine Zahl

manchmal ist weniger, mehr: also diesen Eintrag löschen

supi, so funktionierts wieder :smile:

Hast du vielleicht noch ne Idee wie ich das Suchfeld nach den Anlagen mit einem Kombinationsfeld hinbekomme? Bisher hab ich es als Textfeld und Suche nach den Begriffen die ich eingebe. Geht zwar auch, aber besser wärs vielleicht, wenn man da mit nem Kombinationsfeld einfach auswählen könnte.

Lieben Dank

Niesel

Hallo Niesel,

Hast du vielleicht noch ne Idee wie ich das Suchfeld nach den
Anlagen mit einem Kombinationsfeld hinbekomme?

klar, lese hier die FAQs:
FAQ:2711
FAQ:2768

In deinem Fall:

  • Gruppiere in der Abfrage für das Kombifeld die Spalte der Anlagen-Bezeichnung (damit diese nicht doppelt erscheinen)
  • lösche die bisherige Ereignisprozedur
  • setze beim Ereignis: bei Fokusverlußt -> per VBA […] ->

me.filter = me.Kombifeld
me.filteron = iif(len(me.Kombifeld)>0,true,false)
me.requery

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Hi Netwolf,

kann dir gar nicht genug danken für deine Geduld mit mir :smile:

Aber wie kann ich in der Abfrage etwas gruppieren? Soll ich das in jeder einzelne Anfügeabfrage mit der Spalte Anlagen machen?

Was ich auch noch gern machen würde ist, mehrere Suchfelder sozusagen zu verknüpfen.
Also das ich oben eingebe: die gewählte Anlage, das entsprechende Datum und die genau Uhrzeit und ausgespuckt werden soll der entsprechende Datensatz.

Ich fürchte das bekommt man nur mit VBA hin, oder?
Bis jetzt ging das ja alles noch, hast da nen Tipp wie ich das als Laie hinbekomme?

Vielen Dank

Niesel

Hi Niesel,

Aber wie kann ich in der Abfrage etwas gruppieren?

über Ansicht -> Funktionen (einschalten), oder leichter -> über das Summen-Icon [Σ] in der Symbolleiste.
Du bekommst dann eine neue Zeile für die Funktionen.

Soll ich das in jeder einzelne Anfügeabfrage mit der Spalte Anlagen
machen?

nein, bloß nicht, nur bei der Abfrage die hinter dem Kombifeld „liegt“. Diese siehst du nicht und wird zusammen mit dem Formular gespeichert.

  • Rechtsklick auf das Kombifeld
  • Eigenschaften
  • Reiter = ALLE
  • Datensatzherkunft […]
  • dort ist die entsprechende Abfrage
  • nur dort Gruppieren
  • es reicht EINE Spalte = Anlagenname (mehr nicht)
  • Abfrage nur SCHLIEßEN und Änderungen übernehmen und NICHT speichern

Was ich auch noch gern machen würde ist, mehrere Suchfelder
sozusagen zu verknüpfen.
Also das ich oben eingebe: die gewählte Anlage, das
entsprechende Datum und die genau Uhrzeit und ausgespuckt
werden soll der entsprechende Datensatz.

dann erweitere den Filter entsprechend.

Ich fürchte das bekommt man nur mit VBA hin, oder?

richtig

Bis jetzt ging das ja alles noch, hast da nen Tipp wie ich das
als Laie hinbekomme?

Annahme (mangels Informationen):

  1. Suchfeld Name = Suche_Anlagen (das Kombifeld)
  2. Suchfeld Name = Suche_Datum
  3. Suchfeld Name = Suche_Zeit

Du kannst z.B. eine SUB schreiben:

Privat SUB Zeige_Suche()
Dim F1,F2,F3,xFilter

xFilter =""

F1 = „[Deine_Feldbezeichnung_in_Tabelle_für Anlagen]= '“ & me.Suche_Anlagen & „’“
F2 = „[Deine_Feldbezeichnung_in_Tabelle_für_Datum]= '#“ & me.Suche_Datum & „#’“
F3 = „[Deine_Feldbezeichnung_in_Tabelle_für_Zeit]= '#“ & me.Suche_Zeit & „#’“

xFilter = xFilter & iif(len(me.Suche_Anlagen)>0,F1,"")
xFilter = iif(len(xFilter)>0,xFilter & " and „,“") & iif(not isnull(me.Suche_Datum),F2,"")
xFilter = iif(len(xFilter)>0,xFilter & " and „,“") & iif(not isnull(me.Suche_zeit),F3,"")

me.filter =xFilter
me.filteron = iif(len(xFilter)>0,true,false)
me.requery
End Sub

Bei jedem der Suchfelder gibst du dann für das Ereignis: Beim Fokusverlußt nur noch den Aufruf der SUB ein:

Beispiel:
Private Sub Suche_Anlage_LostFocus()
Zeige_Suche
End Sub

Achtung: JEDES Zeichen hier im Code ist wichtig!! Besonders die Apostrophe ’ !!!

Die „Deine_Feldbezeichnung_in_Tabelle“ musst du gem. deinen verwendeten Feldbezeichnungen in der Tabelle noch abändern.
Das Gleich gilt für die Feldbezeichnungen im Formular, falls sie nicht meinen Annahmen entsprechen.

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Hi Netwolf

Aber wie kann ich in der Abfrage etwas gruppieren?

über Ansicht -> Funktionen (einschalten), oder leichter
-> über das Summen-Icon [Σ] in der Symbolleiste.
Du bekommst dann eine neue Zeile für die Funktionen.

Soll ich das in jeder einzelne Anfügeabfrage mit der Spalte Anlagen
machen?

nein, bloß nicht, nur bei der Abfrage die hinter dem Kombifeld
„liegt“. Diese siehst du nicht und wird zusammen mit dem
Formular gespeichert.

  • Rechtsklick auf das Kombifeld
  • Eigenschaften
  • Reiter = ALLE
  • Datensatzherkunft […]
  • dort ist die entsprechende Abfrage
  • nur dort Gruppieren
  • es reicht EINE Spalte = Anlagenname (mehr nicht)
  • Abfrage nur SCHLIEßEN und Änderungen übernehmen und NICHT
    speichern

Wenn ich die eine Spalte Anlagen gruppieren möchte, steht noch die Spalte ID mit dabei. Gruppiere ich den Anlagenname, gruppiert es automatisch die ID mit. Wenn ich bei ID die Gruppierung rausnehme kommt die Fehlermeldung beim ausführen in der Formularansicht:
„Sie wollten eine Abfrage ausführen, die den angegebenen Ausdruck ID nicht als Teil der Aggregatfunktion einschließt.“ ??
Wenn ich die ID mit gruppiere (was ja irgendwie sinnlos ist), kann ich im Kombifeld zwar die Anlagennamen auswählen, aber sie sind nicht gruppiert. Was soll ich bei ID auswählen? Wenn ich Varianz mache, funktioniert die Gruppierung der Anlagen, aber die Suche funkioniert nicht.

Der Code zu meinem Kombifeld sieht so aus:

Option Compare Database
Option Explicit

Private Sub Kombinationsfeld46_AfterUpdate()
’ Den mit dem Steuerelement übereinstimmenden Datensatz suchen.
Dim rs As Object

Set rs = Me.Recordset.Clone
rs.FindFirst "[ID] = " & Str(Me![Kombinationsfeld46])
Me.Bookmark = rs.Bookmark
End Sub

Private Sub Kombinationsfeld46_LostFocus()
Me.Filter = Me.Kombinationsfeld46
Me.FilterOn = IIf(Len(Me.Kombinationsfeld46) > 0, True, False)
Me.Requery
End Sub

Was ich auch nicht verstehe, du meintest ich soll nicht speichern, aber wenn ich dies tue, ist doch die Gruppierung aus der Abfrage wieder raus.

Danke

Niesel

Und nochmal Hallöchen Netwolf,

ich hab die ganze Sache mal mit dem langen Code probiert, also mit erweitertem Filter.
Der Code sieht nun so aus:

Private Sub Zeige_Suche()
Dim F1, F2, F3, xFilter
xFilter = „“
F1 = „[Anlage]=’“ & Me.Suche_Anlage & „’“
F2 = „[Datum]=’#“ & Me.Suche_Datum & „#’“
F3 = „[Zeit]=’#“ & Me.Suche_Zeit & „#’“

xFilter = xFilter & IIf(Len(Me.Suche_Anlage) > 0, F1, „“)
xFilter = IIf(Len(xFilter) > 0, xFilter & „and“, „“) & IIf(Not IsNull(Me.Suche_Datum), F2, „“)
xFilter = IIf(Len(xFilter) > 0, xFilter & „and“, „“) & IIf(Not IsNull(Me.Suche_Zeit), F3, „“)

Me.Filter = xFilter
Me.FilterOn = IIf(Len(xFilter) > 0, True, False)
Me.Requery

End Sub

Private Sub Suche_Anlage_LostFocus()
Zeige_Suche
End Sub

Private Sub Suche_Zeit_LostFocus()
Zeige_Suche
End Sub

Private Sub Suche_Datum_LostFocus()
Zeige_Suche
End Sub

Nur leider funktioniert das ganze nicht :frowning:
Wenn ich die Suche testen möchte kommt der Fehler:

Laufzeitfehler: ‚2448‘:
Sie können diesem Objekt keinen Namen zuweisen.
Dachte erst ich hab irgendwo nen Feldnamen falsch, aber ich find keinen Fehler :-/.

Als Fehler markiert ist dann die Zeile:
Me.Filter = xFilter

Im Direktfenster steht:
FalschFalsch and[Datum]=’#20.09.08#‚FalschFalsch and[Datum]=‘#20.09.08#’ and
FalschFalsch and[Datum]=’#20.09.08#‚FalschFalsch and[Datum]=‘#20.09.08#’ and
FalschFalsch and[Datum]=’#20.09.08#‚FalschFalsch and[Datum]=‘#20.09.08#’ and
FalschFalsch andFalschFalsch and and
FalschFalsch andFalschFalsch and and
FalschFalsch andFalschFalsch and and
FalschFalsch andFalschFalsch and and
FalschFalsch andFalschFalsch and and
FalschFalsch andFalschFalsch and andFalschFalsch andFalschFalsch and and
FalschFalsch andFalschFalsch and and
WahrWahr andWahrWahr and and
FalschFalsch andFalschFalsch and and

Hast du ne Idee? :-/

Vielen Dank

Niesel

Hi Niesel,

  • es reicht EINE Spalte = Anlagenname (mehr nicht)

Wenn ich die eine Spalte Anlagen gruppieren möchte, steht noch
die Spalte ID mit dabei.

was hatte ich geschrieben? Nur EINE Spalte! lösche den Rest weg!
Ändere die Einstellungen der Abfrage auch auf: Alle Felder ausgeben= NEIN
(WO?=Rechtsklick im oberen, freien Bereich)

Der Code zu meinem Kombifeld sieht so aus:

den solltest du löschen, da er mit deiner speziellen Suche NICHTS zu tun hat!

Was ich auch nicht verstehe, du meintest ich soll nicht
speichern, aber wenn ich dies tue, ist doch die Gruppierung
aus der Abfrage wieder raus.

Ich meinte: klicke NICHT auf die Taste [SPEICHEN], oder auf Datei->Speichern, da sonst die Abfrage als Abfrage im Abfrageordner gespeichert wird. Sondern auf SCHLIEßEN.
Solltest du dann gefragt werden, ob die Änderungen gespeichert werden sollen, so antworte mit JA, damit deine Änderungen der Abfrage direkt im Formular gespeichert werden.

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Und nochmal Hallo Niesel,

ich hab die ganze Sache mal mit dem langen Code probiert, also
mit erweitertem Filter. Der Code sieht nun so aus:

ich schrieb: JEDES Zeichen ist wichtig!! was ich nicht schrieb: auch ein Leerzeichen!!

Private Sub Zeige_Suche()
Dim F1, F2, F3, xFilter
xFilter = „“
F1 = „[Anlage]=’“ & Me.Suche_Anlage & „’“
F2 = „[Datum]=’#“ & Me.Suche_Datum & „#’“
F3 = „[Zeit]=’#“ & Me.Suche_Zeit & „#’“

Wichtig ist dabei: in deiner Tabelle gibt es die Felder Anlage,Datum,Zeit! Wobei Datum und das Wort Zeit reservierte Begriffe in Access sind und von dir umbenannt werden sollten!

xFilter = IIf(Len(xFilter) > 0, xFilter & „and“ , „“)

vor und hinter dem AND sollte immer ein Leerzeichen sein.

Nur leider funktioniert das ganze nicht :frowning:

logisch

Wenn ich die Suche testen möchte kommt der Fehler:
Laufzeitfehler: ‚2448‘:
Sie können diesem Objekt keinen Namen zuweisen.

zusätzlich zu den falschen ANDs, stimmen vermutlich deine Feldbezeichnungen in der Tabelle und/oder Formular nicht!?
Könntest du bitte mal alle notwendigen Daten hier posten?

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Hallo Netwolf,

Tabelle auf die das Formular basiert: (Datum umgeändert in Tag, Zeit in Uhrzeit (geht das?))
Feldnamen:
Anlage, Tag, Uhrzeit, Modultemp, Leistung …
Die Tabelle wird mit mehreren Anfügeabfragen gefüllt.

In Formular:
Kombifeld Name: Suche_Anlage

  1. Textfeld zum Suchen Name: Suche_Tag
  2. Textfeld zum Suchen Name: Suche_Uhrzeit

Diese 3 Felder sind im Formularkopf. Im Detailbereich sind dann die Textfelder für die Ergebnisse der Suchfelder aus der Tabelle (Anlage, Tag, Uhrzeit, Modultemp, …).

Danke

Niesel

Hallo Niesel,

Tabelle auf die das Formular basiert: (Datum umgeändert in
Tag, Zeit in Uhrzeit (geht das?))

nö, TAG ist ein reservierter Begriff

Feldnamen & Feldtypen:

ID_Messung = Autowert
Anlage = Text 255 Zeichen
MessTag = Datum
Uhrzeit = Datum, Format=Zeit 24Std.
Modultemp = Zahl, Standardzahl, 2 Dezimalstellen
Leistung = Zahl, Standardzahl, 2 Dezimalstellen

Die Tabelle wird mit mehreren Anfügeabfragen gefüllt.

klar

In Formular:
Kombifeld Name: Suche_Anlage

  1. Textfeld zum Suchen Name: Suche_Tag

muß ein Datumsfeld sein

  1. Textfeld zum Suchen Name: Suche_Uhrzeit

muß ein Datumsfeld mit Zeitformat sein

Diese 3 Felder sind im Formularkopf. Im Detailbereich sind
dann die Textfelder für die Ergebnisse der Suchfelder aus der
Tabelle (Anlage, Tag, Uhrzeit, Modultemp, …).

wirklich Textfelder? wie oben sollten die Feldtypen den Inhalten angepasst werden!

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Hallo Netwolf,

Feldnamen & Feldtypen:

ID_Messung = Autowert
Anlage = Text 255 Zeichen
MessTag = Datum
Uhrzeit = Datum, Format=Zeit 24Std.
Modultemp = Zahl, Standardzahl, 2 Dezimalstellen
Leistung = Zahl, Standardzahl, 2 Dezimalstellen

ja hab ich, Tag in MessTag geändert (im Formular auf Suche_MessTag)

  1. Textfeld zum Suchen Name: Suche_Tag

muß ein Datumsfeld sein

ist es

  1. Textfeld zum Suchen Name: Suche_Uhrzeit

jo

wirklich Textfelder? wie oben sollten die Feldtypen den
Inhalten angepasst werden!

Felddatentypen sind angepasst, Datum kurz , Zeit 24std, Standardzahl

Wenn ich nun die Suche starten möchte, kann ich im Kombifeld eine Anlage aussuchen, das funktioniert. Sobaldich mit der Maus in das Suchfeld Datum klicke oder nach Auswahl des Kombifelds Enter drücke kommt der Laufzeitfehler 2448. Sie könne diesem Objekt keinen Wert zuweisen.

Hier nochmal mein Code:

Private Sub Zeige_Suche()
Dim F1, F2, F3, xFilter

xFilter = „“

F1 = „[Anlage]=’“ & Me.Suche_Anlage & „’“
F2 = „[MessTag]=’#“ & Me.Suche_MessTag & „#’“
F3 = „[Uhrzeit]=’#“ & Me.Suche_Uhrzeit & „#’“

xFilter = xFilter & IIf(Len(Me.Suche_Anlage) > 0, F1, „“)
xFilter = IIf(Len(xFilter) > 0, xFilter & " And ", „“) & IIf(Not IsNull(Me.Suche_MessTag), F2, „“)
xFilter = IIf(Len(xFilter) > 0, xFilter & " And ", „“) & IIf(Not IsNull(Me.Suche_Uhrzeit), F3, „“)

Me.Filter = xFilter
Me.FilterOn = IIf(Len(xFilter) > 0, True, False)
Me.Requery
End Sub

Private Sub Suche_Anlage_LostFocus()
Zeige_Suche
End Sub

Private Sub Suche_MessTag_LostFocus()
Zeige_Suche
End Sub

Private Sub Suche_Uhrzeit_LostFocus()
Zeige_Suche
End Sub

Habe jetzt vor und nach dem & ein Leerzeichen, auch vor und nach dem And.

Danke

Niesel

Hallo Niesel,

F1 = „[Anlage]=’“ & Me.Suche_Anlage & „’“

könnte es sein, dass hier die ID statt der Bezeichnung übergeben wird!?
Schick die MDB mal rüber, ich schau sie mir mal an.

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)