Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 249546 (10982)
  Suchen
 Zurück zur Übersicht
 AutorThema: Index, Index, Index
Gerd Telzerow
Datum:25.07.01 22:32 Antwortenals Email verschicken (GTelzerow@T-Online.de) 


Hallo Profaner,

ich habe immer noch ein Problem mit dem Index.

Profan 7.0e, Win 2000

IfNot@Equ$(@FindFirst$("TESTXXL.DBF"),"TestXXL.dbf")
Assign #2,"TestXXL.str"
Rewrite #2
Print #2,"NAME;C;10;0"
Print #2,"VORNAME;C;10;0"
Print #2,"TEST;C;58;0"
Close #2
dbCreate "TestXXL.str" > "TestXXL.dbf"
Endif

Declare DBZeile%,SText1$,SText2$
@DBOpen(#1,"TestXXL.dbf")
@dbUse(#1)

@dbAppendBlank()
@dbPut("NAME","Schulz")
@dbPut("VORNAME","Werner")
@dbPutRec(0)

dbCreateIndex "NAME+VORNAME" > "SUCHE"
@DBIndex("SUCHE")

Let SText1$="Schulz"
Let SText2$="Werner"

Let DBZeile%=@dbFind(SText1$,SText2$,1)

Print DBZeile%

@dbClose(#1)

Waitinput

Im Interpreter wir der Datensatz gefunden, aber in der *.exe Datei nicht.

Wo ist der Fehler zu suchen?

G. Telzerow




Roland G. Hülsmann
Datum:26.07.01 01:08 Antwortenals Email verschicken (rgh-soft@t-online.de) 


Hallo,
dein Programm enthält zwei kleine Fehler. wenn man die beseitigt funktioniert es in Interpreter und als EXE gleichermaßen!

1. Name und Vorname sind je 10 Zeichen lang. Der zusammengesetzte Schlüssel besteht aus Name und Vorname. Damit die Suche funktioniert, müssen beide auch 10 Zeichen lang sein:

Let SText1$="Schulz "
Let SText2$="Werner "

2. @dbFind erwartet nur EINEN Stringparameter. Da hier ein zusammengesetzter Schlüssel verwandt wird, müssen die beiden teile als EIN String übergeben werden. Das erreichen wir mit dem "+":

Let DBZeile%=@dbFind(SText1$+SText2$,1)

Hinweis:
Um sich die Sache mit den Leerzeichen zu vereinfachen, kann man sich auch eine RPad-Funktion definieren, die einen String auf eine definierte Länge rechts mit Leerzeichen erweitert:

DEF @RPad$(2) @Left$(@$(1)+@Space$(@%(2)),@%(2))

Dann würde weiter unten stehen:

Let SText1$=@RPad$("Schulz",10)
Let SText2$=@RPad$("Werner",10)




Gerd Telzerow
Datum: 27.07.01 05:09 Antwortenals Email verschicken (GTelzerow@T-Online.de) 


Hallo Roland,
danke für diese Tips, manchmal sieht man den Wald vor Bäumen nicht.

THX

Gerd Telzerow


 Zurück zur Übersicht