PB/Cheetah - Skipping Txt Records

Just starting out? Need help? Post your questions and find answers here.
nicksteel
User
User
Posts: 43
Joined: Sat Apr 24, 2004 5:20 pm
Location: Houston

PB/Cheetah - Skipping Txt Records

Post 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
Slow, but trying.
gnozal
PureBasic Expert
PureBasic Expert
Posts: 4229
Joined: Sat Apr 26, 2003 8:27 am
Location: Strasbourg / France
Contact:

Post 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
Last edited by gnozal on Thu Jul 05, 2007 4:43 pm, edited 3 times in total.
For free libraries and tools, visit my web site (also home of jaPBe V3 and PureFORM).
nicksteel
User
User
Posts: 43
Joined: Sat Apr 24, 2004 5:20 pm
Location: Houston

Post by nicksteel »

Yeah, just caught my :oops: error before getting this.
Slow, but trying.
Post Reply