Buscando una forma de abrir bases de datos en Access protegidas con contrase帽a he dado con esta web https://www.connectionstrings.com/ . Aqu铆 os la dejo porque me parece muy interesante la cantidad de informaci贸n que contiene.
Por cierto, dejo tambi茅n la funci贸n que uso para abrir BBDD Access, y las funciones extra铆das de FW de apoyo.
Por cierto, dejo tambi茅n la funci贸n que uso para abrir BBDD Access, y las funciones extra铆das de FW de apoyo.
Function AbreConexionAccess (cBase, cTabla, lError, cPassword)
/* =======================================================================
聽 聽cBase - Base de datos de trabajo
聽 聽cTabla - Tabla a abrir
聽 聽lError - Pasado por referencia
聽 聽cPassword - Password si es necesario
聽 聽=======================================================================
*/
Local cConnection:="", oCon, oRs
聽 聽 Default cPassword:=""
聽 cConnection = "Provider='Microsoft.Jet.OLEDB.4.0'; Data Source='" + cBase + "';"
聽 If Long(cPassword)<>0
聽 聽 cConnection+="Jet OLEDB:Database Password="+Alltrim(cPassword)+";"
聽 Endif
聽 TRY
聽 聽 oCon = FW_OPenAdoConnection( cConnection )
聽 聽 oCon:CursorLocation = 3 // adUseClient
聽 CATCH oError
聽 聽 lError:=.T.
聽 聽 MsgAlert ("Imposible abrir la base de datos : "+cBase+CRLF+"Descripci贸n del problema : "+ oError:Description)
聽 END
聽 聽 聽
聽 oRs = TOleAuto():New( "ADODB.Recordset" )
聽 oRs:CursorType 聽 聽 = 1 聽 聽 聽 聽// opendkeyset
聽 oRs:CursorLocation = 3 聽 聽 聽 聽// local cache
聽 oRs:LockType 聽 聽 聽 = 3 聽 聽 聽 聽// lockoptimistic
聽 cTabla = FW_QuotedColSQL( cTabla )
聽 TRY
聽 聽 oRs:Open( "SELECT * FROM " + cTablA, oCon )
聽 CATCH oError
聽 聽 lError:=.T.
聽 聽 MsgAlert ("Imposible abrir la tabla : "+cTabla+CRLF+"Descripci贸n del problema : "+ oError:Description )
聽 END
Return (oRs) 聽
Function TipoCampoAccess (oField)
/* Devuelve el tipo de campo de una tabla access */
Local nType:=0, cType:="", nLen:=0
聽 聽
聽 聽 nType 聽 聽 聽 聽 聽 聽:= oField:Type
聽 聽DO CASE
聽 聽CASE ASCAN( { 2, 3, 16, 17, 18, 19, 20, 21 }, nType ) > 0
聽 聽 聽 cType 聽 聽 聽 聽 := 'N'
聽 聽 聽 nLen 聽 聽 聽 聽 聽:= oField:Precision
聽 聽 聽 nDec 聽 聽 聽 聽 := 0
聽 聽CASE ASCAN( { 14, 131, 139 }, nType ) > 0
聽 聽 聽 cType 聽 聽 聽 聽 := 'N'
聽 聽 聽 nLen 聽 聽 聽 聽 聽:= oField:Precision
聽 聽 聽 nDec 聽 聽 聽 聽 聽:= oField:NumericScale
聽 聽CASE ASCAN( { 4, 5, 6 }, nType ) > 0 聽// Single, Double, Currency
聽 聽 聽 cType 聽 聽 聽 聽 := 'N'
聽 聽 聽 nLen 聽 聽 聽 聽 聽:= oField:Precision
聽 聽 聽 nDec 聽 聽 聽 聽 聽:= 2
聽 聽CASE ASCAN( { 7, 133, 135 }, nType ) > 0
聽 聽 聽 cType 聽 聽 聽 聽 := 'D'
聽 聽CASE nType == 11
聽 聽 聽 cType 聽 聽 聽 聽 := 'L'
聽 聽CASE ASCAN( { 8,128,129,130,200,201,202,203,204,205 }, nType ) > 0
聽 聽 聽 cType 聽 聽 聽 聽 := 'C'
聽 聽 聽 nLen 聽 聽 聽 聽 聽:= oField:DefinedSize
聽 聽 聽 if nLen == 0 .or. nLen > 100
聽 聽 聽 聽 聽cType 聽 聽 聽:= 'M'
聽 聽 聽 聽 聽nLen 聽 聽 聽 := 40
聽 聽 聽 else
聽 聽 聽 聽 聽nLen 聽 聽 聽 := Min( 100, nLen )
聽 聽 聽 endif
聽 聽ENDCASE
聽 聽
Return (cType)
聽
Function FW_QuotedColSQL( cCol )
/* Devuelve cadena con los s铆mbolos correctos para abrir tabla acces */
聽 聽cCol 聽 聽 := AllTrim( cCol )
聽 聽do while ', ' $ cCol
聽 聽 聽 cCol 聽:= StrTran( cCol, ', ', ',' )
聽 聽enddo
聽 聽return '[' + StrTran( cCol, ",", "],[" ) + "]"
return cColAngel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4