Beim Zerlegen einer großen Datei in mehrere kleinere (je nach Gruppe), feuerte in der DO WHILE das EOF() zu zeitig, dannach habe ich es mit FOR NEXT probiert auch da gab es Probleme. Später bekam ich mit das es immer an der Stelle Probleme gab, wie der SELECT-Bereich (z.b. 4) lautetete.
Bsp.:
Code: Alles auswählen
FUNCTION xTest()
LOCAL iPos := 0
LOCAL iCount := 0
LOCAL cAP := ""
LOCAL aDbf := {}
LOCAL cMerk := "--"
LOCAL cSGRUP
LOCAL cPZNR
//** DEMO-Datei erzeugen
SELECT 158
aAdd(adbf, {"SGRUP" , "C", 4, 0 })
aAdd(adbf, {"POSNR" , "C", 8, 0 })
dbcreate( cAP+"PzGr.dbf", aDbf )
use (cAP+"PzGr.dbf")
//-- 160
iCount = 160
FOR iPos = 1 to iCount
APPEND BLANK
replace SGRUP with Alltrim(str(iPos))
replace POSNR with "12345678"
APPEND BLANK
replace SGRUP with Alltrim(str(iPos))
replace POSNR with "11111111"
APPEND BLANK
replace SGRUP with Alltrim(str(iPos))
replace POSNR with "22222222"
APPEND BLANK
replace SGRUP with Alltrim(str(iPos))
replace POSNR with "33333333"
APPEND BLANK
replace SGRUP with Alltrim(str(iPos))
replace POSNR with "44444444"
APPEND BLANK
replace SGRUP with Alltrim(str(iPos))
replace POSNR with "55555555"
APPEND BLANK
replace SGRUP with Alltrim(str(iPos))
replace POSNR with "66666666"
APPEND BLANK
replace SGRUP with Alltrim(str(iPos))
replace POSNR with "77777777"
APPEND BLANK
replace SGRUP with Alltrim(str(iPos))
replace POSNR with "88888888"
APPEND BLANK
replace SGRUP with Alltrim(str(iPos))
replace POSNR with "99999999"
NEXT
use
//** FEHLER ??
//SELECT 158 //-- PzGr.dbf // GEHT NICHT ANOMALIE bei 158
SELECT 4 //-- PzGr.dbf // GEHT NICHT ANOMALIE bei 4
SELECT 4 //-- PzGr.dbf // GEHT NICHT ANOMALIE bei 4
//SELECT(4) //-- PzGr.dbf // GEHT
use (cAP+"PzGr.dbf") shared
aDbf := DbStruct()
//DO WHILE !EOF()
iCount := LASTREC()
FOR iPos = 1 to iCount
//SELECT 158 //-- PzGr.dbf // GEHT NICHT ANOMALIE bei 158
SELECT 4 //-- PzGr.dbf // GEHT NICHT ANOMALIE bei 4
//SELECT(4) //-- PzGr.dbf // GEHT
GOTO iPos
cPOSNR := POSNR
cSGRUP := SGRUP
//cZeroGrup := StrZero(val(cSGRUP),5) //-- GEHT
cZeroGrup := alltrim(cSGRUP) //-- GEHT NICHT
if(cMerk == cZeroGrup)
else
cMerk := cZeroGrup
//Msgbox(cMerk)
@ Row(),Col() SAY cMerk+";"
SELECT 1 //-- Tempfile
dbcreate( cAP+Alltrim(cZeroGrup)+".dbf", aDbf )
use (cAP+Alltrim(cZeroGrup)+".dbf") shared
endif
SELECT 1 //-- Tempfile
APPEND BLANK
replace SGRUP with cSGRUP
replace POSNR with cPOSNR
// SELECT 4
// SKIP
// ENDDO
NEXT
CLOSE ALL
//Msgbox("Fertig")
@ 24,Col() SAY "FERTIG - Taste..."
RETURN NIL
SELECT 4 -> in PPO dbSelectArea( "4" )
"1;2;3;4;;4;;4;;4;;4;;5;6;7;8;9;"
bei SELECT(4) -> in PPO dbSelectArea( (4) )
"1;2;3;4;5;6;7;8;9;"
auch wenn ich die Datei anders nennen also mit StrZero(val(cSGRUP),5) funktioniert es.
ich weiß das man SELECT <nWorkArea> | <cAlias> übgeben kann
Gibt es dafür schon ein PDR oder sollte man eins eröffnen?
Wenn ja wo auf der Alaska-Seite macht man das?
Win 7 32 Bit
XBase 1.9.331
Liebe Grüße
Rolf