Funciones de conexión a bases de datos


Código enviado por nuestro compañero Rubén Rubio, que ya nos envio un código parecido pero para PHP.
Webmaster de programasweb.com; página dedicada al hospedaje y a ofrecer servicios.
Esta rutina ejecuta tanto sentencias de acción como de ejecución
No necesita muchos comentarios ya que él se encarga de eso.



Código:
<%

'#########################################################
'#
'# Creado por Ruben Rubio Rey (c) 2003
'# http://www.ProgramasWeb.com, webmaster@programasweb.com
'#
'# Estas subrutinas se pueden modificar y distribuir
'# libremente siempre y cuando no se borre ni se
'# modifique esta cabecera.
'#
'# Si alguien modifica este script rogaría que me enviasen una
'# copia a webmaster@programasweb.com
'#########################################################
'#
'# Configuración:
'# Modificar en la subrutina "Conectarse()" los valores
'# correspondientes a las siguientes variables:
'# · $paginaweb
'# · NombredeUsuario
'# · Password
'# por los valores correspondientes de la configuración
'# de la conexion ODBC a la base de datos.
'#
'##########################################################
'#
'# Modo de uso:
'#
'# Existe dos subrutinas que permiten la ejecución
'# de sentencias SQL, dependiendo de su naturaleza.
'#
'# · Ejecución de sentencias de selección:
'#
'# Comando a ejecutar:
'#
'# RecordsetDevuelto=GetFilas(SentenciaSQL,"CONEXIONODBC");
'#
'# Donde:
'# · SentenciaSQL: es un sentencia de selección.
'# (Ej. SELECT NOMBRE,APELLIDOS,TELEFONO FROM TABLA)
'# · RecordsetDevuelto: Es un recordset, que contiene
'# el valor de las filas que ha devuelto la sentencia SQL.
'#
'# Puedes tomar los valores de dos maneras distintas,
'# 1) Con los nombres de las columnas de la tabla
'#
'# response.write RecordsetDevuelto("NombreFila")
'#
'# 2) Con los valores de la posicion:
'#
'# response.write RecordsetDevuelto[0][2]
'#
'# devolverá la primera fila el tercer elemento.
'# (En el ejemplo devolvería el TELEFONO de la primera fila,
'# puesto que los arrays se empiezan a contar desde cero).
'# Si la sentencia tiene algún error sintáctico la función
'# devolverá el error.
'#
'# Donde:
'# · SentenciaSQL: Es una sentencia de acción.
'# (Ej. INSERT INTO TABLA (NOMBRE,APELLIDOS,TELEFONO) VALUES ('Nombre','Apellido','5559154'))
'# Si la sentencia tiene algún error sintáctico la función
'# detendrá la ejecución y devolverá el error.
'#
'# Ejemplo:
'# SendCommand SentenciaSQL,"CONEXIONODBC"
'#
'#########################################################

Dim Conn, ConexionAbierta


Private Sub AbrirCon(Conexion)
    
    'Variables para modificar:
    NombredeUsuario = "NombredeUsuario"
    Password = "PaSsWoRd"


    If ConexionAbierta = False Then
        ConexionAbierta = True
        Set Conn = createobject("ADODB.Connection")
        Conn.ConnectionTimeout = 180
        Conn.Open Conexion, NombredeUsuario , Password
    End If


End Sub

' ------------------------------------------------------

Private Sub CerrarCon()
    
    If ConexionAbierta = True Then
        ConexionAbierta = False
        Conn.Close
        Set Conn = Nothing
    End If
    
End Sub

' ------------------------------------------------------

Public Sub SendCommand(Comando, Conexion)

    Call AbrirCon(Conexion)
    
    
    Dim CMD
    
    set CMD = createobject("ADODB.Command")
    
    On error resume next
    
    
    CMD.ActiveConnection = Conn
    CMD.CommandText = Comando
    CMD.Execute
  
    if err.number <> 0 then response.write "Error nº " &amp;amp;amp;amp;amp; err.number &amp;amp;amp;amp;amp; "<BR>" &amp;amp;amp;amp;amp; err.description &amp;amp;amp;amp;amp; "<BR>" &amp;amp;amp;amp;amp; comando &amp;amp;amp;amp;amp; "<BR>"

    Set CMD = Nothing
    
End Sub

' ------------------------------------------------------

Public Function GetFilas(Comando, Conexion)

    'On Error GoTo error
    
    Call AbrirCon(Conexion)
    
    Dim Rs
    Dim ArrayTmp
    dim ContGetFilas,ContGetFechas,ContFilas, SW
    dim CampoFecha(100)
    set rs = createobject("ADODB.Recordset")

    on error resume next
    'response.write "<br>" &amp;amp;amp;amp;amp; Comando &amp;amp;amp;amp;amp; "<br>"
    Rs.Open Comando, Conn
    
    if err.number <> 0 then response.write "Error nº " &amp;amp;amp;amp;amp; err.number &amp;amp;amp;amp;amp; "<BR>" &amp;amp;amp;amp;amp; err.description &amp;amp;amp;amp;amp; "<BR>" &amp;amp;amp;amp;amp; comando &amp;amp;amp;amp;amp; "<BR>"
    
    'Verifico que tenga algun campo de fecha, si es nulo le pongo un valor (asi queda mas bonito :)
    
    SW=false
    ContGetFechas = 0
    for ContGetFilas = 0 to Rs.Fields.Count-1
        if Rs.Fields(ContGetFilas).Type=135 then
            SW=true
            CampoFecha(ContGetFechas) = ContGetFilas
            ContGetFEchas = ContGetFechas + 1
        end if
    next
    
    if not Rs.EOF then
    '    ArrayTmp = 0
    'else
        ArrayTmp = Rs.getrows()
    end if
    
    'dim cont
    'for cont=0 to rs.fields.count-1
    '    response.write rs.fields(cont).name &amp;amp;amp;amp;amp; " (" &amp;amp;amp;amp;amp; rs.fields(cont).type &amp;amp;amp;amp;amp; ")<br>"
    'next
    
    if SW=true and not isempty(ArrayTmp) then

        for ContFilas = LBound(ArrayTmp,2) to UBound(ArrayTmp,2)
            'Barre todas las filas
            for each ContGetFilas In CampoFecha
                'Barro todos los campos
                if ArrayTmp(ContGetFilas,ContFilas) = "01/01/1900" Or ArrayTmp(ContGetFilas,ContFilas) = "01/01/1753" then
                    ArrayTmp(ContGetFilas,ContFilas) = ""
                end if
                
            next
        next
        
    end if
    
    GetFilas = ArrayTmp
    
    rs.Close
    Set rs = Nothing
    
End Function

%>

Links relacionados:
Método OPEN de ADODB para un Recordset, cómo usar y tipos de parámetros. Recorrer los datos
Crear conexión a una BD (Base de Datos)
Leer, modificar e insertar datos en Excel con ADODB
Crear origen de datos DSN para conexión ODBC
Ejecutar sentencias SQL a un array bidimensional en PHP
Conectarse a una base de Datos MySQL en PHP
Arquitectura de software en capas


Para cualquier duda, consulta, sugerencia, opinión, colaboración, etc; no dude en ponerse en contacto con nosotros

Copyright © 2002-2017 [McAnam]. Reservados todos los derechos.
www.mcanam.com