Page 1 of 1

4 Years and Going.. Thanks!

Posted: Tue Dec 11, 2007 7:45 pm
by Karbon
Just celebrated the 4th year anniversary of kBilling. Thanks to everyone here that has helped me over the years and a special thanks to the PB team. I would say that the thousands of people that have purchased over the years would thank you guys too, if they knew what PureBasic was :-)

Anyway, guys, thanks for one hell of a good job!

Posted: Tue Dec 11, 2007 10:08 pm
by Rook Zimbabwe
Way to go Karbon! I wish you continued success, fortun and fame... and may some of that rub off on me!!! 8)

Posted: Tue Dec 11, 2007 10:16 pm
by Karbon
No fame and very little fortune, but thanks! I love my job!

Best of luck to you!

Posted: Tue Dec 11, 2007 11:02 pm
by srod
Aye, kBilling rocks! :)

Posted: Tue Dec 11, 2007 11:03 pm
by Karbon
And it might start using esgrid in the near future :-)

Posted: Tue Dec 11, 2007 11:08 pm
by Rook Zimbabwe
How did you manager the multiple user/network thingy... thats what is killing my POS application at the moment?

Posted: Tue Dec 11, 2007 11:10 pm
by Karbon
I used SQLite as the database and am currently (as in *right* now) making a version to work with PostgreSQL.

* I switched from using the native SQLite commands to using the ODBC subsystem within PB. It's a blessing and a curse as until 4.1 the ODBC functions didn't work when you enabled Unicode. ODBC is slower but it opens you up to a much longer list of supported databases with very little or no porting the actual data access routines.

This function might make your DB life easier, too. Pass it a database handle and text field name and it will return you the result as a string every time. The built-in ODBC data access functions are pretty hard to use since they are index based.
Procedure.s ReadDatabaseField(DatabaseHandle.l,FieldName.s)

result.s = ""

NumColumns.l = DatabaseColumns(DatabaseHandle)

For x = 0 To NumColumns-1

If DatabaseColumnName(DatabaseHandle, x) = FieldName

;1: Numeric format (a Long (.l) in PureBasic)
;2: string format (a String (.s) in PureBasic)
;3: Numeric float format (a Float (.f) in PureBasic)
;4: Numeric double format (a Double (.d) in PureBasic)
;5: Numeric quad format (a Quad (.q) in PureBasic)

type.l = DatabaseColumnType(DatabaseHandle,x)

Select type

Case 1

result.s = Str(GetDatabaseLong(DatabaseHandle,x))

Case 2

result.s = GetDatabaseString(DatabaseHandle,x)

Case 3

result.s = StrF(GetDatabaseFloat(DatabaseHandle,x))

Case 4

result.s = StrD(GetDatabaseDouble(DatabaseHandle,x))

Case 5

result.s = StrQ(GetDatabaseQuad(DatabaseHandle,x))

Default

result.s = GetDatabaseString(DatabaseHandle,x)

EndSelect

EndIf

Next

result.s = Trim(result)

ProcedureReturn result

EndProcedure

Posted: Tue Dec 11, 2007 11:47 pm
by Dare
Congrats!

Posted: Wed Dec 12, 2007 1:28 am
by pdwyer
What tool did you use for interface design?

Posted: Wed Dec 12, 2007 1:42 am
by Karbon
PureVision, of course :-)

http://purevision.reelmedia.org