>>******************************************************************** >>* Description.......: OpenTble && Opens the passed table >>* Calling Samples...: OpenTble('TranMstr','WorkFile') >>* Parameter List....: tcTable, tcAlias, tcMode, tcTagOrder, tnBufferMode >>* Created by........: >>* Modified by.......: Nadya Nosonovsky 01/10/2001 11:46:19 AM >>******************************************************************** >>function OpenTble && Opens, but didn't select a table >>lparameters tcTable, tcAlias, tcMode, tcTagOrder, tnBufferMode >>*=messagebox( "tcTable "+tcTable+ chr(13)+"tcTagOrder "+iif(!empty(tcTagOrder),tcTagOrder,"")) >>* tcTable - required: name of table to open (with or without full path) >>* tcAlias - optional: alias name, if different from tcTable >>* tcMode - optional: mode in which table should be opened, like Shared noupdate >>* tcTagOrder - optional: Tag name >>* tnBufferMode - optional: Set buffer mode >>local lcTableName, lnPos, llDBCPrefix, lcDBCName >>* Check parameters first >>if empty(tcTable) or vartype(tcTable)'C' >>* First parameter is required >> return .f. >>else >> lnPos=rat('!',tcTable) >> if lnPos>0 && DataBase Name was specified && example: Support!PostOff >> lcTableName=juststem(substr(tcTable,lnPos+1)) && PostOff >> lcDBCName=upper(left(tcTable,lnPos-1)) && DBC Name >> llDBCPrefix=.t. >> else >> lcTableName=tcTable >> endif >>endif >>if empty(tcAlias) or vartype(tcAlias)'C' >> tcAlias=juststem(lcTableName) >>endif >> >>if empty(tcMode) or vartype(tcMode)'C' >> tcMode='shared' >>else >> tcMode=lower(tcMode) >>endif >>local lcCheckFile >>if empty(justext(lcTableName)) >> lcCheckFile=forceext(lcTableName,"dbf") >>else >> lcCheckFile=lcTableName >>endif >>if !file(lcCheckFile) && File doesn't exist >> =messagebox(tcTable +' does not exist!. Can not proceed...',48,'Error') >> return .f. >>endif >>local lnOldSelect >>lnOldSelect=select() >>if !used(tcAlias) or ; && Alias is not already in use or >> (llDBCPrefix and not juststem(cursorgetprop("DATABASE",tcAlias))==lcDBCName) && it's not the same database >> local lcOldError, lnErr, lcOldSetExclusive >> use in select(tcAlias) && Close table >> lnErr=0 >> lcOldError=on('error') && Save current Error Handler >> lcOldSetExclusive=set('exclusive') && Save current exclusive status >> set exclusive off && This should be always set this way >> on error lnErr=error() >> use (tcTable) again &tcMode in 0 alias (tcAlias) >> on error &lcOldError && Restore previous Error Handler >> if lcOldSetExclusive='ON' >> set exclusive on && Restore it back to original settings >> endif >> if lnErr0 && Error occurs >> if lnErr=1705 && File Access is denied >> =messagebox(tcTable +' is opened exclusively by another user. Can not proceed...',48,'Error '+transform(lnErr)) >> return .f. && Table could not be opened (already used exclusively) >> else && Another error >> =messagebox(tcTable+' could not be opened!',48,'Error '+transform(lnErr)) >> return .f. >> endif >> endif >>endif >> >>select (tcAlias) && If it's here, everything is all right >>if not empty(tcTagOrder) and vartype(tcTagOrder)='C' and tagno(tcTagOrder)>0 >> set order to tag (tcTagOrder) in (tcAlias) >>endif >>if vartype(tnBufferMode)='N' and between(tnBufferMode,1,5) >> set multilocks on >> =cursorsetprop('Buffering',tnBufferMode) && Note, we can not set buffering mode less than 3 on a view - no check for this >>endif >>select (lnOldSelect) && Return back to the original area >>return .t.>>
>>>>> >>>>>Flush >>>>> >>>>>Sys(1104) >>>>> >>>>>>>Close Databases All >>>>> >>>>>If Used( ) >>>>> Use In >>>>>EndIf >>>>> >>>>>Use In 0 Exclusive >>>>> >>>>>>>>>>