Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Bernie110 am September 16, 2014, 22:30:38

Titel: UFO FILTER PROBLEM
Beitrag von: Bernie110 am September 16, 2014, 22:30:38
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
Titel: Re: UFO FILTER PROBLEM
Beitrag von: MaggieMay am September 16, 2014, 23:24:26
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?

Titel: Re: UFO FILTER PROBLEM
Beitrag von: Bernie110 am September 16, 2014, 23:30:36
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
Titel: Re: UFO FILTER PROBLEM
Beitrag von: ebs17 am September 16, 2014, 23:41:28
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.
Titel: Re: UFO FILTER PROBLEM
Beitrag von: Bernie110 am September 17, 2014, 00:03:13
Hallo Ebs,

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