Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

UFO FILTER PROBLEM

Begonnen von Bernie110, September 16, 2014, 22:30:38

⏪ vorheriges - nächstes ⏩

Bernie110

Hallo,

ich glaub ich hab echt ein Problem. Ich habe schon einmal berichtet, dass Access abstürzt und die Meldung kommt nicht genügend Speicherplatz..
Jetzt ist mir zum ersten Mal aufgefallen, dass diese Meldung kommt wenn ich z.b. so einen Filter im UFO ausführe.

ZitatPublic Sub SUCHEN_LTW_ANSICHT()
Me.Filter = ""
Me.FilterOn = True

Dim Krit3 As String
  Krit3 = ""

  If Not IsNull(Me!LTW) Then Krit3 = Krit3 & " And LTW Like '" & Me!LTW & "*'"
  If Not IsNull(Me!NL) Then Krit3 = Krit3 & " And NL =" & Me!NL

If Krit3 <> "" Then Krit3 = Mid(Krit3, 6)
Me!LTW_PARTNER_UFO.Form.Filter = Krit3
Me!LTW_PARTNER_UFO.Form.FilterOn = True
Me.LTW_PARTNER_UFO.Form.Recalc
End Sub

und im anderen UFO

ZitatPublic Sub SUCHEN_LTW_ANSICHT()
Me.Filter = ""
Me.FilterOn = True

Dim Krit3 As String
  Krit3 = ""

  If Not IsNull(Me!LTW) Then Krit3 = Krit3 & " And LTW Like '" & Me!LTW & "*'"
  If Not IsNull(Me!NL) Then Krit3 = Krit3 & " And NL =" & Me!NL



If Krit3 <> "" Then Krit3 = Mid(Krit3, 6)
Me!LTW_PARTNER_UFO.Form.Filter = Krit3
Me!LTW_PARTNER_UFO.Form.FilterOn = True
Me.LTW_PARTNER_UFO.Form.Recalc
End Sub

ausgeführt werden beide Codes mit :
ZitatPrivate Sub LTW_KOMBI_AfterUpdate()

Call SUCHEN_LTW_ANSICHT
Call SUCHEN_LTW_BEARBEITEN
End Sub

Was mach ich falsch ?

Wie würdet Ihr die Filterung gestallten, wenn Ihr ein HF wollt, in welchem sich ungebundene Felder befinden ( zum Suchen )
..und 2 UFOs
die im Prinzip auf die gleiche Tabelle basieren ?

Vielen Dank für Eure Antworten
Lg Bernie

MaggieMay

Hallo,
ZitatWie würdet Ihr die Filterung gestallten, ...
hast du es schonmal versucht, die Ufos ganz normal über das entsprechende Datenfeld im Ufo mit dem Kombifeld bzw. den Kombifeldern zu verknüpfen?

Vielleicht wäre es auch sinnvoll, die UFs auf einer Abfrage mit folgendem KriteriumSELECT ...
FROM tabelle
WHERE
(tabelle.LTW Like Forms!hauptform!LTW & "*" OR Forms!hauptform!LTW IS NULL) AND
(tabelle.NL = Forms!hauptform!NL OR Forms!hauptform!NL IS NULL)
basieren zu lassen.
Dann ist nach Änderung einer der Werte höchstens ein Requery der Unterformulare erforderlich.

BTW:
Was bezweckst du hiermit:Me.Filter = ""
Me.FilterOn = True
Hat das HF eine Datenquelle?
Wie wird der Filter gesetzt und was macht es erforderlich den Filter zu löschen?

Freundliche Grüße
MaggieMay

Bernie110

Hallo Maggie, danke für deine Antwort.

Das HF basiert auf keine Tabelle.
ZitatMe.Filter = ""
Me.FilterOn = True
Kann man natürlich weg lassen. War nur ein Versuch

Was ist deiner Meinung nach besser.
Ein Select Befehl und die Abfragen ..
oder ist der meinige Code einfach nur Mist ?
Lg Bernie

ebs17

#3
Du hast zweimal den gleichen Code gezeigt ...?

Das Recalc (oder ein Requery) ist überflüssig. Durch das Setzen des Filters wird automatisch die Datenherkunft neu aufgerufen (indem intern der Filter der vorhandenen SQL-Anweisung hinzugefügt wird und das neu abgefragt wird).

Das Ganze sieht also ganz o.k. aus. Ist die Herkunftstabelle recht groß oder über ein instabiles Netzwerk verbunden?

Die Felder LTW und NL sind indiziert? Dann würden bei dem Neuabrufen der Datenherkunft nur die Datensätze lt. Filterung gezogen, während ohne Indexnutzung die gesamte Tabelle geholt wird. Das kann dann im beanspruchten Speicher schon mal erheblich voneinander abweichen.
Mit freundlichem Glück Auf!

Eberhard

Bernie110

Hallo Ebs,

ok das hilft mir schon mal weiter.
Vielen Dank an euch beide
Lg Bernie