Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 241148 (2584)

| Suchen
| Zurück zur Übersicht

Autor | Thema: suchen in einer DBF-Datei
Detlef Meyer
| Datum:14.05.02 13:08 (Meyeronline@freenet.de) |
Hallo Leute ich habe eine Frage ich suche in einer dbf datei mit ddfind nach einer ean nummer jetzt gibt es die eannummer aber 2-5 mal wie kann ich es machen das er mir alle auflistet dir erfindet ?? MFG Detlef
Jürgen K.
| Datum:14.05.02 14:22 |
Def @DBGETFILTER$(2) @If( Mid$(@DBGet$(@$(1)),01,@Len($(2)))=Mid$(@$(2),01,@Len($(2))) , @DBGet$(@$(1)) ,"") Cls Print "MY Filter" @DBOPEN(#1,"Test.dbf") DBUSE(#1) WhileLoop 1,10 'eof() Print @DBGETFILTER$("EAN_NUMMER","12345") @dbGo("NEXT") endWhile WaitInput DBCLOSE(#1) Print "Ende" End MfG Jürgen
Detlef Meyer
| Datum:14.05.02 14:50 (Meyeronline@freenet.de) |
Hi Jürgen ** das Funktioniert nicht !!! **
Jürgen K.
| Datum:14.05.02 19:37 |
Hi ! Solltest Du ein nummerische Feld ansprechen wollen muß der DEF @DBGETFILTER$() umgeschrieben werden !!! Dieser ist für Stringfelder gewesen ... MfG Jürgen
Gerhard Putschalka
| Datum: 15.05.02 11:28 (g.putschalka@utanet.at) |
Hallo Detlef, Bei Jürgen's Beispiel sollte noch kontrolliert werden, daß keine "nicht-ausgewählten" Sätze angezeigt werden. '
    Declare Anzahl&,X1%,Num&,Zw$
    Def @DBGETFILTER$(2) @If( Mid$(@DBGet$(@$(1)),01,@Len($(2)))=\
                              Mid$(@$(2),01,@Len($(2))),@DBGet$(@$(1)) ,"")

    ' sollte der Code in einem numerischen Feld stehen (längeres Feld und der Wert steht
    ' entweder links- oder rechtsbündig) ist folgende DEF besser:
    ' Def @DBGETFILTER$(2) @If( Mid$(@Trim$(@DBGet$(@$(1))),01,@Len($(2)))=\
    '                           Mid$(@$(2),01,@Len($(2))),@Trim$(@DBGet$(@$(1))) ,"")

    Cls
    Print "MY Filter"
    @DBOPEN(#1,"Test.dbf")

    Let Anzahl& = DBUSE(#1)
    Let X1% = 0
    While (X1% < Anzahl&) ' WhileLoop geht erst ab Profan 7
       Let Zw$ = @DBGETFILTER$("EAN_NUMMER","12345")
       ' nur wenn ein Satz gefunden wurde: auswerten!
       Case (@Len(Zw$) > 0) :  Print Zw$
       Let Num& = @dbGo("NEXT")
       Inc X1%
    endWhile

    DBCLOSE(#1)
    Print "Ende"
    WaitInput
    End
Allerdings wie groß ist die Datei? In dieser Version wird die Datei vom ersten bis zum letzten Satz gelesen. Eventuell wäre es sinnvoll eine Indexdatei über die EAN_Nummer anzulegen und mit dbFind auf den ersten gültigen Begriff aufzusetzen. Dann nur solange lesen bis der gefundene Satz einen höheren als den Suchwert hat. Mfg. Gerhard

| Zurück zur Übersicht