Here's a tricky one... or not... :

Public support forum for peer to peer support with related to the Visual Objects and Vulcan.NET products
Post Reply
Anonymous

Here's a tricky one... or not... :

Post by Anonymous »

What am I doing wrong here please? This is the ENTIRE App. It's sole purpose in life is to create the folders, databases and CDX files required by my main app. Two CDX files are created perfectly - Clients.cdx and JobNo.cdx. Details.CDX just will not generate, and I cannot see why. I've changed the lengths of the fields InvFile and MapFile to 240 as I read somewhere anything over that causes problems (they were both 255 at the start, I've also tried 150 length for both) I've even tried commenting out the references to both those fields, yet the Index is still not being generated. The last database - Rates - as you can see uses no index. It is just that one index for the Details database. Any ideas at all please.All the databases are generated perfectly if that helps at all.

Here's the entire thing. It's a straight forward Terminal App.

FUNCTION Start()
LOCAL oServer
local aDBF as Array
Local cWorkDir
request dbfcdx
RddSetDefault("DBFCDX")
SetExclusive(true)
Set Decimals to 2
cWorkDir := WorkDir()
DirMake(cWorkDir + "Invoices")
DirMake(cWorkDir + "Db")
DirChange(cWorkDir + "Db")
SetDefault(cWorkDir + "Db")

// Create Client Database and Indexes
aDBF := {}
AAdd(aDBF, {"ClCode", "C", 10, 0})
AAdd(aDBF, {"ClName", "C", 100, 0})
AAdd(aDBF, {"ClAdd1", "C", 100, 0})
AAdd(aDBF, {"ClAdd2", "C", 100, 0})
AAdd(aDBF, {"ClState", "C", 3, 0})
AAdd(aDBF, {"ClSuburb", "C", 50, 0})
AAdd(aDBF, {"ClPhone", "C", 10, 0})
AAdd(aDBF, {"ClPcode", "C", 4, 0})
AAdd(aDBF, {"ClABN", "C", 20, 0})
AAdd(aDBF, {"ClEmail", "C", 100, 0})
AAdd(aDBF, {"ClComments", "M", 10, 0})
DBCREATE("CLIENT", aDBF, "DBFCDX")
oServer := DbServer{"Client"}
oServer:CreateOrder("CLCode", "Client","CLCode",,.T.)
oServer:CreateOrder("CLName", "Client", "ClName")
oServer:CreateOrder("ClState", "Client", "ClState")
oServer:CreateOrder("CLCodeName", "Client", "AllTrim(CLIENT->ClCode) + space(1) + Alltrim(CLIENT->ClName)" )
oServer:CreateOrder("CLPcode", "Client", "ClPCode")
oServer:Commit()
oServer:Close()


//Create Details Database and Indexes
aDBF := {}
AAdd(aDBF, {"ClCode", "C", 10, 0})
AAdd(aDBF, {"ClName", "C", 100, 0})
AAdd(aDBF, {"Dname", "C", 50, 0})
AAdd(aDBF, {"JobDate", "D", 10, 0})
AAdd(aDBF, {"JobFin", "L", 1, 0})
AAdd(aDBF, {"JobTime", "C", 10, 0})
AAdd(aDBF, {"JobDetails", "M", 10, 0})
AAdd(aDBF, {"NPC", "M", 10, 0})
AAdd(aDBF, {"JobNumber", "C", 5, 0})
AAdd(aDBF, {"PONumber", "C", 15, 0})
AAdd(aDBF, {"Rate", "N", 10, 2})
AAdd(aDBF, {"Units", "N", 10, 2})
AAdd(aDBF, {"RateType", "C", 15, 0})
AAdd(aDBF, {"Subby", "C", 50, 0})
AAdd(aDBF, {"Rego", "C", 50, 0})
AAdd(aDBF, {"Invoiced", "L", 1, 0})
AAdd(aDBF, {"InvFile", "C", 240, 0})
AAdd(aDBF, {"MapFile", "C", 240, 0})
DBCREATE("Details", aDBF, "DBFCDX")
oServer := DbServer{"DETAILS"}
oServer:CreateOrder("CLCode", "Details", "CLCode" )
oServer:CreateOrder("DName", "Details", "DName",, .T.)
oServer:CreateOrder("JobDate", "Details", "JobDate")
oServer:CreateOrder("JobFin", "Details", "JobFin")
oServer:CreateOrder("JobNumber", "Details", "JobNumber")
oServer:CreateOrder("PONumber", "Details", "PONumber",, .T.)
oServer:CreateOrder("Subby", "Details", "Subby",, .T.)
oServer:CreateOrder("Rego", "Details", "Rego")
oServer:CreateOrder("Invoiced", "Details", "Invoiced")
oServer:CreateOrder("InvFile", "Details", "InvFile")
oServer:CreateOrder("MapFile", "Details", "MapFile")
oServer:Commit()
oServer:Close()


//Create JobNumber Database
aDBF := {}
AAdd(aDBF, {"JobNumber", "N", 5, 0})
DBCREATE("JobNo", aDBF, "dbfcdx")
oServer := DbServer{"JobNo"}
oServer:CreateOrder("JobNumber", "JobNo","JobNumber")
oServer:APPEND()
oServer:FIELDPUT(#JobNumber, 1)
oServer:Commit()
oServer:Close()


// Create Rates Database and Indexes
aDBF := {}
AAdd(aDBF, {"RateType", "C", 10, 0})
DBCREATE("Rates", aDBF, "DBFCDX")
oServer := DbServer{"RATES"}
oServer:APPEND()
oServer:FIELDPUT(#RateType, "Each")
oServer:APPEND()
oServer:FIELDPUT(#RateType, "Hourly")
oServer:APPEND()
oServer:FIELDPUT(#RateType, "Quoted")
oServer:APPEND()
oServer:FIELDPUT(#RateType, "Zone")
oServer:Commit()
oServer:Close()


Return nil
User avatar
lumberjack
Posts: 723
Joined: Fri Sep 25, 2015 3:11 pm

Here's a tricky one... or not... :

Post by lumberjack »

Hi Jeff,
BiggyRat wrote:What am I doing wrong here please? Details.CDX just will not generate, and I cannot see why.
Any ideas at all please.All the databases are generated perfectly if that helps at all.

Code: Select all

FUNCTION Start()
...
   oServer:CreateOrder("JobDate", "Details", "DtoS(JobDate)") // Can you change the logic to change this to String index?
...
Return nil
BiggyRat

Here's a tricky one... or not... :

Post by BiggyRat »

Thanks Johan, just tried that now, no difference...
User avatar
lumberjack
Posts: 723
Joined: Fri Sep 25, 2015 3:11 pm

Here's a tricky one... or not... :

Post by lumberjack »

BiggyRat wrote:Thanks Johan, just tried that now, no difference...
Jeff, can you comment out all the createorders and add them one by one to identify which order causes the trouble?
BiggyRat

Here's a tricky one... or not... :

Post by BiggyRat »

Just completed doing that Johan..... the same result. No errors evident anywhere
FFF
Posts: 1522
Joined: Fri Sep 25, 2015 4:52 pm
Location: Germany

Here's a tricky one... or not... :

Post by FFF »

Jeff,
on Win 8.1/64 German, using Vo2838b, put your code in a terminal app, added Rddlib, compiled an run.
This is the result
dbf.PNG
dbf.PNG (4.37 KiB) Viewed 239 times
Karl
Regards
Karl
(on Win8.1/64, Xide32 2.19, X#2.19.0.2.)
BiggyRat

Here's a tricky one... or not... :

Post by BiggyRat »

Yep. You're correct Karl. Seems it was caused by a Windows Protection System corruption. sfc /scannow fixed it.

Thanks very much for you help Johan and Karl
Post Reply