- Windows Script Host - VBScript - Entrega y edición de datos - Acceso a bancos de datos Access -

Para el procesamientos de grandes cantidades de datos se presta el menejo de archivos de banco de datos. Estos guardan informaciones en tablas, las cuales está definidas por filas y columnas.
Además del acceso secuencial, los bancos de datos disponen del lenguaje de consulta SQL (Structured Query Language) para el acceso selectivo a filas y columnas (celdas o set de datos).
Los bancos de datos cuentan con informaciones sobre la estructura y el contenido de los datos. La estructura de datos contiene información estatica (nombre de la tabla, titulo de las columnas, etc), mientras que la parte dinamica está representada por el contenido de datos.
Las tablas son el objeto basico en una base de datos Access.
Las tablas están estructuradas en una serie de datos, los cuales están representados en las filas.
Estas filas contienen un grupo de campos o celdas, las cuales constitullen las columnas. Estas columnas pueden referenciarse a traves del nombre de la misma.

Lectura en un banco de datos Access
Para el acceso de lectura en un banco de datos Access se utilizarán los objetos "Connection" y "RecordSet".
Para acceder a un banco de datos ha de establecerse una conexion con el mismo. Esta ocurre sobre el objeto "Connection", para lo cual ha de expresarse el nombre del driver apropiado y el path del archivo del banco de datos. Para esto se utilizará una notación especial, llamada secuencia de conexión.
El Proveedor (provider) representa el driver del banco de datos, mientras que "Data Source" el path y el nombre del archivo, que deberá ser entregado. Ejemplo:

"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\user.MDB;"

Esta secuencia de conexión será entregada al objeto "Connection" a traves del metodo "Open( )". Por ejemplo:

DBConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\user.MDB;"

El metodo "Open( )" abre la conexión con la fuende de datos y a traves del metodo "Execute( )" se enviará una consulta SQL al sistema del banco de datos, el cual devuelve un listado en forma de un objeto "RecordSet". El comando SQL llama a todas las filas y columanas de la tabla "usuarios":

Sqlstring=SELECT * FROM usuarios

Como medida de seguridad, se posicionará el cursor en la primera secuencia de datos con el metodo "MoveFirst( )". El recorrido por todos los "RecordSet" se ejcutará con el bucle "While". Con cada ciclo del bucle, deberá procederse a posicionar el cursor en la proxima secuencia de datos con "MoveNext( )", de lo contrario se provocaria un ciclo infinito en el bucle.
El final del archivo se preguntará con la propiedad "EOF( )", la cual devuelve "Falce" mientras no se alcanze el final del mismo. Al devuelver "True", se abandonara el bucle de inmediato.
Es de buenas costumbres, al final del script, cerrar los objetos "RecordSet" y "Connection", para liberar los recursos al sistema.

' leertabla.vbs
' ================================================
' declaracion de las variable
Dim DBConnection, SqlString, respuesta
' definir las constantes
Const conexion="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\ejem\ User.MDB;"
' crear un objeto Connection
Set DBConnection = CreateObject("ADODB.Connection")
' abrir una coneccion con el banco de datos
' el archivo MDB debe encontrarse en la misma carpeta que el script
DBConnection.Open conexión
' consulta de la tabla usuario2
SqlString="SELECT * FROM usuario2"
' ejecutar la consulta y devolucion del Recordset
Set respuesta = DBConnection.Execute(SqlString)
' posecionarse al comienzo del Recordset
respuesta.MoveFirst
' recorrer toda la respuesta
Do While Not respuesta.eof
' edicion de los datos
WScript.Echo "Edicion de los datos para " & respuesta("NombredeUsuario")
WScript.Echo respuesta("Nombre")
WScript.Echo respuesta("Apellido")
WScript.Echo respuesta("Fechanacimiento")
WScript.Echo respuesta("Seccion")
WScript.Echo"/////////////////////////"
' posecionar el cursor en el proximo set de datos
respuesta.MoveNext
Loop
' cerrar el Recordset
respuesta.Close
' cerrar conexión
DBConnection.Close

Escribir en un banco de datos Access
Los componentes ADO permiten agregar y modificar datos en un banco de datos.
El siguiente ejemplo, introduce datos en la tabla "usuario2" provenientes de la lectura del archivo CSV "listadeusuarios".
Tras la declaración de las variable y constantes, se creará el objeto necesario para el proceso de lectura.
El metodo "CreateObject( )", crea una referencia del "FileSystemObject" y lo guarda en la variable FSO, mientras es instanciado el objeto "File" a traves del metodo "OpenTextFile( )".
Los objetos de bancos de datos, "Connect" y "Recordset", se crearán con "CreateObject( )" y se guardarán en las variables correspondiente.
La apertura del la conexión (Connection) se ejecutará con el metodo "Open( )" y la indicación de la secuencia de conexión. A la conexión se le asignará el atributo "ActiveConnection" del Recordset. En "Source" se indicará el nombre de la tabla en la cual ha de escribirse.
La indicación del "LockType" y "CursorType" termina la definición de los parámetros necesarios del Recordset. Estos parámetros posibilitan el acceso de lectura y escritura sin limitaciones a bancos de datos y posibilitan la manipulación del mismo por otra aplicación.
La aperuta de un Recordset se ejecutará con el metodo "Open( )".
Así, se leerá el archivo de texto línea a línea hasta el final del mismo. Cada línea será separada, sobre la función "Split( )", en la posición marcada por el punto y coma ( ; ), depositando esta información en la variable Array "usuario".
Para incorporar nuevos datos a una tabla, el Recordset dispone del metodo "AddNew( )", el cual crea una línea temporal vacia en la tabla. Con la definición de los valores para las columnas llegan los datos a esta línea temporal. La definición de los valores pueden realizarse de dos modos: El Recordset permite el acceso a cada columna a traves de su nombre o sobre el index de la misma. En el ejemplo siguiente, el acceso se realizará sobre el nombre de la columna. Para el acceso, se colgará el nombre de la columna en forma de cadena de caracteres encerrada entre paréntesis, a la variable "tabla" del objeto Recordset.
Los valores se guardarán en el banco de datos a traves de la función "Update( )".
Una ves registrados lo datos en la tabla, se serrarán los objetos File, RecordSet y Connection con el metodo "Close( )".

' escribirtabla.vbs
' ================================================
' declaracion de las variable
Dim DBConnection
Dim tabla
Dim FSO
Dim archivo, lineatexto, salida, contador
' definicion de constante para el acceso
Const conexion="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\ejem\User.MDB;"
Const adOpenDynamic = 2
Const adLockOptimistic = 3
Const ForReading = 1
Const adOpenKeyset = 1

' crear FSO
Set FSO=CreateObject("Scripting.FileSystemObject")
' abrir archivo para su lectura
Set archivo = FSO.OpenTextFile("listadeusuarios.csv", ForReading, False)
' crear objeto Connection
Set DBConnection = CreateObject("ADODB.Connection")
' abrir conexión
' el archivo MDB debe encontrarse en la misma carpeta que el script
DBConnection.Open conexión
' crear objeto Recordset
Set tabla = CreateObject("ADODB.Recordset")' determinacion de la conexion utilizada
tabla.ActiveConnection = DBConnection
' determinar el tipo de acceso
tabla.CursorType = adOpenDynamic
' determinar tipo de limitacion
tabla.LockType = adLockOptimistic' definir la fuente
tabla.Source="usuario2"
' abrir tabla
tabla.Open
contador=0
' recorrer el texto completo
While not archivo.AtEndOfStream
' ignorar la primera linea, contiene el nombre de los campos
If contador=0 Then lineatexto=archivo.Readline( )
' leer linea a linea
lineatexto=archivo.Readline( )
' separar los valores
usuario=Split(lineatexto,";")
' agregar una fila en la tabla
tabla.AddNew
' asignarle valor a las columnas
tabla("Nombredeusuario") = usuario(0)
tabla("Nombre") = usuario(1)
tabla("Apellido") = usuario(2)
tabla("Fechanacimiento") = CDate(usuario(3))
tabla("Seccion") = CInt(usuario(4))
' escribir modificacion
tabla.Update
contador=contador+1
Wend
' cerar objetos
tabla.Close
DBConnection.Close
archivo.Close

previo
Imprimir!
Ultima actualisación: Tue, 24 ▪ May ▪ 2011
próximo