XbPQuickBrowse

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

XbPQuickBrowse

Beitrag von Manfred »

Moin,

ich muß mal wieder für ein wenig Traffic hier im Forum sorgen :-)

Ich habe mir das Beispiel Qbrowse2 zwischengenommen und etwas umgebaut. Jetzt kann man Zeichenweise im Index suchen. Das klappt auch alles recht schön. Meine Frage jetzt, kann man dieses Teil auch komplett unter XbPBrowse realisieren, bzw. hat jemand hier sowas schon gemacht und könnte seine Erfahrung mitteilen? Im Moment habe ich zur Anzeige das XbpBrowse und zum Suchen im Browser das modifizierte QuickBrowse. Schön wäre es, wenn alles in einem , nämlich dem XbpBrowse klappen würde.

Wäre jetzt nur mal eine Frage am Rande, bevor ich mir wieder die Nächte um die Ohren schlage und kein Ergebnis erziele, weil irgendwas so nicht klappt, wie ich es denke.
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!!
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: XbPQuickBrowse

Beitrag von AUGE_OHR »

hi,
Manfred hat geschrieben:Moin,
Ich habe mir das Beispiel Qbrowse2 zwischengenommen und etwas umgebaut. Jetzt kann man Zeichenweise im Index suchen. Das klappt auch alles recht schön. Meine Frage jetzt, kann man dieses Teil auch komplett unter XbPBrowse realisieren, bzw. hat jemand hier sowas schon gemacht und könnte seine Erfahrung mitteilen?
du meinst jetzt ein XbpBrowse wo du einfach "lostippen" kannst und er
dann in der betreffenden Spalte (mit Index) anfängt zu suchen ? JA !
Im Moment habe ich zur Anzeige das XbpBrowse und zum Suchen im Browser das modifizierte QuickBrowse. Schön wäre es, wenn alles in einem , nämlich dem XbpBrowse klappen würde.
sagen wir es mal so : Alles was man mit Quickbrowse machen kann
ist nur ein "kleiner Teil" von dem was XbpBrowse kann
Wäre jetzt nur mal eine Frage am Rande, bevor ich mir wieder die Nächte um die Ohren schlage und kein Ergebnis erziele, weil irgendwas so nicht klappt, wie ich es denke.
hm ... doch da gibt es etwas was ich (noch nicht) in den Griff bekomme :
wenn man XBPBRW_CURSOR_ROW verwendet läst sich nicht so einfach
bestimmen in welcher Colume man nun ist und welcher IndexOrd() nun
verwendet werden soll/muss ...

gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Mich würde das auch interessieren. Unter Clipper hatte ich mir das mal geschrieben, da ging dann beim ersten Tastendruck ein Fenster auf, wo man noch mehr eintippen konnte, und der Browse ist dann automatisch auf den ersten Eintrag mit dem Eintrag gesprungen.

Nach dem Umschreiben auf Xbase würde ich das natürlich gerne wiederhaben. Hab auch schon gegrübelt, wie das funktionieren könnte. Ohne Ergeniss...

Jan
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Jan,

mit Quickbrowse ist das relativ einfach, was das Suchen in einem vorgegebenen Index betrifft. Wenn Du willst kann ich Dir das geänderte Beispiel von Alaska zukommen lassen.
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!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

... aber ich arbeite nicht mit QuickBrowse da zu unflexibel.

Jan
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Ich habe beides parallel laufen, mal das mal das, je nachdem, wo ich gerne suchen möchte und wo es genügt nur anzuzeigen. Ich werde es im Laufe der Zeit versuchen alles in XbpBrowse unterzubringen, aber im Moment fehlt mir das nötige Know How dazu, also benutze ich beides... :-(

Am besten wäre es noch, wenn man es mit OrdWildSeek() verknüpfen kann, das wäre der Hammer.
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!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Manfred hat geschrieben:Ich werde es im Laufe der Zeit versuchen alles in XbpBrowse unterzubringen, aber im Moment fehlt mir das nötige Know How dazu, also benutze ich beides... :-(
das ist gar nicht sinnvoll. Wenn die Fähigkeiten von QuickBrowse reichen, sollte man diesen nehmen. Da er weniger kann, ist er resourcenschonender. Der Rechner muss für diesen weniger Zeit aufbringen etc.
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Prima Hubert,
brandelh hat geschrieben:
Manfred hat geschrieben:Ich werde es im Laufe der Zeit versuchen alles in XbpBrowse unterzubringen, aber im Moment fehlt mir das nötige Know How dazu, also benutze ich beides... :-(
das ist gar nicht sinnvoll. Wenn die Fähigkeiten von QuickBrowse reichen, sollte man diesen nehmen. Denn da er weniger kann, ist er Resourcenschonender. Der Rechner muss für diesen weniger Zeit aufbringen etc.
der Vorschlag klingt recht sympathisch. Was möchtest Du trinken?
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!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16509
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
:lol: :wink:

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

hi,
Manfred hat geschrieben: Am besten wäre es noch, wenn man es mit OrdWildSeek() verknüpfen kann, das wäre der Hammer.
grundsätzlich geht das, man muss sich "nur" selbst einen "Skipper" bauen,
aber nur leider "nur vorwärtz" ... (ok mit 2st Index der DESCEND ist ginge
es wohl ...)
Es ist auch möglich in den "Skipper" eine "Bedingung" einzubauen und
die dann zu evaluieren :

Code: Alles auswählen

oBrowse:skipBlock     := {|x| GoNext(x, {|| ZRGNR=URECHNR } , @obrowse) }
oBrowse:goTopBlock    := {||     GoTop( {||ZRGNR=URECHNR } , @obrowse) }
oBrowse:goBottomBlock := {|| GoBottom( {||ZRGNR=URECHNR } , @obrowse) }
...
FUNCTION GoNext(nToSkip, bWhileCond , obrowse)
    LOCAL nSkipped := 0, nDirection

   IF RECNO()==LASTREC()+1
*      obrowse:hitBottomBlock
      RETURN 0
   ENDIF

   nDirection := IIF(nToSkip > 0, 1, -1)

   DO WHILE nSkipped != nToSkip .AND. EVAL(bWhileCond) .AND. ;
     !EOF() .AND. !BOF()
      SKIP nDirection
      nSkipped += nDirection
   ENDDO

   IF EOF()
      SKIP -1
      nSkipped--
*      obrowse:hitBottomBlock
   ELSEIF BOF()
      GOTO RECNO()
      nSkipped++
*      obrowse:hitTopBlock
   ELSEIF !EVAL(bWhileCond)
      SKIP -nDirection
      nSkipped += -nDirection
   ENDIF

    RETURN nSkipped
gruss by OHR
Jimmy
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Leute,

wieder mal etwas interessantes entdeckt.

Ich habe unter XbpBrowse 2 Möglichkeiten die Felder einer DB zu browsen. Entweder lese ich sie direkt aus der Db aus und zeige dann alle Felder im Browsefenster an, oder aber ich gebe eine Maskendatei an, in der die einzelnen Feldnamen mit Überschriftbezeichnungen in einzelnen Datensätzen stehen. Das klappt auch prima, nur ist mir jetzt etwas unter XbpQuickBrowse aufgefallen, wonach ich etliche Zeit auf Fehlersuche war. Unter Quickbrowse kann man nicht so ohne weiteres die Feldbezeichnungen aus einer Tabelle einlesen und dann browsen lassen. Die Feldbezeichnungen müssen mit TRIM(feldname) angegeben werden, sonst wird nur ein leerer Bildschirm angezeigt.

Jetzt sagt nicht, das ist ein alter Hund.....

Hier ein kleiner Ausschnitt wie es abläuft.

Code: Alles auswählen

IF ! EMPTY(cMaskendatei)   // wenn keine Maskendateibezeichnung übergeben wurde
          IF ! FILE("..\datenbanken\masken\" + cMaskendatei + ".dbf")     // wenn die Maskendatei nicht vorhanden ist
             oMessage:anzeigen("ACHTUNG! Eine Anzeigemaske " + cMaskendatei + " liegt nicht vor. ")
             IF ! lPauschalMaske
                RETURN(.F.)
             ENDIF
             IF oMessage:anzeigen("Soll die Datenbank pauschal angezeigt werden?",.T.,"N")
                cMaskendatei := ""
             ELSE
                RETURN(.F.)
             ENDIF
          ELSE
             DbUseArea(.T.,"DBFCDX","..\datenbanken\masken\" + cMaskendatei,"maske",.T.,.F.)// kann vielleicht später mal gegen etwas komfortableres ausgetauscht werden
             aMaskenArray := ARRAY(maske->(LASTREC()),FCOUNT())                 // Erzeugung des Arrays anhand der Recordmenge in der Maskendatei
             maske->(DBEVAL({|| aMaskenArray[maske->(RECNO())] := {maske->feld,maske->uschrift,maske->folge,maske->feldbreite,maske->ausblenden,maske->fix}}))
             ASORT(aMaskenArray,,, { |x, y| x[3] < y[3] })                      // Array wird nun nach der vorgegebenen Reihenfolge sortiert für Browse
             maske->(DbCloseArea())                                             // wird geschlossen, da alle Werte übernommen wurden in ARRAY
             nLen := LEN(aMaskenArray)
             FOR nI := 1 TO nLen                                                // einmal das Array durchlaufen und die Felder abfragen
                 AAdd(aFields,TRIM(aMaskenArray[nI,1]))                         // Feldbezeichnungen
                 AAdd(aHeader,aMaskenArray[nI,2])                               // Überschriften
             NEXT
          ENDIF
       ENDIF

       IF EMPTY(cMaskendatei)
          nFcount := (ALIAS())->(Fcount())
          FOR nI := 2 TO nFcount                                                // für den Fall, das es keine Maskendatei gibt
              AAdd(aFields, (ALIAS())->(FieldName(nI)))                         // Feldnamen übernehmen
              AAdd(aHeader, (ALIAS())->(FieldName(nI)))                         // Überschriften aus den Feldnamen generieren
          NEXT                                                                  // überlegt werden, ob das Fenster nicht danach nochmals angepaßt wird mit neuer Breite
       ENDIF
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!!
Antworten