Suchen / Filter ??
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21189
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Suchen / Filter ??
sach bloß
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Bertram Hansen
- Foren-Moderator
- Beiträge: 1015
- Registriert: Di, 27. Sep 2005 8:55
- Wohnort: 51379 Leverkusen
- Hat sich bedankt: 28 Mal
- Danksagung erhalten: 20 Mal
- Kontaktdaten:
Re: Suchen / Filter ??
Leider war KEIN Rolf da.Jan hat geschrieben:Was ist denn jetzt gestern auf dem XUG-Treffen als Lösung gefunden worden?
Jan
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.
Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
- Jan
- Marvin
- Beiträge: 14653
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Suchen / Filter ??
grmpf!Bertram Hansen hat geschrieben:Leider war KEIN Rolf da.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2935
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Suchen / Filter ??
Vielleicht dürft ihr die Lösungen nicht so schnell hintereinander posten. Lasst doch mal einen Tag dazwischen, damit sie auch gelesen werden können.
Viele Grüße
Wolfgang
Wolfgang
- Jan
- Marvin
- Beiträge: 14653
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Suchen / Filter ??
Tja. Nun war Rolf schon mehrfach wieder hier im Forum. Ohne hier irgendeine Nachricht zu hinterlassen. Mir fallen spontan mehrere Gründe für ein:
Jan
- Der Punkt ist inzwischen vollkommen egal, das muß man uns aber nicht sagen
- Er ist genervt von unseren Aufforderungen doch bitte endlich mal zu lesen, was hier geschrieben wird
- Er hat die Lösung anhand unserer Antworten gefunden und schämt sich dafür, das er nicht schon vorher mal gelesen hat
- Er hat die Lösung wie auch immer selber schon gefunden, was man uns aber nicht sagen muß
- Ein anderes Projekt/Problem ist größer als dieses hier, dieses hier wird erstmal nach hinten geschoben
- Er versteht überhaupt nicht was wir von ihm wollen und redet daher nicht mehr mit uns darüber
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1930
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Suchen / Filter ??
Hallo zusammen,
@Tom ich habe deinen code eingebaut und auf meine Db abgestimmt. Ich habe in diesem Test-system 3 Kundensätze angelegt. Er findet aber immer alle 3 Datensätze, auch wenn ich im Suchfeld
eine Gruppe eingebe die gar nicht existiert. auch beim umsetzen cVergleich:=lower(alltrim(cGrp)) - spielt keine Rolle
habe ich irgendwo noch etwas übersehen ???
@Tom ich habe deinen code eingebaut und auf meine Db abgestimmt. Ich habe in diesem Test-system 3 Kundensätze angelegt. Er findet aber immer alle 3 Datensätze, auch wenn ich im Suchfeld
eine Gruppe eingebe die gar nicht existiert. auch beim umsetzen cVergleich:=lower(alltrim(cGrp)) - spielt keine Rolle
habe ich irgendwo noch etwas übersehen ???
Code: Alles auswählen
Function KdGruppe(cGrp)
LOCAL nZaehler := 0, cVergleich :=cGrp
LOCAL aVergleich := {}
SET EXCLUSIVE ON
IF "," $ cVergleich
DO WHILE "," $ cVergleich
aAdd(aVergleich,GetTextFromCommaText(@cVergleich))
ENDDO
ELSE
ENDIF
aAdd(aVergleich,AllTrim(Lower(cVergleich)))
msgbox(var2lchar( aVergleich))
TmpAdr->(DbSetFilter({||RolfSuche(TmpAdr->grpname,aVergleich)}))
TmpAdr->(DbGoTop())
DO WHILE !TmpAdr->(Eof())
nZaehler ++
TmpAdr->(DbSkip(+1))
ENDDO
MsgBox(AllTrim(Str(nZaehler))+' Datensätze gefunden')
CLOSE DATA
RETURN NIL
FUNCTION RolfSuche(cFeldInhalt,aVergleich)
LOCAL aSuchFelder := {}, i, n
IF "," $ cFeldInhalt
DO WHILE "," $ cFeldInhalt
aAdd(aSuchFelder,GetTextFromCommaText(@cFeldInhalt))
ENDDO
ENDIF
aAdd(aSuchFelder,AllTrim(Lower(cFeldInhalt)))
n:=Len(aSuchFelder)
FOR i := 1 TO n
IF Lower(Trim(aSuchFelder[i])) $ aVergleich
RETURN .T.
ENDIF
NEXT
RETURN .F.
FUNCTION GetTextFromCommaText(c)
LOCAL cRetText := Lower(AllTrim(Left(c,At(",",c)-1)))
c := SubStr(c,At(",",c)+1)
RETURN cRetText
- Jan
- Marvin
- Beiträge: 14653
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Suchen / Filter ??
Sorry, ich kann nicht anders, und breche viel zu schnell schon wieder meine selbst auferlegte Schweigepflicht zu diesem Thema: Einen Filter .T. oder .F. setzen - welchen Sinn macht das bitte genau?
Jan
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Suchen / Filter ??
Jan - wovon redest Du? Der Filter setzt auf die Funktion "RolfSuche", die .T. oder .F. antwortet, je nachdem, ob im aktuellen Datensatz Treffer sind oder nicht. Das ist doch richtig so, oder?
Herzlich,
Tom
Tom
- Manfred
- Foren-Administrator
- Beiträge: 21189
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Suchen / Filter ??
Das ist prima, wenn einer eine Frage frägen tut und alle anderen bekloppt dabei werden.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21189
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Suchen / Filter ??
deshalb ja "einer". Ich bin mir der Sache schon bewußt.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Jan
- Marvin
- Beiträge: 14653
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Suchen / Filter ??
Tom,
Du hast relativ sicher Recht. Ich hatte nur in meinem Brass gegenüber Rolfs permanenten Verweigerungen nur gesehen, das er da unten eine Schleife durchläuft, die nur .T. oder .F. zurückgibt. Aber der Sinn soll wohl sein festzustellen, ob der aktuelle Satz der Filterbedingung entspricht oder nicht.
Alos wenn das wirklich so ist, dann ist das erstens doppeltgemoppelt, was er da macht, denn genau diese Sachen arbeitet er doch vorher schon aus und übergibt die sogar in aVergleich. Außerdem dürfte das eine ganz enorme Bremse sein. Ein Filter ist ja schon langsam, aber auf diese Weise geht das wohl vollkommen in die Knie. Und drittens ist der Code Humbug, denn er zerbröselt den String undspeichert die bestandteile in aVergleich, dann zerbröselt er den String in der Filterbedingung noch mal und vergleicht jedes Element mit aVergleich. Das muß ja immer wahr sein. Und viertens hat Rolf schon wieder/immer noch nichts gelesen von dem, was wir heir ausgearbeitet haben, macht es noch komplizierter und noch falscher.
Leute, ich fang gleich an zu kotzen!
Jan
Du hast relativ sicher Recht. Ich hatte nur in meinem Brass gegenüber Rolfs permanenten Verweigerungen nur gesehen, das er da unten eine Schleife durchläuft, die nur .T. oder .F. zurückgibt. Aber der Sinn soll wohl sein festzustellen, ob der aktuelle Satz der Filterbedingung entspricht oder nicht.
Alos wenn das wirklich so ist, dann ist das erstens doppeltgemoppelt, was er da macht, denn genau diese Sachen arbeitet er doch vorher schon aus und übergibt die sogar in aVergleich. Außerdem dürfte das eine ganz enorme Bremse sein. Ein Filter ist ja schon langsam, aber auf diese Weise geht das wohl vollkommen in die Knie. Und drittens ist der Code Humbug, denn er zerbröselt den String undspeichert die bestandteile in aVergleich, dann zerbröselt er den String in der Filterbedingung noch mal und vergleicht jedes Element mit aVergleich. Das muß ja immer wahr sein. Und viertens hat Rolf schon wieder/immer noch nichts gelesen von dem, was wir heir ausgearbeitet haben, macht es noch komplizierter und noch falscher.
Leute, ich fang gleich an zu kotzen!
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Suchen / Filter ??
Äh, Jan.
Dieser Code ist von mir.
Und er ist zwar hier und da ein bisschen redundant, aber richtig. Man muss ihn schon verstehen. Beide Situationen - das Kundenfeld und das Suchfeld - können unsortierte Aufzählungen enthalten, und dem trägt dieses Konstrukt Rechnung.
Dieser Code ist von mir.
Und er ist zwar hier und da ein bisschen redundant, aber richtig. Man muss ihn schon verstehen. Beide Situationen - das Kundenfeld und das Suchfeld - können unsortierte Aufzählungen enthalten, und dem trägt dieses Konstrukt Rechnung.
Herzlich,
Tom
Tom
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1930
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Suchen / Filter ??
Hallo Jan,
weshalb ich manchmal keine Nachricht hinterlassen habe, ist ganz einfach. da ich an anderen Dingen beschäftigt war. Der jetztige code ist von Tom, den er hier gepostet hat. Ich verstehe nicht warum er immer alle Sätze findet.
weshalb ich manchmal keine Nachricht hinterlassen habe, ist ganz einfach. da ich an anderen Dingen beschäftigt war. Der jetztige code ist von Tom, den er hier gepostet hat. Ich verstehe nicht warum er immer alle Sätze findet.
- Manfred
- Foren-Administrator
- Beiträge: 21189
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Suchen / Filter ??
Da wir hier gerade vom Filter sprechen. Jan hatte doch vorhin auch eine komische Entdeckung gemacht, die wir am Telefon verfolgt hatte. Nur das wir das alles Schritt für Schritt am Debugger nachvollzogen, bzw auseinandergewurstelt hatten. Ohne diese Vorgehensweise wären wir da sehr wahrscheinlich nie drauf gekommen.
Rolf versuche es doch einfach mal so, indem Du den Filter über den Debugger Schritt für Schritt setzt und dann das Ergebnis beobachtest. Vielleicht liegt es ja an was ganz anderem.
Rolf versuche es doch einfach mal so, indem Du den Filter über den Debugger Schritt für Schritt setzt und dann das Ergebnis beobachtest. Vielleicht liegt es ja an was ganz anderem.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- brandelh
- Foren-Moderator
- Beiträge: 15696
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Suchen / Filter ??
Also ich habe mal seinen code genommen, in eine einfache MAIN gehängt, TOMS DBF Aufbau dazu,
SET EXCLUSIVE und CLOSE in der Funktion gelöscht, da diese ja eben NICHT die DBF öffnet und erhalte völlig richtige Werte
Der Code ist umständlich und zumindest die zweite Auflösung unnötig, da ein "hans" $ "horst, hans, emil" auch .t. gibt und 3 Durchläufe spart, aber es funktioniert.
Woran kann es liegen ?
Wenn ein Index beteiligt ist, dann SET OPTIMIZE OFF probieren, je nach Situation wird einfach zuviel OPTIMIERT !
Wenn dieser CODE in ANSI eingegeben wird (auch die Umlaute) aber ohne SET CHARSET TO OEM läuft, dann werden die Umlaute intern zu anderen Zeichen und LOWER() / UPPER() können sie nicht mehr umwandeln ! Wenn der Suchbegriff später in der EXE eingegeben wird spielt das natürlich keine Rolle mehr.
Hier nun mein Code, wobei man besser die ZIP entpackt (wegen Zeichensatz und DBF)
und hier das Ergebnis:
SET EXCLUSIVE und CLOSE in der Funktion gelöscht, da diese ja eben NICHT die DBF öffnet und erhalte völlig richtige Werte
Der Code ist umständlich und zumindest die zweite Auflösung unnötig, da ein "hans" $ "horst, hans, emil" auch .t. gibt und 3 Durchläufe spart, aber es funktioniert.
Woran kann es liegen ?
Wenn ein Index beteiligt ist, dann SET OPTIMIZE OFF probieren, je nach Situation wird einfach zuviel OPTIMIERT !
Wenn dieser CODE in ANSI eingegeben wird (auch die Umlaute) aber ohne SET CHARSET TO OEM läuft, dann werden die Umlaute intern zu anderen Zeichen und LOWER() / UPPER() können sie nicht mehr umwandeln ! Wenn der Suchbegriff später in der EXE eingegeben wird spielt das natürlich keine Rolle mehr.
Hier nun mein Code, wobei man besser die ZIP entpackt (wegen Zeichensatz und DBF)
Code: Alles auswählen
// WICHTIG, dies ist OEM code. Index und Suchbegriff bekommt Probleme, wenn Konstanten mit Umlauten im ANSI Quellcode geschrieben werden und lower() in OEM EXE !!!
PROCEDURE Main()
LOCAL aDbStruct := {{'GRPNAME','C',50,0}}, nZaehler := 0
LOCAL aVergleich := {}
SET EXCLUSIVE ON
DbCreate('test.dbf',aDbStruct)
USE test NEW ALIAS TmpAdr
APPEND BLANK
REPLACE grpname with 'Meier, Meinard'
APPEND BLANK
REPLACE grpname with 'Otto, Müller' // bei Test sollte man Umlaute meiden ;-)
APPEND BLANK
REPLACE grpname with 'Meinard, Otto, Schulz'
?
? "Hier sollte 0 stehen:"
kdGruppe( "NIXDA" )
?
? "Hier sollte 2 stehen:"
kdGruppe( "OTTO" )
?
? "Hier sollte 2 stehen:"
kdGruppe( "Meier, müller" )
?
? "Hier sollte 3 stehen:"
kdGruppe( "Meier, otto" )
close
? "Ende, bitte Taste drücken"
inkey(20)
return
Function KdGruppe(cGrp)
LOCAL nZaehler := 0, cVergleich :=cGrp
LOCAL aVergleich := {}
// SET EXCLUSIVE ON // WARUM HIER ??? das muss schon vor dem USE stehen ! HB
IF "," $ cVergleich
DO WHILE "," $ cVergleich
aAdd(aVergleich,GetTextFromCommaText(@cVergleich))
ENDDO
ELSE
ENDIF
aAdd(aVergleich,AllTrim(Lower(cVergleich)))
// msgbox(var2lchar( aVergleich))
? "Vergleichsarray: ",aVergleich
TmpAdr->(DbSetFilter({||RolfSuche(TmpAdr->grpname,aVergleich)}))
TmpAdr->(DbGoTop())
DO WHILE !TmpAdr->(Eof())
nZaehler ++
? str(nZaehler,3)+".:",TmpAdr->grpname
TmpAdr->(DbSkip(+1))
ENDDO
? "Datensätze gefunden: ",nZaehler
// MsgBox(AllTrim(Str(nZaehler))+' Datensätze gefunden')
// CLOSE DATA wer nicht öffnet, darf auch nicht schließen !!! HB
RETURN nZaehler // warum nicht die Anzahl zurückgeben, sieht hier schöner aus ;-)
FUNCTION RolfSuche(cFeldInhalt,aVergleich)
LOCAL aSuchFelder := {}, i, n
IF "," $ cFeldInhalt
DO WHILE "," $ cFeldInhalt
aAdd(aSuchFelder,GetTextFromCommaText(@cFeldInhalt))
ENDDO
ENDIF
aAdd(aSuchFelder,AllTrim(Lower(cFeldInhalt)))
n:=Len(aSuchFelder)
FOR i := 1 TO n
IF Lower(Trim(aSuchFelder[i])) $ aVergleich
RETURN .T.
ENDIF
NEXT
RETURN .F.
FUNCTION GetTextFromCommaText(c)
LOCAL cRetText := Lower(AllTrim(Left(c,At(",",c)-1)))
c := SubStr(c,At(",",c)+1)
RETURN cRetText
Code: Alles auswählen
Hier sollte 0 stehen:
Vergleichsarray: {nixda}
Datensätze gefunden: 0
Hier sollte 2 stehen:
Vergleichsarray: {otto}
1.: Otto, Müller
2.: Meinard, Otto, Schulz
Datensätze gefunden: 2
Hier sollte 2 stehen:
Vergleichsarray: {meier, müller}
1.: Meier, Meinard
2.: Otto, Müller
Datensätze gefunden: 2
Hier sollte 3 stehen:
Vergleichsarray: {meier, otto}
1.: Meier, Meinard
2.: Otto, Müller
3.: Meinard, Otto, Schulz
Datensätze gefunden: 3
Ende, bitte Taste drücken
Gruß
Hubert
Hubert
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1930
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
- Bertram Hansen
- Foren-Moderator
- Beiträge: 1015
- Registriert: Di, 27. Sep 2005 8:55
- Wohnort: 51379 Leverkusen
- Hat sich bedankt: 28 Mal
- Danksagung erhalten: 20 Mal
- Kontaktdaten:
Re: Suchen / Filter ??
OK! Der liebe Rolf hat nicht erwähnt, dass wir uns gestern in Leverkusen zu fünft in einem längerem Drama mit glücklichem Ausgang diesem Thema gewidmet haben.
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.
Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
- Jan
- Marvin
- Beiträge: 14653
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Suchen / Filter ??
Wobei mich (und vermutlich auch die anderen an der Diskussion Beteiligten) interessieren würde, was denn nun die Lösung oder das Problem war.
Jan
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Suchen / Filter ??
Äh, Bertram.
Länger als das Drama hier kann's wohl kaum gewesen sein.
Länger als das Drama hier kann's wohl kaum gewesen sein.
Herzlich,
Tom
Tom
- Bertram Hansen
- Foren-Moderator
- Beiträge: 1015
- Registriert: Di, 27. Sep 2005 8:55
- Wohnort: 51379 Leverkusen
- Hat sich bedankt: 28 Mal
- Danksagung erhalten: 20 Mal
- Kontaktdaten:
Re: Suchen / Filter ??
@ Jan,
vielleicht stellt ja Rolf die Veränderungen ins Forum. Ich habe leider keinen Code von Ihm.
@ Tom,
das stimmt. Wir haben ca. eine halbe Stunde dafür benötigt und hatten dabei sogar richtig Spaß. Hier im Forum ging das ja über mehrere Tage.
vielleicht stellt ja Rolf die Veränderungen ins Forum. Ich habe leider keinen Code von Ihm.
@ Tom,
das stimmt. Wir haben ca. eine halbe Stunde dafür benötigt und hatten dabei sogar richtig Spaß. Hier im Forum ging das ja über mehrere Tage.
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.
Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1930
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Suchen / Filter ??
so ist der Code der funkt. den Refresh für den xbpbrowse muß ich wohl noch einbauen.
Code: Alles auswählen
Function KdGruppe(cGrp)
LOCAL nZaehler := 0, cVergleich := cGrp
LOCAL aVergleich := {}
SET EXCLUSIVE ON
IF "," $ cVergleich
DO WHILE "," $ cVergleich
aAdd(aVergleich,GetTextFromCommaText(@cVergleich))
ENDDO
ELSE
ENDIF
aAdd(aVergleich,AllTrim(Lower(cVergleich)))
msgbox(var2lchar( aVergleich)+TmpAdr->grpname+var2lchar(RolfSuche(TmpAdr->grpname,aVergleich)))
TmpAdr->(DbSetFilter({||RolfSuche(TmpAdr->grpname,aVergleich)}))
TmpAdr->(DbGoTop())
DO WHILE !TmpAdr->(Eof())
nZaehler ++
TmpAdr->(DbSkip(+1))
ENDDO
MsgBox(AllTrim(Str(nZaehler))+' Datensätze gefunden')
CLOSE DATA
RETURN NIL
FUNCTION RolfSuche(cFeldInhalt,aVergleich)
LOCAL aSuchFelder := {}, i, n
/*
IF "," $ cFeldInhalt
DO WHILE "," $ cFeldInhalt
aAdd(aSuchFelder,GetTextFromCommaText(@cFeldInhalt))
ENDDO
ENDIF
*/
aAdd(aSuchFelder,AllTrim(Lower(cFeldInhalt)))
msgbox(var2lchar( aSuchfelder )+"//"+trim(cFeldinhalt) )
//n:=Len(aSuchFelder)
n:=Len(aVergleich)
FOR i := 1 TO n
//IF Lower(Trim(aSuchFelder[i])) $ aVergleich
IF aVergleich[i] $ Lower(Trim(cFeldInhalt))
RETURN .T.
ENDIF
NEXT
RETURN .F.
FUNCTION GetTextFromCommaText(c)
LOCAL cRetText := Lower(AllTrim(Left(c,At(",",c)-1)))
c := SubStr(c,At(",",c)+1)
RETURN cRetText
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1930
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Suchen / Filter ??
Hallo zusammen,
nachdem nund das gelöst ist. habe ich jetzt ein problem, das refrehsall() nicht funtk. anscheinend ist die Datenbank zu.
hier der Aufruf zu der Function KdGruppe
und in der Func KdGruppe gibt es kein close. Die Func kdgruppe ist etwas weiter oben gepostet
nachdem nund das gelöst ist. habe ich jetzt ein problem, das refrehsall() nicht funtk. anscheinend ist die Datenbank zu.
hier der Aufruf zu der Function KdGruppe
Code: Alles auswählen
oXbp := XbpPushButton():new( drawingArea, , aPos, {50,20}, { { XBP_PP_BGCLR, XBPSYSCLR_BUTTONMIDDLE }, { XBP_PP_FGCLR, -58 } } )
oXbp:caption := "GO"
oXbp:tabStop := .T.
oXbp:create()
oXbp:activate := {|| KDGruppe(cGrp),oAnsBrowse:RefreshAll() }
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1930
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Suchen / Filter ??
Hier nochmal die Function KdGruppe()
kein Close irgendwo
Code: Alles auswählen
Function KdGruppe(cGrp)
LOCAL nZaehler := 0, cVergleich := cGrp
LOCAL aVergleich := {}
SET EXCLUSIVE ON
IF "," $ cVergleich
DO WHILE "," $ cVergleich
aAdd(aVergleich,GetTextFromCommaText(@cVergleich))
ENDDO
ELSE
ENDIF
aAdd(aVergleich,AllTrim(Lower(cVergleich)))
msgbox(var2lchar( aVergleich)+TmpAdr->grpname+var2lchar(RolfSuche(TmpAdr->grpname,aVergleich)))
TmpAdr->(DbSetFilter({||RolfSuche(TmpAdr->grpname,aVergleich)}))
TmpAdr->(DbGoTop())
DO WHILE !TmpAdr->(Eof())
nZaehler ++
TmpAdr->(DbSkip(+1))
ENDDO
TmpAdr->(DbGoTop())
MsgBox(AllTrim(Str(nZaehler))+' Datensätze gefunden')
RETURN NIL
FUNCTION RolfSuche(cFeldInhalt,aVergleich)
LOCAL aSuchFelder := {}, i, n
/*
IF "," $ cFeldInhalt
DO WHILE "," $ cFeldInhalt
aAdd(aSuchFelder,GetTextFromCommaText(@cFeldInhalt))
ENDDO
ENDIF
*/
aAdd(aSuchFelder,AllTrim(Lower(cFeldInhalt)))
msgbox(var2lchar( aSuchfelder )+"//"+trim(cFeldinhalt) )
//n:=Len(aSuchFelder)
n:=Len(aVergleich)
FOR i := 1 TO n
//IF Lower(Trim(aSuchFelder[i])) $ aVergleich
IF aVergleich[i] $ Lower(Trim(cFeldInhalt))
RETURN .T.
ENDIF
NEXT
RETURN .F.
FUNCTION GetTextFromCommaText(c)
LOCAL cRetText := Lower(AllTrim(Left(c,At(",",c)-1)))
c := SubStr(c,At(",",c)+1)
RETURN cRetText