It seems that dbListTables also returns stored SQL Queries. Is there some way to limit it to ONLY files.
Thanks,
Bill
I've never seen a "stored query" so I cn't help you.
What does the string look like that is returned?
LarryMc
After looking at the source code for the command it appears the function, as coded, returns everything.
LarryMc
It returns the name of the stored query. They are just file names. I have a way to limit which tables are being displayed (first table is called 'cards'), maybe I will add a table called '999zzz' and when I get to that Table Name I will stop displaying the table names.
Bill
This might be something Larry can fix when he looks at the Db functions for V2.0
LarryMc
I can create a smaller sample and send it, if needed. I would send the original, but it is 4.7 Meg. Lots of info to keep track of Pokemon cards.
Bill
Post a example with what you would like to do; for the record.
LarryMc
At this point the database has already been attached.
OPENWINDOW w3,0,0,200,230,0x80C80080,d1,"Available Data Base Files",&w3_handler
CONTROL w3,@LISTVIEW,"",5,5,180,190,@vscroll|0x50000001|@border,W3_L1
CONTROLCMD w3,W3_L1,@LVINSERTCOLUMN,0,"File"
CONTROLCMD w3,W3_L1,@LVINSERTCOLUMN,1," "
pTables = dbListTables(pDB)
IF pTables <> NULL
ti = 0
lvi = -1
FOR pTemp = EACH pTables as STRING
IF #pTemp = "zzzz9999" THEN ti = 0
IF ti = 1
lvi++
CONTROLCMD w3,W3_L1,@LVINSERTITEM,lvi,#pTemp
ENDIF
IF #pTemp = "cards" THEN ti = 1
NEXT
ListRemoveAll(pTables,TRUE)
Else
Print "No Tables to list"
ENDIF
' Set Listview field to max needed size
CONTROLCMD w3,W3_L1,@LVSETCOLWIDTH,0,-1
' Set last field (which is empty) to take up all the rest of the listview
CONTROLCMD w3,W3_L1,@LVSETCOLWIDTH,1,-2
Logic to process and close w3 is in handler.
Hope that shows what I am doing.
#pTemp = cards (first data file I create)
#pTemp = zzzz9999 (last data file, just so I can stop displaying)
This way I only show Tables and not Queries.
Bill
More strangeness....modified code to display more info and now it does NOT display Queries....
Revised code:
OPENWINDOW w3,0,0,200,230,0x80C80080,d1,"Available Data Base Files",&w3_handler
CONTROL w3,@LISTVIEW,"",5,5,180,190,@vscroll|0x50000001|@border,W3_L1
CONTROLCMD w3,W3_L1,@LVINSERTCOLUMN,0,"File"
CONTROLCMD w3,W3_L1,@LVINSERTCOLUMN,1,"Recs"
CONTROLCMD w3,W3_L1,@LVINSERTCOLUMN,2,"Cols"
CONTROLCMD w3,W3_L1,@LVINSERTCOLUMN,3," "
pTables = dbListTables(pDB)
IF pTables <> NULL
ti = 0
lvi = -1
FOR pTemp = EACH pTables as STRING
IF mid$(#pTemp,1,4) = "MSys"
ti = 0
ELSE
IF #pTemp = "cards"
ti = 0
ELSE
ti = 1
ENDIF
ENDIF
IF ti = 1
lvi++
IF dbCardinality(pDB,#pTemp) > 0 THEN CONTROLCMD w3,W3_L1,@LVINSERTITEM,lvi,#pTemp
CONTROLCMD w3,W3_L1,@LVSETTEXT,lvi,1,STR$(dbCardinality(pDB,#pTemp))
pCol = dbListColumns(pdb,#pTemp)
IF pCol <> NULL
tmp = ""
FOR pColT = EACH pCol as STRING
tmp += #pColT + ","
NEXT
PRINT
ListRemoveAll(pCol,TRUE)
ENDIF
CONTROLCMD w3,W3_L1,@LVSETTEXT,lvi,2,tmp
ENDIF
NEXT
ListRemoveAll(pTables,TRUE)
Else
lvi++
CONTROLCMD w3,W3_L1,@LVINSERTITEM,lvi,"No Tables Available"
ENDIF
CONTROLCMD w3,W3_L1,@LVSETCOLWIDTH,0,-1
CONTROLCMD w3,W3_L1,@LVSETCOLWIDTH,1,-1
CONTROLCMD w3,W3_L1,@LVSETCOLWIDTH,2,-1
CONTROLCMD w3,W3_L1,@LVSETCOLWIDTH,3,-2
I have it NOT display the MSys files and not cards, other than that it should display every thing. But now it only displays Tables and not Queries.
Strange...
Bill