>public con >con = sqlstringconnect("Driver={Microsoft Access Driver (*.mdb)};Dbq=e:\data\...........") >SQLEXEC(con,"select * from ......... where customer_name=?thisform.text1.value", 'Junk1') >
CREATE CURSOR cResults (foldername C(254), DBName C(50), TableName C(50)) lcErrorMesssages = [] QueryAceess("d:\work\", ALLTRIM(thisform.Text1.Value)) SELECT cResult BROWSE NORMAL IF LEN(lcErrorMesssages) > 0 STRTOFILE(lcErrorMesssages,"ERROR.LOG") MODIFY FILE ERROR.LOG NOEDIT NOMENU ENDIF FUNCTION QueryAccess(lcFolderName, lcNameSearched) LOCAL laFolders[1], lnFolders, laFiles[1], lnFiles LOCAL lnFor lcFolderName = ADDBS(lcFolderName) **** Search ALL MDBs in that folder for the Name lnFiles = ADIR(laFiles,lcFolderName+"*.MDB") FOR lnFor = 1 TO lnFiles SearchMDB(lcFolderName+laFiles[m.lnFor, 1], m.lcNameSearched) NEXT *** Check to see if there is sub-folders lnFolders = ADIR(laFolders,laFolders+"*.*","D") FOR lnFor = 1 TO lnFolders IF NOT LEFT(laFolders[m.lnFor, 1],1) == [.] QueryAccess(ADDBS(lcFolderName+laFolders[m.lnFor, 1]), m.lcNameSearched) ENDIF NEXT RETURN FUNCTION SearchMDB(lcDBName, lcNameSearched) LOCAL lnConnection, lcConnectionString, laError[1] TEXT TO lcConnectionString NOSHOW TEXTMERGE Driver={Microsoft Access Driver (*.mdb)};Dbq=<<lcDBName>>; ENDTEXT lnConnection = sqlstringconnect(lcConnectionString) IF lnConnection < 0 AERROR(laError) lcErrorMesssages = lcErrorMesssages + "Can not connect to "+lcDBName+", reason " + laError[1,2]+CHR(13)+CHR(10) RETURN ENDIF IF SQLTABLES(lnConnection,"TABLE","crsTables") < 0 AERROR(laError) lcErrorMesssages = lcErrorMesssages + "Can not get table names, "+lcDBName+" reason " + laError[1,2]+CHR(13)+CHR(10) SQLDISCONNECT(lnConnection) RETURN ENDIF SELECT crsTables SCAN IF SQLCOLUMNS(lnConnection,ALLTRIM(crsTables.Table_Name),"crsColumns") < 0 DIMENSION laError[1] AERROR(laError) lcErrorMesssages = lcErrorMesssages + "Can not get column names "+lcDBName+[.]+ALLTRIM(crsTables.Table_Name)+", reason " + laError[1,2]+CHR(13)+CHR(10) LOOP ENDIF SELECT crsColumns LOCATE FOR UPPER(ALLTRIM(Field_name)) == "NAMES" IF FOUND() TEXT TO lcSQL NOSHOW TEXTMERGE SELECT FROM <<ALLTRIM(crsTables.Table_Name)>> WHERE Names = ?m.lcNameSearched ENDTEXT IF SQLEXEC(m.lnConnection, lcSQL, "crsResults") < 0 DIMENSION laError[1] AERROR(laError) lcErrorMesssages = lcErrorMesssages + "Can not get query "+lcDBName+[.]+ALLTRIM(crsTables.Table_Name)+", reason " + laError[1,2]+CHR(13)+CHR(10) ELSE INSERT INTO cResults (foldername, DBName, TableName); VALUES; (JUSTPATH(m.lcDBName),JUSTFNAME(m.lcDBName),ALLTRIM(crsTables.Table_Name)) ENDIF ENDIF SELECT crsTables ENDSCAN USE IN SELECT("crsTables") USE IN SELECT("crsColumns") USE IN SELECT("crsResults") SQLDISCONNECT(lnConnection) RETURNNOT TESTED!!!!!