Você está na página 1de 25

Comencemos a trabajar.

Una vez diseado nuestro sistema debemos comenzar a crear la Base de datos con la que vamos a trabajar. Para esto utilizaremos el Enterprise Manager del SQL

Al abrirlo nos encontramos con una estructura de rbol (similar al explorador de Windows), entre las carpetas que nos aparecen podemos encontrar: Data bases (Bases de Datos). Data Transformation Services. Management. Replication. Security. Support Services. Meta Data Services. Nosotros nos enfocaremos en Data bases (Bases de Datos) que al seguir explorndola nos aparecen las bases de datos que son creadas por defecto y para la administracin del SQL. Cuando hacemos click con el botn derecho del mouse sobre Data bases nos aparecern las siguientes opciones:

New Database (Nueva Base de Datos): Con esta opcin se nos abrir un asistente que nos permitir crear una nueva base de datos. Primera tarea que debemos realizar. Todas las tareas (All Tasks): Entre las opciones que nos aparecen podemos ver:

Backup Database: Nos permite hacer una copia de respaldo de nuestra base de datos. Restore Database (Restaurar base de datos): Opcin que restaura el backup realizado en el punto anterior. Attach Database (Agregar base de datos) Import Data (Importar datos): Opcin que nos permite recuperar un backup de los datos que contena la base de datos o para cuando trasladamos nuestra base de datos de una PC a otra. Export Data (Exportar Datos): Opcin que nos permite realizar una copia de respaldo de los datos que contiene la base de datos para luego llevarlos a otra PC o para almacenarla por resguardo. Copy Database Wizard: Aqu nos encontramos con un asistente que nos permitir realiza runa copia de la base de datos.

Ver: Esta opcin nos permite seleccionar el formato en el que queremos observar los iconos (iconos grandes, iconos pequeos, listas, detalles, personalizada). Nueva Ventana. Actualizar. Exportar lista. Ayuda.

Por el momento utilizaremos la opcin de NEW DATABASES para crear nuestra nueva base de datos.

Una vez creada veamos la estructura interna de la base de datos, podemos observar que automticamente nos crea las siguientes carpetas: Diagrams (Diagramas): Aqu podremos hacer el diagrama de nuestra base de datos una vez que hayamos creado las tablas y las relaciones correspondientes (tarea que es excluyente porque podemos crear las relaciones dentro de este diagrama). Tables (Tablas): Aqu es en donde vamos a crear las tablas que contiene nuestra base de datos. Views (Vistas): Aqu crearemos las vistas (consultas) limitadas solamente como vistas para su posterior uso en la aplicacin que acceder a esta base de datos. Store Procedures (Procedimientos Almacenados): En esta carpeta es en donde almacenaremos los procedimientos (funciones) que vamos a crear para realizar las altas, bajas, modificaciones y consultas que realizaremos sobre la base de datos que estamos armando. Users (Usuarios): Desde este item se crean y se limitan a los usuarios que podrn acceder a la base de datos. Roles (Roles): Aqu definimos los roles de cada uno de los usuarios, ya sea rol de administrador, usuario limitado, etc. Rules (Reglas): En este apartado es en donde definimos las reglas para el acceso a la base de datos. Defaults (Defecto): Aqu definimos los valores por defecto.

User Defined Data Types (Datos definidos por el usuario): En caso de que necesitemos definir algn tipo de datos que no este contenido por SQL en este apartado es en donde lo crearemos y en donde se almacenar para su posterior uso. User Defined Functions (Funciones definidas por el usuario): Como sabemos, todos los tipos de datos tienen funciones predefinidas (por ejemplo: una variable de tipo datetime tiene funciones como getdate() que nos proporciona la fecha del sistema operativo). En esta carpeta definiremos funciones que nos sean tiles a nosotros como programadores y que no existan dentro de SQL. Una vez hecho este repaso general, procedemos a crear cada una de las tablas de nuestra base de datos. Para esto, nos posicionamos en la carpeta Tables (tablas) y hacemos click con el botn derecho del mouse y all podemos observar lo siguiente:

Como podemos ver estas opciones son similares a las analizadas en el caso de Data bases. Por lo tanto, nuestra intuicin nos lleva a pensar que debemos hacer click en la opcin New Table (nueva tabla) para la creacin de las tablas que tendr nuestra base de datos. Una vez que accedemos nos aparece la siguiente ventana:

Podemos ver que nos aparece una grilla con las opciones:

Column name (nombre de la columna): Aqu es en donde nosotros vamos a comenzar a crear cada uno de los campos que contiene esta tabla, en esta columna debemos poner el nombre del campo. Data type (tipo de datos): Aqu definiremos el tipo de datos de nuestro campo. Entre los tipos de datos encontramos: Bigint: Tipo de dato entero, toma un rango desde -9223372036854775808 hasta 9223372036854775807 Binary: Tipo de dato binario cuya longitud mxima es de 8000 bytes. Bit: Tipo de dato entero, permite solamente los valores 1 o 0. Char: Tipo de dato caracter, permite una longitud mxima de 8000 caracteres. Datetime: Tipo de dato Fecha y hora, toma fechas desde el 1 de Enero de 1753 hasta el 31 de Diciembre de 9999 y con una exactitud de 3 centsimas de segundo o 3,33 milsimas de segundos. Decimal: Tipo de dato decimales cuyo rango va desde -1038 + 1 hasta 1038 - 1 Float: Tipo de dato de precisin de punto flotante toma un rango desde -1,79x10 308 hasta 1,79x10308. Image: Tipo de dato binario pero permiten una longitud mxima de 2.147.483.647 bytes. Int: Tipo de dato entero cuyo rango va desde -2.147.483.648 hasta 2.147.483.647 Money: Tipo de dato monetario que toma cifras desde -922.337.203.685.477,5808 hasta 922.337.203.685.477,5807 con una exactitud de 10 centsimas del valor monetario. Nchar: Tipo de dato char que permite una longitud mxima de 4.000 caracteres. Ntext: Tipo de dato texto que permite una longitud mxima de 1.073.741.823 caracteres. Numeric: Funcionalmente es equivalente al valor decimal. Nvarchar: Tipo de dato cuya longitud mxima es de 4000 caracteres. Real: Tipo de dato de precisin flotante, toma rangos desde -3,4x10 38 hasta 3,4x1038. Smalldatetime: Tipo de dato con formato de fecha y hora va desde el 1 de Enero de 1900 hasta el 6 de Junio de 2079 con una precisin de 1 minuto. Smallint: Tipo de datos enteros con un rango que va desde -32.768 hasta 32.767 Sql_variant: Tipo de dato que permite almacenar datos de otras versiones de SQL, pero no acepta valores del tipo texto, ntext, timestamp. texto: Tipo de dato que permite una longitud mxima de 2.147.483.647 caracteres. Timestamp. Tinyint: Tipo de dato entero con un rango que va desde 0 hasta 255.

Uniqueidentifier: Identificador nico y global (GUID). Varbinary: Tipo de dato binario que toma una longitud mxima de 8000 bytes. Varchar: Tipo de dato que permite una longitud mxima de 8000 caracteres.

Lenght (longitud): Ac especificamos la longitud de nuestro dato a almacenar. Allow Null (Permitir nulo): Esta opcin nos informa si podemos o no permitir el ingreso de valores nulos en ese campo. Si esta tildado es que estamos permitiendo el ingreso de valores nulos, esta opcin no es utilizada para los campos definidos como claves primarias de nuestra tabla. Por ltimo en la solapa de abajo podemos poner ciertas especificaciones a cada uno de los campos, como ser valor por defecto; si es un identificador (clave primaria) podemos indicarle si permite o no duplicaciones, etc. Una vez que hayamos creado todas las tablas y campos de dichas tablas podemos comenzar a ponerle las limitaciones a estas tablas y comenzar a crear las relaciones entre las mismas. Para realizar esta tarea podemos hacerla desde dos lugares diferentes: uno es desde el mismo diseo de cada tabla y otra forma es cuando ya tenemos las tablas dentro de un diagrama. Para mayor comodidad utilizaremos la primera forma, accediendo desde la tabla. Para ello una vez ubicados de nuevo en el diseo de la tabla, hacemos click con el botn derecho del mouse y observamos lo siguiente:

Set primary key (habilitar clave primaria): En caso de que no la hayamos habilitado al definirla podemos hacerlo desde aqu. Insert Column (Insertar columna): Esta opcin es para que insertemos ms columnas (campos) en nuestra tabla. Delete Column (Eliminar columna): Esta opcin hace referencia a eliminar un campo de la tabla.

Task (Tareas): Aqu nos permite realizar tareas de mantenimiento y creacin de script1.
Select All (seleccionar todo): Permite hacer una seleccin de todos los campos de la tabla.
1

Script: Cdigo T-sql de la tabla, es decir, la tabla queda codificada en lenguaje sql para luego ser ejecutada desde el analizador de consulta (Query analyzer)

Save (Guarda): Opcin para almacenar las modificaciones realizadas. Indexes/Keys (Indices y claves): En este punto es en donde definiremos los ndices de nuestra tabla. Debemos recordar cual es el concepto de un ndice (esta ese concepto o tenemos que refrescarlo?????), bueno aqu se usa para lo mismo, si!!!!! Buscar ms rpido los datos almacenados; por ejemplo cuando queremos buscar un tema en un libro recurrimos al ndice. Entonces cuando tengamos que definir ndices en nuestra tabla tenemos que tener presente porque campos se pueden llegar a realizar ms bsquedas. La opcin de Keys (claves) nos permite crear las claves dentro de la tabla, ya sean claves primarias (primary key) o claves propagadas (foreing key, que son las que usamos para relacionar las tablas) Relationships (Relaciones): En esta solapa podemos creas las relaciones entre las distintas tablas.

Como observamos podemos seleccionar el tipo de relacin, el nombre que le queremos poner a dicha relacin y seleccionamos desde que tabla proviene la clave primaria y hacia cual tabla debe propagarse (relacionarse). Por defecto dejamos seleccionadas las opciones de Enforce relationship for replication (forzar relacin en duplicaciones) y Enforse relationship for INSERTs and UPDATEs (forzar relaciones cuando se realice una insercin o cuando se actualicen los campos).

Check constraints (chequeo de restricciones): En esta solapa ponemos restricciones a los campos, por ejemplo en el caso de un tipo de documento podemos tener restricciones ya que solamente pueden cargarse datos del tipo DNI, CI, PAS, LE, LC y nada ms. Aqu definimos el nombre de la constraint y los datos que puede contener. Para poder realizar una constraint, debemos especificar entre corchetes [nombre_campo] el nombre del campo que va a tener la restriccin, igualado a los valores establecidos y usando expresiones lgicas del tipo OR, AND, NOT. Por ejemplo en el caso de tipo de documento, la constraint sera: ([Tipo de Documento] = 'CI' or ([Tipo de Documento] = 'PAS' or ([Tipo de Documento] = 'LE' or ([Tipo de Documento] = 'LC' or [Tipo de Documento] = 'DNI'))))

Properties (Propiedades): Nos informa las propiedades de la tabla, por ejemplo a que nombre, cual es la clave primaria, etc.

Continuemos con nuestro trabajo


Ahora empezaremos a trabajar con cada unas de las funciones (tareas) que deben realizar nuestra base de datos. Ya dijimos en reiteradas oportunidades que la aplicacin solamente nos servir como un entorno para que el usuario vea, cargue y modifique los datos de la base de datos pero TODOS los

trabajos o funciones que debemos realizar los trataremos desde el sistema gestor de bases de datos, es decir SQL; en este caso utilizaremos el Query Analizer (Analizador de consultas). Para poder crear las funciones que luego llamaremos desde la aplicacin usaremos el concepto de Procedimientos Almacenados (Store Procedure). El comportamiento de ellos es el siguiente:
CREATE PROCEDURE ProcAltaBOLSASDETRABAJO (@IdEmpresa [int], @Nombre_Puesto [varchar](50), @Ciudad [varchar](30), AS DECLARE @Fecha_Inicio smalldatetime DECLARE @Fecha_Fin smalldatetime SET DATEFORMAT dmy SELECT @Fecha_Inicio = (select CONVERT(smalldatetime, @Fecha_I)) SELECT @Fecha_Fin = (select CONVERT(smalldatetime, @Fecha_F)) BEGIN BEGIN TRAN INSERT INTO [BOLSAS DE TRABAJO] ( [IdEmpresa], [Nombre Puesto], [Descripcion Puesto], [Telefono], [e-mail], [Sitio Web], [Provincia], [Ciudad], [Calle], [Numero], [Fecha Inicio], [Fecha Fin], [Contacto], [Estado] ) VALUES ( @IdEmpresa, COMMIT TRAN END @Nombre_Puesto, @Descripcion_Puesto, @Telefono, @e_mail, @Sitio_Web, @Provincia, @Ciudad, @Calle, @Numero, @Fecha_Inicio, @Fecha_Fin, @Contacto, @Estado ) @Descripcion_Puesto [varchar](300), @Telefono [varchar] (20), @e_mail [varchar](30), @Sitio_Web [varchar](150), @Provincia [varchar](20), @Calle [varchar](20), @Numero [varchar](20), @Fecha_I [varchar] (10), @Fecha_F [varchar] (10), @Contacto [varchar](255), @Estado [char](2) )

Este es un ejemplo en el cual se genera un SP (Store Procedure Procedimiento Almacenado) para dar de alta a los campos de una tabla2. Realicemos el anlisis del mismo. CREATE PROCEDURE nombre_del_procedimiento (@variables_que_ingresan, @otra_variable) AS Aqu continua el cuerpo del procedimiento, en donde podemos definir (declarar) variables por medio de la palabra reservada DECLARE y anteponiendole el smbolo @ para indicar que son VARIABLES y no campos de una tabla. Luego comenzamos con el procedimiento invocando un BEGIN y para indicar que es el fin del mismo lo hacemos por medio de la clusula END. La sentencia INSERT INTO es la que nos sirve para insertar los campos de nuestra tabla y funciona de la siguiente manera. INSERT INTO [nombre_tabla] ([cada_campo], [campo1]) VALUES (@variable1, @variable2, @etc)
2

ACLARACION!!!!! Lo que esta en negritas es codigo del lenguaje SQL, asi que debemos respetarlo!!!

Otro ejemplo de procedimiento:


CREATE PROCEDURE ProcBajaEGRESADO (@IdEgresado int) AS IF (SELECT Baja FROM EGRESADOS WHERE IdEgresado = @IdEgresado)= 'SI' BEGIN RAISERROR ('El egresado ya esta dado de baja',15,2) RETURN END ELSE BEGIN BEGIN TRAN UPDATE EGRESADOS SET Baja = 'SI' WHERE ([IdEgresado] = @IdEgresado) COMMIT TRAN END

En este ejemplo mostramos cuando se da de baja a un dato pero no se elimina de la base de datos, sino que se modifica uno de sus parmetros. Para este caso usamos la estructura de seleccin IF... ELSE con la que verificamos el estado del campo a modificar y con la sentencia UPDATE [tabla] SET campo = VALOR WHERE condicion_de_validacin, hacemos la actualizacin (UPDATE) del campo/s que deseemos modificar. Otro ejemplo en el que generamos un procedimiento que ELIMINA un registro de nuestra tabla.
CREATE PROCEDURE ProcBorrarBOLSASDETRABAJO (@IdPuesto [int]) AS IF (@IdPuesto IS NULL ) BEGIN RAISERROR('Seleccione un puesto para borrar',15,2) RETURN 1 END ELSE BEGIN BEGIN TRAN DELETE [BOLSAS DE TRABAJO] WHERE ( [IdPuesto] COMMIT TRAN END = @IdPuesto)

Como podemos notar la estructura del procedimiento es similar a la vista anteriormente, en cambio aqu utilizamos la sentencia DELETE [tabla] WHERE condicin con la cual lo que estamos haciendo es eliminar (DELETE) todo los datos del registro que cumpla con la condicin establecida en la clusula WHERE.

Ahora vemos un ejemplo de bsqueda:


CREATE PROCEDURE ProcBuscarEgresadoNyA (@Apellido varchar (25), @Nombre varchar (25) ) AS DECLARE @Documento varchar (10) IF (@Apellido IS NULL OR @Nombre IS NULL) BEGIN RAISERROR ('Ingrese todos los datos',15,2) RETURN 1 END IF (EXISTS (SELECT Apellido, Nombre FROM EGRESADOS WHERE Apellido LIKE @Apellido AND Nombre LIKE @Nombre)) BEGIN SELECT Documento From Egresados WHERE (Apellido like @Apellido AND Nombre like @Nombre) RETURN 1 END ELSE BEGIN SELECT Documento =NULL END

Para realizar una bsqueda usamos la sentencia SELECT campo1, campo2 FROM [tabla] WHERE condicin. En el ejemplo anterior utilizamos la bsqueda por medio de cadenas de caracteres por lo que los operadores de comparacin para este caso es LIKE. Otro ejemplo de esta tarea es hacer un SELECT * FROM tabla, lo cual nos devolvera todos los registro de una tabla, pero para el caso anterior nosotros estamos seleccionando los registros cuyo nombre y apellido sean los mismos que enviamos como parmetros. Por ltimo veamos un procedimiento que nos permita modificar los datos de un registro determinado.
CREATE PROCEDURE ProcModificarTRANSPARENTE (@IdTransparente int, @Aviso varchar (300), @fecha [varchar] (10)) AS DECLARE @Fechaaux smalldatetime SET DATEFORMAT dmy SELECT @Fechaaux = (select CONVERT(smalldatetime, @Fecha)) IF(@Aviso = NULL OR @Fecha = NULL) BEGIN RAISERROR('Debe suministrar todos los datos',15,2)

RETURN 1 END ELSE BEGIN BEGIN TRAN UPDATE TRANSPARENTE SET Aviso = @Aviso, Fecha = @Fechaaux WHERE (IdTransparente = @IdTransparente) COMMIT TRAN END

Esto es muy similar a lo analizado en el caso de una baja, podemos ver que la funcin UPDATE modifica en la tabla y para asignarle los valores utiliza la clusula SET.

Espero que esto sea el final!!!!


Ahora llego el momento de conectar nuestra base de datos con la aplicacin realizada en visual basic. Lo que tendremos que hacer es lo siguiente: Crearemos un archivo de texto dentro de la carpeta en donde estamos almacenando todos los formularios que hemos creado para la aplicacin. En este archivo de texto guardaremos la ruta de acceso a la base de datos que estamos utilizando.
"Provider=SQLOLEDB.1;Integrated Catalog=nombre_base_datos" Security=SSPI;Persist Security Info=False;Initial

Esta

instruccin

esta

indicndole

en

que

aplicacin

esta

la

base

de

datos

(Provider=SQLOLEDB.1), indica el tipo de integridad de la base de datos (Integrated Security), la seguridad (Persist Security Info) y cual es la base de datos a la que debe acceder (Initial Catalog) Una vez creado esto, en nuestra aplicacin debemos tener una ventana principal, en ella tendremos que generar una funcin que nos devuelva la cadena de conexin a la base de datos. La funcin seria de la siguiente manera:
Public Function DameCadenaConexion() As String 'Lee la sede desde un archivo.txt Dim a As String On Error GoTo error Open App.Path & "\archivo.txt" For Input As #1 Input #1, a Close #1 On Error GoTo 0 DameCadenaConexion = a Exit Function

error: DameCadenaConexion = " No se pudo abrir el archivo" End Function

Luego desde en el mismo formulario principal debemos hacer la apertura de la base de datos en el evento LOAD del formulario, que seria:
Private Sub Form_Load() On Error GoTo error DB.Open DameCadenaConexion On Error GoTo 0 Exit Sub error: MsgBox "No se pudo abrir la base de datos", vbCritical, "Web Egresados" Unload Me End Sub

Como podemos notar aqu utilizamos la funcin DB.Open, debemos aclarar que nuestra aplicacin debe tener un modulo (no modulo de clase) en donde se definirn parmetros globales como ser: Public DB As New ADODB.Connection que es una conexin a bases de datos ADODB; al crear esta variable de este tipo tenemos las siguientes propiedades: Attributes. BeginTrans. Cancel. Close: Realiza el cierre de un archivo, base de datos o cualquier documento. Commandtimeout. commitTrans. ConnectionString. ConnectionTimeout. CursorLocation. DefaultDatabase. Errors. Execute. IsolationLevel. Mode. Open: Realiza la apertura de un archivo, base de datos o cualquier documento. OpenSchema. Properties. Provider. RollbackTrans. State.

Version.

Para cargar, modificar, eliminar o realizar bsquedas en la base de datos deberemos definir mdulos de clases dentro de nuestra aplicacin; es decir, tendremos que crear un modulo de clases por cada entidad fuerte que tenga nuestra aplicacin. Por ejemplo: en el caso del sistema de egresados, tuvimos que definir los mdulos Bolsas de trabajo, egresados, empresas, facultad, foro, mensaje y transparente. En cada uno de estos mdulos de clases estn las funciones que relacionan las bases de datos con la aplicacin, veamos por ejemplo el caso del modulo de clases transparente.
'Atributos Public idtransparente As Long Public Aviso As String Public Fecha As String Public Function DameTransparente(idtransparente) As Transparente Dim rs As New ADODB.Recordset Dim TR As New Transparente rs.CursorLocation = adUseClient rs.Open "ProcBuscarTransparenteID " & idtransparente & "", DB, adOpenStatic, adLockBatchOptimistic TR.idtransparente = rs!idtransparente TR.Aviso = rs!Aviso TR.Fecha = rs!Fecha Set DameTransparente = TR rs.Close End Function

Podemos ver como en este modulo lo primero que hicimos es definir TODOS los atributos de la clase, es decir tenemos los mismos atributos que en la tabla transparente. A continuacin definimos una funcin dame transparente que realiza una bsqueda de un mensaje en particular seleccionado por el idtransparente. Para este caso debemos notar la definicin de una variable rs de tipo ADODB.Recordset, esta variable es la que almacenar el dato devuelto por el procedimiento al que invoquemos. Con la sentencia rs.open haremos el llamado al procedimiento, obsrvese que dicha invocacin es por medio de cadena de caracteres en donde debemos pasarle todos los parmetros como esta definido en el procedimiento almacenado que hemos creado. Una vez que lo invocamos lo que debemos hacer es asignar los valores a variables de la aplicacin para luego poder mostrrselas al usuario. No nos olvidemos de que cada vez que abrimos un recordset, debemos cerrarlo. Otro ejemplo que podemos mostrar es el modelo de clases de Facultad:
'Funciones Public Function AltaTransparente(TR As Transparente) As String Dim er As ADODB.error

Dim texto As String AltaTransparente = "OK" On Error GoTo error DB.Execute "ProcAltaTransparente " & "'" & TR.Aviso & "','" & TR.Fecha & "'" On Error GoTo 0 Exit Function error: For Each er In DB.Errors texto = texto & er.Description Next AltaTransparente = texto End Function

En este caso estamos realizando el alta de un dato. Podemos notar que aqu no utilizamos una variable tipo Recordset porque estamos realizando modificaciones a la base de datos y no consultas a registros, es por esto que debemos usar la sentencias DB.Execute que invocara la ejecucin del procedimiento solicitado. Vemos otro ejemplo de alta:
Public Function AltaEmpresas(E As Empresa) As String Dim er As ADODB.error Dim texto As String Dim respuesta Dim rs As New ADODB.Recordset AltaEmpresas = "OK" On Error GoTo error DB.Execute "ProcAltaEmpresas '" & E.Nombre_Empresa & "'," & _ "'" & E.Descripcion & "'," & _ "'" & E.Pais & "'," & _ "'" & E.Provincia & "'," & _ "'" & E.Ciudad & "'," & _ "'" & E.Calle & "'," & _ "'" & E.numero & "'," & _ "'" & E.Telefono & "'," & _ "'" & E.email & "'," & _ "'" & E.Sitio_Web & "'," & _ "'" & E.Nombre_de_Usuario & "'," & _ "'" & E.Contrasea & "'," & _ "'" & E.Baja & "'" On Error GoTo 0 Exit Function error: For Each er In DB.Errors texto = texto & er.Description Next

AltaEmpresas = texto End Function

Veamos un ejemplo de la bsqueda de datos:


Public Function BuscarEmpresas(txt As String) As ADODB.Recordset Dim rs As New ADODB.Recordset Dim er As ADODB.error On Error GoTo error rs.CursorLocation = adUseClient rs.Open "ProcBuscarEmpresas '" & txt & "'", DB, adOpenStatic, adLockBatchOptimistic On Error GoTo 0 Set BuscarEmpresas = rs Exit Function error: For Each er In DB.Errors texto = texto & er.Description Next MsgBox texto, vbInformation, "Buscar Empresas" End Function

Veamos que sucede cuando queremos modificar datos que se encuentran en la base de datos:
Public Function ModificarTransparente(TR As Transparente) As String Dim er As ADODB.error Dim texto As String ModificarTransparente = "OK" On Error GoTo error DB.Execute "ProcModificarTransparente " & TR.idtransparente & ",'" & TR.Aviso & "','" & TR.Fecha & "'" On Error GoTo 0 Exit Function error: For Each er In DB.Errors texto = texto & er.Description Next ModificarTransparente = texto End Function

Ac podemos ver que como estamos haciendole modificaciones a la base de datos tambien usamos el comando DB.Execute y que suceder cuando tengamos que eliminar un elemento de nuestra base de datos:
Public Function BorrarTransparente(TR As Transparente) As String Dim er As error Dim texto As String Dim respuesta BorrarTransparente = "OK"

respuesta = MsgBox("Desea borrar el Aviso seleccionado ?", vbYesNo + vbInformation, "Transparente") If respuesta = vbNo Then Exit Function On Error GoTo error DB.Execute "ProcBorrarTransparente " & TR.idtransparente On Error GoTo 0 Exit Function error: For Each er In Errors texto = texto & er.Description Next BorrarTransparente = texto End Function

Ahora vemos como podemos hacer para cargar datos en los controles del tipo Listbox:
Public Sub CargarPais(cmb As ComboBox) Dim rs As New ADODB.Recordset Dim i As Long i=0 rs.CursorLocation = adUseClient rs.Open "procpais ", DB, adOpenStatic, adLockBatchOptimistic Do While Not rs.EOF cmb.List(i) = rs!Pais i=i+1 rs.MoveNext Loop rs.Close End Sub

Como podemos notar, aqu hacemos un llamado al la funcin que nos devuelve una lista de valores y luego los recorremos con una estructura Do While y a cada valor que nos devuelve la base de datos, se la asignamos al ListBox.

Introduccin:
Cuando instalas SQL Server 2005 (tanto la versin completa como la versin Express), se aade un nuevo proveedor de bases de datos OLEDB: SQLNCLI. Ese proveedor lo tendrs que usar en tus cadenas de conexin en lugar de SQLOLEDB que es el que usars para acceder a una base de datos de SQL Server 2000 con Visual Basic 6.0.

Requisitos para el ejemplo


En este ejemplo vamos a usar un control FlexGrid para asignar un Recordset y mostrar los datos directamente. Por tanto, tendrs que crear un nuevo proyecto de Visual Basic 6.0 y agregar ese componente, el cual se muestra como: Microsoft Hierarchical FlexGrid Control 6.0 (SP4) (OLEDB) y en realidad es el control MSHFLXGD.OCX. Tambin tendrs que aadir una referencia a la librera de OLEDB, en mi caso he usado Microsoft ActiveX Data Objects 2.8 Library, pero supongo que con otra versin anterior funcionar, pero no lo he probado, y como esa referencia est disponible despus de instalar el SQL Server 2005 Express, pues... para qu complicarnos? Dependiendo de la forma en que quieras acceder a la base de datos, necesitars (como es de suponer) una base de datos de SQL Server 2005, por ejemplo la base de datos "pubs". Si lo que pretendes es acceder a un fichero con la extensin .mdf, pues tendrs que tener el fichero al que quieres acceder. Es decir una base de datos de SQL Server 2005 en un fichero fsico, el cual puedes guardar en el mismo directorio del ejecutable o donde ms te plazca, que esa es una de las ventajas de SQL Server 2005: el poder usar un fichero de base de datos directamente, con lo que no necesitas distribuir una base de tipo Access.

El cdigo de ejemplo
En el cdigo de ejemplo, te voy a mostrar las dos formas de acceder.

1.- Acceder a una base de una instancia


En el caso de la base de datos "pubs", la cadena de conexin ser la siguiente:
Provider=SQLNCLI; Initial Catalog=pubs; Data Source=(local)\SQLEXPRESS; integrated security=SSPI; persist security info=True;

En este caso, la base de datos se supone que est en la instancia SQLEXPRESS del servidor del equipo actual, si no es as, tendrs que cambiar el valor de Data Source. La base de datos es pubs, si no fuera esa, cambia el nombre asignado a Initial Catalog.

La autenticacin usada es la de Windows, si no fuera esa, tendrs que indicar el usuario y el password y cambiar adecuadamente el valor de Integrated Security, aqu tienes un ejemplo de cmo "formar" una cadena de conexin a una base de datos de SQL Server. Suponiendo que la conexin a la base de datos la hacemos desde el evento Click de un botn y que la cadena de seleccin es SELECT * FROM authors, para mostrar los datos en el control FlexGrid (llamado MSHFlexGrid1), el cdigo sera el siguiente:
Private Sub btnConectar_Click() ' La conexin a la base de datos Dim cn As ADODB.Connection Set cn = New ADODB.Connection ' Para la cadena de seleccin Dim sSelect As String ' Para una base de datos normal: sSelect = "SELECT * FROM authors" cn.Open "Provider=SQLNCLI; " & _ "Initial Catalog=pubs; " & _ "Data Source=(local)\SQLEXPRESS; " & _ "integrated security=SSPI; persist security info=True;" ' El recordset para acceder a los datos Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset ' Abrir el recordset de forma esttica, no vamos a cambiar datos rs.Open sSelect, cn, adOpenStatic ' Permitir redimensionar las columnas MSHFlexGrid1.AllowUserResizing = flexResizeColumns ' Asignar el recordset al FlexGrid Set MSHFlexGrid1.DataSource = rs rs.Close cn.Close End Sub

2- Acceder a una base de un fichero


Para acceder a una base de datos que est en un fichero, necesitars indicar la ruta (path) en la que est ese fichero con la extensin .mdf. En este ejemplo, esa ruta est en la variable sBase. La cadena de conexin sera la siguiente:
Provider=SQLNCLI; AttachDBFileName= ruta completa del fichero de la base de datos; Data Source=(local)\SQLEXPRESS; integrated security=SSPI; persist security info=True;

Como es de suponer, el nombre (y el directorio completo) de la base de datos es lo que tienes que asignar a AttachDBFileName. Adems debes indicar en Data Source el nombre de la instancia de SQLEXPRESS que se usar para acceder a esa base de datos, al menos debes indicar una instancia vlida. En el siguiente cdigo tienes cmo usar una base de datos llamada PruebaPrecios.mdf que est en un directorio llamado bases del disco E. Esa base de datos debe tener una tabla llamada Clientes que es la que se usa en el siguiente ejemplo, que como en el cdigo del ejemplo anterior, se ejecuta desde el evento Click de un botn y asigna los datos al FlexGrid que tenemos en el formulario.
Private Sub btnConectar_Click() ' La conexin a la base de datos Dim cn As ADODB.Connection Set cn = New ADODB.Connection ' Para la cadena de seleccin Dim sSelect As String ' Para usar un fichero directamente: Dim sBase As String ' Poner aqu el path y el nombre de la base sBase = "E:\bases\PruebaPrecios.mdf" ' Y la cadena de seleccin adecuada sSelect = "SELECT * FROM Clientes" ' cn.Open "Provider=SQLNCLI; " & _ "AttachDBFileName=" & sBase & "; " & _ "Data Source=(local)\SQLEXPRESS; " & _ "integrated security=SSPI; persist security info=True;" ' El recordset para acceder a los datos Dim rs As ADODB.Recordset

Set rs = New ADODB.Recordset ' Abrir el recordset de forma esttica, no vamos a cambiar datos rs.Open sSelect, cn, adOpenStatic ' Permitir redimensionar las columnas Me.MSHFlexGrid1.AllowUserResizing = flexResizeColumns ' Asignar el recordset al FlexGrid Set Me.MSHFlexGrid1.DataSource = rs rs.Close cn.Close End Sub

CONEXIN DE BASE DE DATOS SQL EN VIUAL BASIC


Aqui explicamos paso a paso como conectarse a una base de datos SQL, usando el control ADO. Por supuesto, que si se quiere hacer la conexin directamente desde el cdigo, una forma rpida y fcil de obtener la cadena de conexin es usar, precisamente, el control ADO y, una vez que la conexin est establecida, copiar la cadena desde el textbox del dilogo. En este tutorial, supongo que los drivers OLEDB para Postgre estn instalados. En la instalacin de Postgre para Window ya vienen incluidos, slo que la conectividad con ADO no esta documentada (o al menos yo no la encontr), como s lo est la conectividad con .net. Paso 1 El primer paso es agregar el control ADO al proyecto en el men Paso 2 En el dilogo de para agregar componentes que se abre, tildar la casilla de Microsoft ADO Data Control 6.0 (OLEDB), y hacer clic en el botn Aceptar. Project->Components.

Paso 3

Una vez terminado el Paso 2 deber aparecer en la caja de herramientas el cono del control ADO. Hay que pincharlo y arrastrarlo hasta el formulario.

Paso 4 Hacer clic con el botn

secundario del mouse y en el menu contextual elegir ADODC Properties Paso 5 Entonces se abrir el dilogo de propiedades personalizadas del control con distintas solapas . En la solapa General (la primera) marcar la opcin Use Connection String, y despus hacer clic en el botn Build..., para pasar al asistente de contruccin de la cadena.

Paso 6 Despus de hacer clic en Build aparece un dilogo de propiedades de la cadena de conexin. En este, el primer paso es elegir el proveedor de datos en la solapa, justamente, Provider. En este caso PostgreSQL OLEDB Provider. Una vez elegido el proveedor de datos hacer clic en Next >> para pasar a la solapa Connection.

Paso 7 En la solapa Connection se escriben los datos de la connexin. a). Data Source: el nombre del servidor de base de datos. Si est en la misma PC se puede poner localhost; b). Location: el nombre de la base de datos; c). User Name: nombre del usuario; d). Password: contrasea.

Con todos los datos completos hacer clic en Aceptar y listo...

Paso 8

Haciendo clic en el botn Test Connection deber aparecer un mensaje diciendo quela conexin fu exitosa.

La cadena de conexin desde el cdigo Como dije al principio una forma fcil de obtener la cadena de conexon es usar un control ADO y despus copiar la cadena desde el dilogo del Paso 5. Se obtendra algo parecido a lo siguiente: Provider=PostgreSQL.1;Password=passw;User ID=postgres;Data Source=localhost;Location=prueba;Extended Properties=""

Você também pode gostar