Sección de tutoriales y manuales vb
Nota: Esta es una guía muy básica sobre el uso de Microsoft JET sql, por lo tanto se obvian muchos temas, para una información detallada, podés ojear la referencia en el archivo llamado JETSQL35.HLP que se instala con Visual Basic. También podés desde la siguiente página descargar otro manual de sql
La instrucción SELECT permite obtener un conjunto de registros de una o varias tablas especificadas en la cláusula o sentencia SQL. SELECT no modifica datos en una base de datos, solo extrae información
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 específicos:
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
SELECT FROM en varias tablas
Para consultar a mas de una tabla se antepone el nombre de la tabla, y luego se referencia el campo mediante un punto, por ejemplo:
"SELECT Clientes.nombre, Productos.Nombre FROM
clientes, Productos WHERE Clientes.nombre = Productos.nombre"
Cláusula WHERE
Esta cláusula, lo que permite es especificar cuales registros de las tablas indicadas en la cláusula FROM se verán afectados por la instrucción 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 cláusula 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
Ordenar el conjunto de registros - Order By
Este ejemplo ordena los registros por el campo Localidad en forma Ascendente usando la instrucción ORDER BY
Sq = "SELECT Telefono, Localidad FROM Clientes ORDER BY Localidad ASC"
Para hacerlo en forma Descendente se utliza DESC. Por Ejemplo:
sq = "SELECT Telefono, Localidad FROM Clientes ORDER BY Localidad DESC"
Función Count - Contar registros
Con esta función podemos contar registros , dependiendo como especifiquemos la consulta, es decir los criterios, por ejemplo el siguiente código devuelve el total de registros de la tabla Clientes, donde el campo Nombre sea igual a "Mariano"
rst.Open "SELECT Count(Nombre) as NRegistros
FROM Clientes WHERE Nombre = 'Mariano'"
'Mostramos la cantidad
MsgBox rst.Fields("NRegistros")
Función Max y Min
Max y Min devuelven un valor máximo o mínimo de una consulta de selección. El siguiente ejemplo, selecciona el Cliente (campo Nombre ) que mas ha gastado (consulta el campo Gastos). y muestra ese registro en un Datagrid llamado DataGrid1
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
'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 código fuente sencillo que usa ado para poder obtener el valor máximo de un campo numérico : Función Max de sql con ado
Función SUM ( Sumar registros )
Con esta función obtenemos la suma de un conjunto de valores contenidos en un campo especificado al ejecutar una consulta. Por ejemplo, el siguiente código SUMA toda la columna Gastos y muestra ese valor en un mensaje
rst.Open "SELECT Sum(Gastos) As Total FROM Clientes",
_
base
'Mostramos la suma de todo la columna o campo Gastos
MsgBox rst.Fields("Total")
Función Avg ( Obtener promedios)
La función AVg Calcula el promedio de un conjunto de valores contenido en un campo especificado al hacer una consulta.
El siguiente código calcula el promedio de todos los registros de un Campo llamada Ganancias ubicado en una tabla Ventas y muestra el resultado en un mensaje
' Consulta para obtener el promedio
con Avg
sq = "SELECT Avg(Ganancias) As Promedio FROM Ventas"
'Abrimos el recordset
rst.Open sq, base
'Mostramos el promedio de todo la columna o campo Gastos
MsgBox rst.Fields("Promedio")
Este otro ejemplo es igual al anterior pero calcula la media o promedio en donde las ganancias sean mayores o iguales a 100
' Consulta para obtener el promedio
de las ganancias matores o iguales a 30
sq = "SELECT Avg(Ganancias) As Promedio FROM Ventas WHERE Ganancias
>= 30"
'Abrimos el recordset
rst.Open sq, base
'Mostramos El promedio
MsgBox rst.Fields("Promedio")
La instrucción Delete se utiliza para crear una consulta de eliminación registros de una o más tablas especificadas en una cláusula FROM y que la cláusula WHERE, si es que esta última existe.
La sintáxis de esta instrucción es la siguiente:
DELETE Campos FROM Latabla WHERE Elcriterio
Por ejemplo, el siguiente código 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 eliminación de datos con Delete
sq = "DELETE * FROM Clientes WHERE Nombre = 'Maria'"
'Abrimos el recordset y ejecutamos la consulta de eliminación
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 eliminación
de datos con Delete
sq = "DELETE * FROM Clientes WHERE Deudas <= 10"
'Abrimos el recordset y ejecutamos la consulta de eliminación
rst.Open sq, base
Importante En una instrucción DELETE, si no se especifica un criterio, se eliminan todos los registros. La siguiente instrucción elimina todos los datos de la tabla Clientes.
' Se elimian 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 instrucción 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. También se suele utilizar antes de eliminar, una consulta de selección, chequear los datos y luego proceder a la eliminación.
Nota : en la sección de código fuente de vb 6.0 hay algunos programitas simples que utilizan la instrucción delete de sql
Esta instrucción sirve para añadir un único registro a una tabla y utilizandola conjuntamente con Select From se pueden insertar varios al mismo tiempo. Al agregar un registro, este se inserta al final de la tabla.
La sintaxis es:
INSERT INTO Tabla (Campo1, Campo2, etc..) Values (valor1, valor2, etc..)
Importante: El orden de los valores y el orden de los campos deben coincidir.
El siguiente ejemplo agrega a una tabla llamada Productos, un nuevo producto llamado Bebidas y un valor para el campo Stock del mismo
' Agrega un nuevo registro
sq = " INSERT INTO Productos (NombreProducto, stock) VALUES ('Bebidas',
150);"
El siguiente ejemplo selecciona todos los registros de una tabla llamada productos e inserta todos ellos en otra tabla llamada NuevosProductos. ( Obviamente la tabla Nuevos productos debe existir )
' Consulta utilizando Insert Into
y Select From
sq = "INSERT INTO NuevosProductos SELECT * FROM Productos"
Nota : para insertar registros a una tabla que provienen de otra base de datos utilizar la cláusula IN.
La siguiente rutina inserta un nuevo registro con algunos valores, en una base de datos llamada Clientes.Mdb, ubicada en el App de la aplicación, en la tabla T_Clientes, que tiene los campos, Nombre, Apellido e Email
Para utilizar Ado agregar la referencia a Microsoft Activex Data Objects desde el menú referencias
Colocar un Command1 y el código fuente en el formulario
Option Explicit Private Sub Command1_Click() On Local Error GoTo ErrSub Dim path As String Dim sql As String Dim cn_ADO As ADODB.Connection Dim ctl As Control 'Path de la base de datos path = App.path & "\Clientes.Mdb" 'Crea un nuevo objeto connection Set cn_ADO = New ADODB.Connection 'Cadena de conexión cn_ADO.ConnectionString = _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & path & ";" & _ "Persist Security Info=False" 'Abre la base de datos Clientes.Mdb cn_ADO.Open ' 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 conexión Set cn_ADO = Nothing Exit Sub 'Error ErrSub: MsgBox Err.Description, vbCritical End Sub
Esta instrucción crea una consulta de actualización de datos que cambia los valores de los campos en una tabla concreta según el criterio específico.
Esta consulta actualiza en una tabla llamada Productos los campos NombreProducto y el Stock
' Actualiza todos los datos del campo
Stock,en el cual el campo _
NombreProducto es igual a Bebidas
sq = "UPDATE Productos SET Stock = 255 Where NombreProducto='Bebidas';"
Este otro ejemplo es exactamente igual, pro el Stock lo incrementa por 2
' Actualiza todos los datos del campo
Stock,en el cual el campo _
NombreProducto es igual a Bebidas
sq = "UPDATE Productos SET Stock = Stock * 2 Where NombreProducto='Bebidas';"
Update es muy útil cuando se desea actualizar de un saque muchos registros o registros de varias tablas al mismo tiempo. Nota: Una ves que se ejecuta la instrucción Update, no se pueden reestablecer los cambios
Con dicha Instrucción se pueden crear y definir nuevas tablas en una base de datos, incluyendo la estructura y campos.
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 vacía 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 conexión cn.ConnectionString = _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Path_base & ";" & _ "Persist Security Info=False" ' Abre la conexión a la base bd1 cn.Open ' Elimina la tabla Clientes si es que existe con la instrucción 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 conexión .Close End With End Sub
Nota: para modificar la estructura de una tabla existente ( campos, tipo de datos ), ver la instrucción ALTER TABLE
La operación Inner Join se utiliza para combinar registros de dos tablas pero siempre y cuando en ellas existan datos o valores coincidentes o iguales en algún campo en común 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 común 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 'Asignamos el recordset devuelto en un control Datagrid Set DataGrid1.DataSource = rst
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
Buscar en Recursos vb
Recursos visual basic - Buscar - Privacidad - Copyright © 2005 - 2009 - www.recursosvisualbasic.com.ar