Page 1 of 1

Interesante web para conexiones a Bases de Datos

Posted: Mon Dec 15, 2014 5:43 pm
by AngelSalom
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.

Code: Select all

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 cCol
 

Re: Interesante web para conexiones a Bases de Datos

Posted: Mon Dec 15, 2014 8:59 pm
by fgondi
Angel,

Muchas gracias por la información

Re: Interesante web para conexiones a Bases de Datos

Posted: Tue Dec 16, 2014 9:51 am
by Antonio Linares
gracias Angel! :-)