Code: Select all
on mouseUp --foreign key choices **works**
local tID, tSQL, tFKData, tData, tFldNames
put the cDatabaseID of this stack into tID
--PRAGMA foreign_key_list(): --item3=table referenced, item4=foreign key field
put "PRAGMA foreign_key_list(" "e& the label of btn "Tables" "e& ");" into tSQL
put revDataFromQuery(comma,cr,tID,tSQL) into tFKData
if item 1 of tFKData = "revdberr" then ErrorTest tFKData --in stack
----
--PRAGMA table_info(): number,name,fieldtype,notnull=1,defaultvalue,primkey=1
put "PRAGMA table_info(" "e& item 3 of tFKData "e& ");" into tSQL --table referenced
put revDataFromQuery(comma,cr,tID,tSQL) into tData
if item 1 of tData = "revdberr" then ErrorTest tData
repeat for each line i in tData --comma list of fld names
put quote& item 2 of i "e&"," after tFldNames
if number(items in tFldNames) = "3" then exit repeat --only first 3 columns
end repeat
delete char -1 of tFldNames --last comma
----
put "SELECT" && tFldNames&& "FROM" &"e& item 3 of tFKData "e& ";" into tSQL --select first 3 columns table referenced
put revDataFromQuery(comma,cr,tID,tSQL) into tData
if item 1 of tData = "revdberr" then ErrorTest tData
----
set the text of btn "PopUp" to tData --referenced table records
set the topRight of btn "PopUp" to the topRight of fld 2 of grp (item 4 of tFKData) --foreign key field
set the layer of btn "PopUp" to "top" --bring to front
show btn "PopUp" --visible
end mouseUp
and MaxV's stack "SQLite Browser" ( http://livecodeshare.runrev.com/stack/7 ... administer )
were very helpful making my program, thank you.
These SQLite links were also helpful:
https://sqlite.org/lang.html --SQLite Syntax
https://sqlite.org/datatype3.html --SQLite Data Types
https://sqlite.org/foreignkeys.html --SQLite Foreign Keys
https://www.sqlite.org/faq.html --SQLite FAQ
SQLite FAQ #22: Does SQLite support foreign keys? As of version 3.6.19 (2009-10-14), SQLite supports foreign key constraints. But enforcement of foreign key constraints is turned off by default (for backwards compatibility). To enable foreign key constraint enforcement, run PRAGMA foreign_keys=ON; Note, however, that future releases of SQLite might change so that foreign key constraints enabled by default. Careful developers will not make any assumptions about whether or not foreign keys are enabled by default but will instead enable or disable them as necessary. The application can also use a PRAGMA foreign_keys statement to determine if foreign keys are currently enabled. (I found only one reference to this in the forum...from fMaxV. Thank you.)
LiveCode 9.0.3 stable when released will use updated SQLite v3.26.0. Thanks LC.
I'd also like to personally thank all the people who have offered advice and help. Thank you especially to Klaus, Richard, DunbarX, Jacque, Bogs, [-hh], and Panos. This forum is the best thing LiveCode has going for it. Terry