Enables a column delimiter and a new row delimiter in new
JOIN2$ function.
This makes it easy to display a string from a 2-dimensional array with a $CR or other characters as a row delimiter.
Improved
money macro to automatically display passed column name instead of printf statement.
SQlite "AS" is optional so just appended colname to the money macro.
Don't like leading
0 displaying on money columns so used ltrim to remove it.
Enjoy!
#DIM ALL
MACRO money(colname)= CHR$("ltrim(printf('%.2f',",colname,"*.01),'0')",colname)
#INCLUDE "sqlitening.inc"
FUNCTION PBMAIN () AS LONG
LOCAL sql,sColDel,sRowDel,rs() AS STRING
slopen "sample.db3"
sql = "select manuf,redref,"+ money("PRICE") + " from parts limit 20"
slselary sql,rs()
sColDel = " "
sRowDel = $CR
? JOIN2(rs(),sColDel,sRowDel),,USING$("Rows #_, Cols #",UBOUND(rs,2),UBOUND(rs))
END FUNCTION
FUNCTION JOIN2(rs() AS STRING,sColumnDelimiter AS STRING,sRowDelimiter AS STRING) AS STRING
LOCAL sb AS ISTRINGBUILDERA
sb = CLASS "STRINGBUILDERA"
'sb.capacity = 1024*1000 'does well without capacity
LOCAL c AS LONG
LOCAL LowCol AS LONG
LOCAL HighCol AS LONG
LOCAL HighCol_minus1 AS LONG
LOCAL r AS LONG
LOCAL LowRow AS LONG
LOCAL HighRow AS LONG
LowCol = LBOUND(rs,1)
HighCol= UBOUND(rs,1)
HighCol_minus1 = HighCol-1
LowRow = LBOUND(rs,2)
HighRow= UBOUND(rs,2)
FOR r = LowRow TO HighRow
FOR c= LowCol TO HighCol_minus1
sb.add rs(c,r)
sb.add sColumnDelimiter
NEXT c
sb.add rs(c,r)
sb.add sRowDelimiter
NEXT r
FUNCTION = sb.string
END FUNCTION