Page 1 of 1

PB/Cheetah - Skipping Txt Records

Posted: Thu Jul 05, 2007 4:10 pm
by nicksteel
Reading a .txt file, converting to dbf via Cheetah. Working, but skipping input txt records. I've opened the txt file with other programs, columns appear correct, etc. (Txt file is output from Primavera 3.1 PRMBATCH.) Compiling with Windows.


IncludeFile "Cheetah2.pbi"
xdbUseDLL()

FieldArray.s = "RTYPE,C,4,0;ITYPE,C,10,0;ACTID,C,10,0;DURTYPE,C,1,0;DUR,N,4,0;PCTCOMP,N,3,0;TITLE,C,48,0;TF,D,8,0"

xdbCreate("TEST", FieldArray.s)
hdb1 = xdbOpen("TEST.dbf", "")

If ReadFile(0, "Q431OUTX.TXT")

While Eof(0) = 0

xdbClearBuffer(hdb1)

tempcode.s=Left(ReadString(0),4)

Select tempcode

Case "ACTV"

xdbAssignField(hdb1, "RTYPE", xdbFieldNumber(hdb1, "RTYPE"), Mid(ReadString(0), 1, 4))

xdbAssignField(hdb1, "ITYPE", xdbFieldNumber(hdb1, "ITYPE"), Mid(ReadString(0), 5, 1))

xdbAssignField(hdb1, "ACTID", xdbFieldNumber(hdb1, "ACTID"), Mid(ReadString(0), 6, 10))

xdbAssignField(hdb1, "DURTYPE", xdbFieldNumber(hdb1, "DURTYPE"), Mid(ReadString(0), 16, 1))

xdbAssignField(hdb1, "DUR", xdbFieldNumber(hdb1, "DUR"), Mid(ReadString(0), 16, 1))

xdbAssignField(hdb1, "PCTCOMP", xdbFieldNumber(hdb1, "PCTCOMP"), Mid(ReadString(0), 21, 3))

xdbAssignField(hdb1, "TITLE", xdbFieldNumber(hdb1, "TITLE"), Mid(ReadString(0), 24, 48) )

xdbAppendRecord(hdb1)

Debug ReadString(0)

EndSelect

Wend
CloseFile(0)
Else
MessageRequester("Information","Couldn't open the file!")
EndIf

xdbClose(hdb1)
xdbFreeDLL()

End

Posted: Thu Jul 05, 2007 4:36 pm
by gnozal
Please use the code tags.

What is the text file like ?
Are all the fields in the same text line ?

How about this ?

Code: Select all

IncludeFile "Cheetah2.pbi" 
xdbUseDLL() 

FieldArray.s = "RTYPE,C,4,0;ITYPE,C,10,0;ACTID,C,10,0;DURTYPE,C,1,0;DUR,N,4,0;PCTCOMP,N,3,0;TITLE,C,48,0;TF,D,8,0" 

xdbCreate("TEST", FieldArray.s) 
hdb1 = xdbOpen("TEST.dbf", "") 

If ReadFile(0, "Q431OUTX.TXT") 
  
  While Eof(0) = 0 
    
    xdbClearBuffer(hdb1) 
    
    line.s = ReadString(0)
    tempcode.s=Left(line,4) 
    
    Select tempcode 
      
      Case "ACTV" 
        
        xdbAssignField(hdb1, "RTYPE", xdbFieldNumber(hdb1, "RTYPE"), Mid(line, 1, 4)) 
        
        xdbAssignField(hdb1, "ITYPE", xdbFieldNumber(hdb1, "ITYPE"), Mid(line, 5, 1)) 
        
        xdbAssignField(hdb1, "ACTID", xdbFieldNumber(hdb1, "ACTID"), Mid(line, 6, 10)) 
        
        xdbAssignField(hdb1, "DURTYPE", xdbFieldNumber(hdb1, "DURTYPE"), Mid(line, 16, 1)) 
        
        xdbAssignField(hdb1, "DUR", xdbFieldNumber(hdb1, "DUR"), Mid(line, 16, 1)) 
        
        xdbAssignField(hdb1, "PCTCOMP", xdbFieldNumber(hdb1, "PCTCOMP"), Mid(line, 21, 3)) 
        
        xdbAssignField(hdb1, "TITLE", xdbFieldNumber(hdb1, "TITLE"), Mid(line, 24, 48) ) 
        
        xdbAppendRecord(hdb1) 
        
        Debug line
        
    EndSelect 
    
  Wend 
  CloseFile(0) 
Else 
  MessageRequester("Information","Couldn't open the file!") 
EndIf 

xdbClose(hdb1) 
xdbFreeDLL() 

End

Posted: Thu Jul 05, 2007 4:38 pm
by nicksteel
Yeah, just caught my :oops: error before getting this.