Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 242981 (4417)
  Suchen
 Zurück zur Übersicht
 AutorThema: suchen in einer DBF-Datei
Detlef Meyer
Datum:14.05.02 13:08 Antwortenals Email verschicken (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 Antwortenals Email verschicken  


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 Antwortenals Email verschicken (Meyeronline@freenet.de) 



Hi Jürgen
** das Funktioniert nicht !!! **


Jürgen K.
Datum:14.05.02 19:37 Antwortenals Email verschicken  


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 Antwortenals Email verschicken (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