Re: Thema für das Live Meeting am 07.12.2011
Verfasst:
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
Verfasst:
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.
LG
Josef
Re: Thema für das Live Meeting am 07.12.2011
Verfasst:
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
Verfasst:
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
Verfasst:
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
Verfasst:
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
Verfasst:
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
Verfasst:
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.phpAndreas
Re: Thema für das Live Meeting am 07.12.2011
Verfasst:
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
Verfasst:
Di 29. Nov 2011, 20:53
von Andreas Vogt
Hallo Josef,
dafür war es ja auch nicht gedacht.
Andreas