Seite 2 von 3

Re: Thema für das Live Meeting am 07.12.2011

BeitragVerfasst: Do 24. Nov 2011, 13:30
von FireWalkerHH
@Josef: Der FormFilter kommt mir seltsam bekannt vor ... Fast genauso sieht meiner auch aus ... auch mit Between-Teil ... Ich finde er ist sogar relativ gut aufgeteilt ...

Re: Thema für das Live Meeting am 07.12.2011

BeitragVerfasst: Do 24. Nov 2011, 13:33
von Josef Pötzl
Hallo Thomas!

Code: Alles auswählen
Der FormFilter kommt mir seltsam bekannt vor ...

Du kennst ihn aber nicht. ;)
Die Klasse zum Filtern steckt mit einigen anderen in einer dll von mir und sollte schon lange überarbeitet werden - nur hab ich keine Lust dazu, da die dll ihre Aufgabe erfüllt. :D

LG
Josef

Re: Thema für das Live Meeting am 07.12.2011

BeitragVerfasst: Do 24. Nov 2011, 14:09
von KGunder
Josef Pötzl hat geschrieben:Der Code zur Optimierung wären dann Prozeduren wie:
Code: Alles auswählen
dim rst as dao.recordset
dim strSQL as String
strSQL = "Select ... & " _
        " from ..." & _
        " inner join ... ON ... " & _
        " where ... AND " & FilterStringFromDateValue("FeldName", Datumsvariable) & " ..."
set rst = currentdb.openrecordset(strSQL, ....)
...



Hallo Josef,

ich sehe schon du willst mich locken meine Lösung vorzustellen. Ich hatte ja beim letzten Mal schon kurz gezeigt,
daß mein Code im Augenblick so aussieht:

Code: Alles auswählen

  With SQL.SelectSQL(tblAufträge)
    .Joins "", tblKundenstamm, "KundenNr"
    .AddColumns "AuftragsNr", "AuftragsDatum, GesamtBetrag" , "GesamtGewicht"
    .AddColumnsFromTable "Kundenstamm", "KundenNr, Firmenname, PLZ, Ort"
    .Where "AuftragsDatum",  IsGreater, Now - 14 * Tage
    .Where "Kundenstamm.Firmenname", IsLike, "Pötzl"
    .OrderBy "AuftragsDatum, AuftragsNr"

    Set col = .ToCollection
    Set rsADO = .ToADORecordset
    Set rsDAO = .ToDAORecordset
    set hsh = .ToHashOfString
    Me.cboFeld.RowSource = .ToCBOString
  End With
 


aber das ganze ist noch nicht fertig, da fehlt noch ein bisschen Feinschliff..

Klaus

Re: Thema für das Live Meeting am 07.12.2011

BeitragVerfasst: Do 24. Nov 2011, 14:47
von Josef Pötzl
Hallo Klaus!

Mir geht es gar nicht so sehr darum, fertige Lösungen zu zeigen, sondern um das Zeigen von Konzepten.
Fertige bzw. halbfertige Lösungen wären eher etwas für die Code-Bibltiothek. ;)

LG
JOsef

Re: Thema für das Live Meeting am 07.12.2011

BeitragVerfasst: Do 24. Nov 2011, 18:34
von Andreas Vogt
Hallo,
ich hab das mit 4 Filtern so gelöst, indem ich in einer globalen Variable den Zustand speichere.
1000
1001
1010
1011
etc.
Wenn ich z.B. alle 4 Filter gesetzt habe und setze einen davon zurück, dann ermittle ich anhand der globalen Variable wie danach der Filter aufgebaut werden muss.
Ein Between zwischen Datum von und bis habe ich eigentlich nicht, da ich bei alternierender Anwahl entweder Datum bis oder Datum von habe, also entweder obere Grenze offen oder untere Grenze offen.

Wie bereits gesagt, wird dann mit mehreren Filtern sehr schnell unübersichtlich.
Gruß Andreas

Re: Thema für das Live Meeting am 07.12.2011

BeitragVerfasst: Do 24. Nov 2011, 19:12
von KGunder
Filtern sieht bei mir so aus:
Code: Alles auswählen

  With qry.Auftragspositionen.mitKunden
    .AddColumnsFromTable tblKunden, "KundenNr, Suchname, Ort"
    .AddColumnsFromTable tblAufträge, "Datum, GesamtBetrag, GesamtGewicht"
    For Each vCond In hshFilter.Values
      .AddSQLCondition vCond
    Next
    .OrderBy sMyOrder
    Set Me.Recordset = .ToADORecordset(dbOpenClientCursor)
  End With
 

wobei der Filter im Control_Change gesetzt wird:
Code: Alles auswählen

Private Sub ctlGesname_Change()
  Dim str As String
 
  str = UI.Controls.GetControlText(Me.ctlGesname)
  If Len(str) > 0 Then
    Set hshFilter.Item("Firma") = sql.Condition("Suchname", islike, Trim$(str))
  Else
    hshFilter.Remove "Firma"
  End If
End Sub
 

Re: Thema für das Live Meeting am 07.12.2011

BeitragVerfasst: Fr 25. Nov 2011, 14:51
von KGunder
und da mir das noch zu lang war:
Code: Alles auswählen

Private Sub ctlGesName_Change()
  Set hshFilter("Firma") = UIA.Filter.Condition("Suchname", IsLike, Me.ctlGesName)
End Sub
 

Re: Thema für das Live Meeting am 07.12.2011

BeitragVerfasst: Di 29. Nov 2011, 09:51
von Andreas Vogt
Hallo,
zum Thema Filterklasse habe ich einen interessanten Beitrag gefunden mit fertiger Beispielklassen:
http://www.office-loesung.de/ftopic13271_30_0_asc.php

Andreas

Re: Thema für das Live Meeting am 07.12.2011

BeitragVerfasst: Di 29. Nov 2011, 16:33
von Josef Pötzl
Hallo!

Ich glaub, für das Refaktoring dieser Klassen würde wir mehr Zeit benötigen, als wir im LM zu Verfügung haben. ;-)

LG
Josef

Re: Thema für das Live Meeting am 07.12.2011

BeitragVerfasst: Di 29. Nov 2011, 20:53
von Andreas Vogt
Hallo Josef,
dafür war es ja auch nicht gedacht.

Andreas