Escolar Documentos
Profissional Documentos
Cultura Documentos
temas, para una informacin detallada, pods ojear la referencia en el archivo llamado JETSQL35.HLP que se instala con Visual Basic. Tambin pods desde la siguiente pgina descargar otro manual de sql
1 - Instruccin Select
La instruccin SELECT permite obtener un conjunto de registros de una o varias tablas especificadas en la clusula o sentencia SQL. SELECT no modifica datos en una base de datos, solo extrae informacin Por ejemplo para seleccionar todos los campos de una tabla llamada Tabla1: Dim consulta As String consulta = "Select * From Tabla1"
Para seleccionar uno o varios campos especficos: Dim consulta As String consulta = "Select Campo1,Campo2 From Tabla1"
El siguiente ejemplo selecciona de una tabla llamada Clientes, todos los registros de los campos Localidad y Telefono. Luego muestra los datos en un control Datagrid. El ejemplo utiliza ADO y se conecta a una base de datos llamada BD1.mdb ubicada en la carpeta del programa. Dim base As Connection, rst As Recordset, ruta As String Set base = New Connection Set rst = New Recordset ruta = App.Path & "\bd1.mdb" 'Abrimos la base de datos base.CursorLocation = adUseClient base.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & ruta ' Seleccionamos todos los valores de los campos Telefono y Localidad _ de la tabla Clientes rst.Open "SELECT Telefono, Localidad FROM Clientes", base, adOpenStatic, adLockOptimistic 'Asignamos el recordset devuelto en un control Datagrid Set DataGrid1.DataSource = rst
Clusula WHERE
Esta clusula, lo que permite es especificar cuales registros de las tablas indicadas en la clusula FROM se vern afectados por la instruccin SELECT, UPDATE o DELETE. Por ejemplo: La siguiente sentencia selecciona todos registros de la tabla Clientes donde el campo Deuda sea menor o igual a 100 sq = "SELECT * FROM clientes WHERE Deuda <= 100;" Dentro de la clusula Where podemos utilizar operadores , And, Or, >, <, <> , el Like etc..., para formar los criterios en la consulta sql Lo siguiente selecciona los campos Nombre y Telefono de la tabla clientes donde el campo Nombre ( Nombres de los clientes ) comienzan con la letra M hasta la R sq = "SELECT Nombre, Telefono FROM Clientes WHERE Nombre Like '[M-R]*';" En este enlace hay un simple ejemplo que usa el operador Like para filtrar un recordset Ado al seleccionar un item de un control tabstrip : Ver ejemplo
Para hacerlo en forma Descendente se utliza DESC. Por Ejemplo: sq = "SELECT Telefono, Localidad FROM Clientes ORDER BY Localidad DESC"
'Abrimos la base de datos base.CursorLocation = adUseClient base.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & ruta 'Abrimos el recordset y Ejecutamos la consulta rst.Open "SELECT Max(Gastos) As Maximo, Min(Gastos) As Minimo FROM Clientes", base 'Mostramos el resultado Maximo y Minimo del campo Gastos MsgBox rst.Fields("Maximo") MsgBox rst.Fields("Minimo") Este otro ejemplo selecciona El valor Minimo del campo Gastos, donde el Nombre del Cliente sea Mariano "SELECT Min(Gastos) As Maximo FROM Clientes WHERE Nombre = 'Mariano';" Nota: en este enlace hay un cdigo fuente sencillo que usa ado para poder obtener el valor mximo de un campo numrico : Funcin Max de sql con ado
MsgBox rst.Fields("Promedio")
2 - Instruccin DELETE
La instruccin Delete se utiliza para crear una consulta de eliminacin registros de una o ms tablas especificadas en una clusula FROM y que la clusula WHERE, si es que esta ltima existe. La sintxis de esta instruccin es la siguiente: DELETE Campos FROM Latabla WHERE Elcriterio Por ejemplo, el siguiente cdigo elimina Todos los registros de una tabla llamada Clientes donde el campo Nombre sea igual a Maria base.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & ruta ' Consulta de eliminacin de datos con Delete sq = "DELETE * FROM Clientes WHERE Nombre = 'Maria'" 'Abrimos el recordset y ejecutamos la consulta de eliminacin rst.Open sq, base Este otro ejemplo elimina todos los valores o datos de la tabla Clientes donde el campo Deudas sea menor o igual a 10 ' Consulta de eliminacin de datos con Delete sq = "DELETE * FROM Clientes WHERE Deudas <= 10" 'Abrimos el recordset y ejecutamos la consulta de eliminacin rst.Open sq, base Importante En una instruccin DELETE, si no se especifica un criterio, se eliminan todos los registros. La siguiente instruccin elimina todos los datos de la tabla Clientes. ' Se eliminan todos los datos de la tabla sq = "DELETE * FROM Clientes" En el caso anterior, al no especificar un criterio, como se dijo, se elimina de la tabla los registros pero la estructura de la tabla se mantiene. Para eliminar una tabla con la estructura completa y todos sus datos se utiliza la instruccin DROP TABLE, por ejemplo: ' Elimina la tabla completamente de la base de datos sq = "DROP TABLE Clientes"
Importante: al eliminar datos utilizando DELETE o DROP no se pueden restaurar, por lo tanto es recomendable siempre tener copia y respaldo de dichos datos. Tambin se suele utilizar antes de eliminar, una consulta de seleccin, chequear los datos y luego proceder a la eliminacin. Nota : en la seccin de cdigo fuente de vb 6.0 hay algunos programitas simples que utilizan la instruccin delete de sql
Nota : para insertar registros a una tabla que provienen de otra base de datos utilizar la clusula IN.
' Consulta Sql para insertar los registros ' en la tabla Clientes, en la Tabla T_Clientes sql = "INSERT INTO T_Clientes " & _ "(Nombre, Apellido, Email) VALUES ('Carlos','Gonsales', 'carlos@gmail.com')" 'Ejecuta la consulta cn_ADO.Execute sql, , adCmdText ' Cierra la base de datos cn_ADO.Close 'Elimina el objeto conexin Set cn_ADO = Nothing Exit Sub 'Error ErrSub: MsgBox Err.Description, vbCritical End Sub
Ejemplo 1
' Crea una tabla con dos campos de texto. sq = "CREATE TABLE Productos " & "(Nombre TEXT, Descripcion TEXT);"
Lo siguiente crea una nueva tabla llamada Clientes, con 2 campos: uno Nombre y otro Alta, de tipo Text y Fecha respectivamente sq = "CREATE TABLE Clientes" & "(Nombre TEXT, Alta DATETIME);"
Ejemplo 2:
Este es otro ejemplo utilizando ADO. y lo que hace es crear una tabla llamada Clientes con tres campos, IdCliente, Nombre y Apellido. Luego agrega tres registros. Para el ejemplo incluir la referencia a Microsoft Ado y colocar en la carpeta del proyecto una base de datos vaca de prueba llamada bd1.mdb Option Explicit Private Sub Command1_Click() Dim Path_base As String Dim cn As ADODB.Connection Path_base = App.Path & "\bd1.mdb" 'Crea un nuevo objeto connection Set cn = New ADODB.Connection 'Cadena de conexin cn.ConnectionString = _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Path_base & ";" & _ "Persist Security Info=False" ' Abre la conexin a la base bd1 cn.Open ' Elimina la tabla Clientes si es que existe con la instruccin DROP On Error Resume Next cn.Execute "DROP TABLE Clientes" On Error GoTo 0 With cn ' Ejecuta la consulta: Crea la tabla con los tres campos .Execute "CREATE TABLE Clientes(" & _ "IDCliente INTEGER NOT NULL," & _ "Nombre VARCHAR(40) NOT NULL," & _ "Apellido VARCHAR(40) NOT NULL)" ' Inserta tres registros .Execute "INSERT INTO Clientes VALUES (1, 'Pedro', 'Gonsales')" .Execute "INSERT INTO Clientes VALUES (2, 'Martin', 'Rodrigues')" .Execute "INSERT INTO Clientes VALUES (3, 'MAria', 'Marino')" 'Cierra la conexin .Close End With End Sub
Nota: para modificar la estructura de una tabla existente ( campos, tipo de datos ), ver la instruccin ALTER TABLE
6 - INNER JOIN
La operacin Inner Join se utiliza para combinar registros de dos tablas pero siempre y cuando en ellas existan datos o valores coincidentes o iguales en algn campo en comn entre las 2 tablas. El siguiente ejemplo selecciona y combina los registros de una tabla llamada Productos con otra tabla llamada NuevosProductos, donde el campo en comn es "Nombre". es decir devolver el conjunto de datos donde el campo Nombre de la tabla Productos coincida con el campo Nombre de la tabla NuevosProductos . Luego en el ejemplo se muestra el resultado en un control Datagrid: Dim base As Connection, rst As Recordset, ruta As String Set base = New Connection Set rst = New Recordset ruta = App.Path & "\bd1.mdb" 'Abrimos la base de datos base.CursorLocation = adUseClient base.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & ruta 'Consulta rst.Open "SELECT * FROM Productos " _ & "INNER JOIN NuevosProductos ON Productos.Nombre = NuevosProductos.Nombre", base
Nota: al combinar los datos de dos campos, estos deben ser de un tipo de dato similar, por ejemplo se pueden combinar entre Autonumerico y Long, pero no se puede entre single y Double, Single y String etc.. Lo que tampoco se puede hacer con al Utilizar Inner Join es combinar datos en el cual los campos son de tipo Ole o Memo