Announcement

Collapse
No announcement yet.

Suchefunktion verändern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Suchefunktion verändern

    Hallo alle zusammen,

    kann mir irgend jemand mal weiter Helfen. Ich habe FoxPro 6. Diese Programm habe ich von meinem Vater so zusagen bekommen.

    Es besteht eine Programm in der halt nach Namen gesucht werden soll.

    Die jetztige Suchfunktion läuft wie folgt ab.

    Man gibt in das Feld "Name" eine Buchstaben ein und es wird jeweils ein Name ausgegeben. Mit "J" bestätigt man und mit "n" springt man zum nächsten weiter.

    Meine bitte wäre, ob es möglich ist ein Fenster zuöffnen in dem allen Namen die z.B. mit "A"anfangen, angezeigt werden.
    Wenn ich dann auf eins von den drücke soll er mir wie gewohnt die zugehörigen Daten ausgeben.





    Hier ist die jetztige Suchfunktion:

    PROC KUSUCH

    sele UNKunden
    set COLOR to GR+/R,W+/B
    @ 1, 0 say mPRG + " K U N D E N - S U C H E N " + mCPR
    set COLOR to G/N
    * @ 2, 0 clea to 22,84

    do while TaJN # "J"

    pKNam = space(20)
    mKDNr = 0
    fcode = 4
    set COLOR to G/N,W+/B
    @ KUZ,KUS say spac(40)
    @ KUZ,KUS get pKNam PICT "!XXXXXXXXXXXXXXXXXXX"
    READ COLOR W+/R,
    @ 22,0 say spac(80)

    if trim(pKNam) < space(2)
    set COLOR to W+/R
    @ 22,20 say " etwas sollten Sie schon angeben ! "
    set COLOR to G
    loop
    endif

    if isalpha(pKNam)
    set order to NAME
    seek trim(pKNam)
    else
    set order to KDNr
    seek val(pKNam)
    endif

    if eof() .or. bof()
    set COLOR to W+/R
    @ KUZ,KUS Say " Bedaure, " + trim(pKNam) + " nicht vorhanden ! "
    @ 22,10 say " soll " + trim(pKNam) + " neu aufgenommen werden ? "
    zugel = "JNA"
    TaJN = "?"
    gMaske = 3 && Aufnehmen
    do GLOBAL
    if TaJN $ "AJ"
    @ KUZ,KUS say spac(37)
    @ 22,0 say spac(80)

    save scre
    do KUNEU
    WAIT time 1
    rest scre
    @ KUZ,KUS say spac(35)
    pKUZeig = alltrim(str(KDNr,5)) + " " + ;
    substr(trim(VORNAME)+" "+ trim(NAME),1,32)
    @ KUZ,KUS say alltrim(pKUZeig) Font "Arial",12

    else
    loop
    endif
    else

    do WHILE TaJN # "J"
    pKUZeig = alltrim(str(KDNr,5)) + " " + ;
    substr(trim(UNKUNDEN->Vorname)+" "+trim(UNKUNDEN->Name),1,32)
    pKUZeig = alltrim(pKUZeig)
    set COLOR to W+/N
    @ KUZ,KUS say spac(40)

    if FI # "J"
    mFi = "N"
    mFirm = "privat"
    mPr = "J"
    else
    mFi = "J"
    mPr = "N"
    mFirm = "Firma"
    endif

    set COLOR to R+/N
    @ KUZ,KUS + 30 say mFirm Font "Arial",11
    set color to W+/B
    @ KUZ,KUS say pKUZeig Font "Arial",12
    ****
    set COLOR to G/N
    gmaske = 7
    zugel = "EHJNZ"
    do global

    do case
    case TaJN = "N"
    skip
    if eof()
    skip -1
    set COLOR to W+/R
    @ 22,20 say " kein weiterer Kunde dahinter ! "
    set COLOR to G
    exit
    endif
    loop

    case TaJN = "Z"
    skip -1
    if bof()
    set COLOR to W+/R
    @ 22,20 say " kein weiterer Kunde davor ! "
    set COLOR to G
    exit
    endif
    loop

    endcase

    enddo
    endif

    mKDNr = KDNr
    mName = NAME
    pName = alltrim(substr(trim(Vorname) +" "+ trim(Name),1,30))
    pKNam = mName
    pKUOrt = substr(trim(ORT) +" "+ trim(STRASSE),1,30)
    mKUNUM = KUNUM
    * mLiNum = LiNum
    mZollNr = ZOLLNr
    mKoDat = Kontaktdat
    mKLand = alltr(Land)
    mFi = FI
    mEU = EU

    set order to KDNr
    enddo
    RETURN

  • #2
    Hallo!

    Also mit @-Direktiven wirst du da vermutlich nicht viel weiter kommen.

    Ich habe sowas immer so geloest, dass ich ein BROWSE-Fenster oeffne und ENTER und ESC abfange.
    Auf diese Art hast du eine 'bessere' Auflistung und kannst darin navigieren; vorher vielleicht noch einen SET FILTER oder so aehnlich um die Auswahl einzuschraenken und fertig.

    Beispielcode dafuer:
    Code:
    lcfields="ktonr,kurzcode,name1,name2,nation,ort"+","
    lcConst=lcFields
    lcSearch=left(lcFields,at(",",lcfields)-1)		&& "ktonr"
    browsiz=0
    for i=1 to occurs(",",lcConst)
    	myfield=left(lcfields,at(",",lcfields)-1)
    	browsiz=browsiz+fsize(myfield)
    	lcFields=substr(lcfields,at(",",lcfields)+1)
    next i
    browsiz=int((browsiz+5)*3/2)
    browlen=10*22/16
    DEFINE WIND temp AT 0,0 SIZE browlen,browsiz TITLE "Datenauswahl - mit ENTER übernehmen" COLOR RGB (0,0,0,192,192,192) FONT "MS Sans Serif" ,8  NOCLOSE FLOAT SHAD GROW
    on key label Enter keyb chr(23)
    go top
    browsefields="fields ktonr,kurzcode,name1,name2,nation,ort"
    brow wind temp noedit nodel noapp &browsefields
    on key label ENTER
    rele wind temp
    return iif(last()<>23,"",&lcSearch)
    Hoffe das hilft dir weiter.
    *-- robert.oh. --*

    Comment

    Working...
    X