Você está na página 1de 29

Capítulo 3 Visual Basic II

Visual Basic - SQL (Structured Query Language - Lenguaje de Consulta Estructurado)


Lenguaje utilizado para consultar, actualizar y administrar bases de datos relaciónales. SQL se puede utilizar
para recuperar, ordenar y filtrar datos específicos que se van a extraer de la base de datos.
Puede utilizar instrucciones SQL SELECT en cualquier parte en que se acepte un nombre de tabla, un nombre
de consulta o un nombre de campo.

Comandos
Existen dos tipos de comandos SQL:

 Los DLL que permiten crear y definir nuevas bases de datos, campos e índices.

 Los DML que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos.

COMANDOS DLL
COMANDO Descripción
CREATE Utilizado para crear nuevas tablas, campos e índices
DROP Empleado para eliminar tablas e índices
Utilizado para modificar las tablas agregando campos o cambiando la definición de los
ALTER
campos.

COMANDOS DML
COMANDO Descripción
SELECT Utilizado para consultar registros de la base de datos que satisfagan un criterio determinado

Cláusulas
Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea seleccionar o manipular.
CLÁUSULA DESCRIPCIÓN
FROM Permite recuperar un conjunto de registros.
WHERE Utilizada para especificar las condiciones que deben reunir los registros que se van a
seleccionar
GROUP BY Utilizada para separar los registros seleccionados en grupos específicos

HAVING Utilizada para expresar la condición que debe satisfacer cada grupo
ORDER BY Utilizada para ordenar los registros seleccionados de acuerdo con un orden específico

INSERT Utilizado para cargar lotes de datos en la base de datos en una única operación.
UPDATE Utilizado para modificar los valores de los campos y registros especificados
DELETE Utilizado para eliminar registros de una tabla de una base de datos

Operadores Lógicos
OPERADOR USO
Es el "y" lógico. Evalúa dos condiciones y devuelve un valor de verdad sólo si ambas son
AND
ciertas.
Es el "o" lógico. Evalúa dos condiciones y devuelve un valor de verdad si alguna de las
OR
dos es cierta.
NOT Negación lógica. Devuelve el valor contrario de la expresión.

Operadores de Comparación
OPERADOR USO
<,>,<>,<=,>=,= Menor que, Mayor que, Distinto de, Menor ó Igual que, Mayor ó Igual que, igual que
BETWEEN Utilizado para especificar un intervalo de valores.
LIKE Utilizado en la comparación de un modelo
In Utilizado para especificar registros de una base de datos

Jean & Dennis Pichilingue Romero Página: 38


Capítulo 3 Visual Basic II

Operaciones de actualización
Inserción de filas
Permite adicionar registros a un objeto recordset.
Inserción de una fila
INSERT INTO <nombre_tabla> [(<lista_de _atributos>)] VALUES (<valor_1>, <valor_2>,...,<valor_n>);
Los atributos que no aparezcan en lista_de_atributos quedarán con valor NULL (también puede aparecer en
VALUES el valor NULL). Es obligatorio especificar un valor para los atributos que estén definidos como "NOT
NULL".

Inserción de varias filas


INSERT INTO <nombre_tabla> [(<lista_de_atributos>)] ( <cláusula SELECT> )
Los atributos de ambas listas de atributos deben coincidir en el mismo dominio. La cláusula "SELECT" especifica
una consulta cuyo resultado (filas) se insertará en la tabla especificada.

Modificación de filas
Permite modificar uno ó un conjunto registros de un objeto recordset.
UPDATE <nombre_tabla> ST <atributo_1> = <valor_1>, <atributo_2> = <valor_2>,
...........
<atributo_n> = <valor_n> [WHERE <condición>];

La modificación afectará a todas las filas que cumplan la condición, si se especifica ésta (la cláusula WHERE
expresa la condición de búsqueda en una consulta y se verá posteriormente). Si no se especifica condición, la
modificación afectará a todas las filas de la tabla. El valor que se asigne a un atributo puede ser una constante, o
el resultado de una subconsulta (que deberá ir entre paréntesis).

Continúa Aplicación1: Ahora adicionaremos el procedimiento para agregar - actualizar registros


El procedimiento de adición de registros se compone de dos acciones: Nuevo y Grabar

1. Agregue estos procedimientos a su módulo.

‘Procedimiento que permite llenar un combobox de elementos extraídos de un campo de


datos, que pertenece una tabla, la misma que forma parte de una base de datos.

Al procedimiento le asignaremos como nombre: Llenarcombo


Tendrá como argumentos: El nombre del combo, el nombre de la tabla, y el nombre del
campo de datos.

Public Sub LlenarCombo(c As ComboBox, tabla As String, campo As String)


Dim temp As New Recordset
Dim SQL As String
SQL = "select " + campo + " from " + tabla
temp.Open SQL, cn, adOpenStatic
c.Clear
Do While Not temp.EOF
If Not IsNull(temp(0)) Then c.AddItem temp(0)
temp.MoveNext
Loop
End Sub

Public Sub Limpiar(F As Form)


‘Procedimiento que permite limpiar el contenido de los objetos textbox de cualquier
‘formulario. Utiliza como argumento el nombre del formulario del cual limpiará sus
‘objetos textbox.

Dim ctrl As Object

Jean & Dennis Pichilingue Romero Página: 39


Visual Basic - SQL(Structured Query Language)

For Each ctrl In F.Controls


If TypeOf ctrl Is TextBox Then
ctrl.Text = ""
End If
Next
End Sub

2. Diseño del formulario

SSTab1

Frame1

Frame2

Frame3

Frame4

3. Agregue estos procedimientos a su formulario

Public Sub activardesplazamiento()


‘Este procedimiento permite activar los botones de desplazamiento
For a = 0 To 3
CMDDESPLAZA(a).Enabled = True
Next
End Sub

Public Sub desactivardesplazamiento()


‘Este procedimiento permite desactivar los botones de desplazamiento
For a = 0 To 3
CMDDESPLAZA(a).Enabled = False
Next
End Sub

Private Sub CmdNuevo_Click()


‘Este procedimiento prepara el entorno del formulario para agregar nuevos
‘registros.

Frame1.Enabled = True 'Frame de los campos de datos


Frame2.Enabled = False 'Frame de los botones de desplazamiento
CmdNuevo.Enabled = False
CmdGrabar.Enabled = True
Call Limpiar(Agenda) ‘Limpia los controles textbox del formulario agenda
TxtDistrito = "" ‘Limpia el combobox txtdistrito
TxtGrado = "" ‘Limpia el combobox txtgrado

TxtNombre.SetFocus
CmdGrabar.Caption = "&Grabar" ‘Asigna como titulo “Grabar”
End Sub

Página: 40
Capítulo 3 Visual Basic II

Private Sub CmdGrabar_Click()


‘Proc. que permite adicionar y actualizar los registros de la tabla “data”

‘Primero. Verifica que todos los controles de datos tengan un valor


If TxtNombre = "" Then
MsgBox ("DEBE INGRESAR NOMBRE")
TxtNombre.SetFocus
Exit Sub
End If
If TxtApellido = "" Then
MsgBox ("DEBE INGRESAR SU APELLIDO")
TxtApellido.SetFocus
Exit Sub
End If
If TxtSueldo = "" Then
MsgBox ("DEBE INGRESAR SU SUELDO")
TxtSueldo.SetFocus
Exit Sub
End If
If TxtFecha = "" Then
MsgBox ("DEBE INGRESAR SU FECHA")
TxtFecha.SetFocus
Exit Sub
End If

‘Segundo. Pregunta si el titulo del control es “&Grabar”


If CmdGrabar.Caption = "&Grabar" Then
If MsgBox("DESEA GRABAR", vbYesNo) = vbYes Then ‘Si selecciona “Si”
reg.MoveLast ‘Se desplaza al último registro
TxtCodigo = reg("Codigo") + 1 ‘Autogenera el código

'Busca nombre de distrito en la tabla de distritos


Set regtem = cn.Execute("select * from distritos where nomdistrito = '" & TxtDistrito & "'")
xcoddistrito = regtem("coddistrito") ‘Guarda el codigo de distrito en una variable temporal

'Busca nombre de grado en la tabla de grados


Set regtem = cn.Execute("select * from grados where nomgrado = '" & TxtGrado & "'")
xcodgrado = regtem("codgrado") ‘Guarda el codigo de grado en una variable temporal

‘Guarda en la variable “xgraba” la cadena SQL de inserción de registro


xGraba = "insert into data values (" & Val(TxtCodigo) & ","
xGraba = xGraba + '"& TxtNombre &"','"& TxtApellido &"',"
xGraba = xGraba + "& Val(TxtSueldo) &",#"& CDate(TxtFecha) &"#,"
xGraba = xGraba + "& xcodgrado &","& xcoddistrito &")"

cn.Execute (xGraba) ‘Ejecuta la cadena SQL


reg.Requery ‘actualiza el recordset
CmdGrabar.Caption = "&Actualizar" ‘Cambia el titulo del botón grabar
End If

‘Tercero: ‘Si el titulo del botón CmdGrabar es igual a "&Actualizar" entonces se


‘realizará el procedimiento de actualización de datos del registro actual
Else
'Busca nombre de distrito en la tabla de distritos

Set regtem = cn.Execute("select * from distritos where nomdistrito = '" & TxtDistrito & "'")
xcoddistrito = regtem("coddistrito")

'Busca nombre de grado en la tabla de grados


Set regtem = cn.Execute("select * from grados where nomgrado = '" & TxtGrado & "'")
xcodgrado = regtem("codgrado")

‘Guarda en la variable “xActualiza” la cadena SQL de actualización de registro

xActualiza = "update data set nombre = '" & TxtNombre & "', "
xActualiza = xActualiza + "Apellido = '"& TxtApellido &"', "
xActualiza = xActualiza + "sueldo = "& Val(TxtSueldo) &","

Jean & Dennis Pichilingue Romero Página: 41


Visual Basic - SQL(Structured Query Language)

xActualiza = xActualiza + fechanacimiento = #"& CDate(TxtFecha) &"#,"


xActualiza = xActualiza + "codgrado = " & xcodgrado & ", "
xActualiza = xActualiza + "coddistrito = "& xcoddistrito &""
xActualiza = xActualiza + " where codigo = " & Val(TxtCodigo) & ""
cn.Execute (xActualiza) ‘Ejecuta la cadena SQL de actualización
reg.Requery ‘Actualiza el recordset
End If

‘Restaura el entorno del formulario


Frame3.Enabled = True
Frame2.Enabled = True
CmdNuevo.Enabled = True
End Sub

Eliminación de filas
Permite eliminar un ó un conjunto de registros de un objeto recordset.
DELETE FROM <nombre_tabla> [WHERE <condición>];

No se pueden eliminar partes de una fila. Si no aparece la cláusula "WHERE" se eliminarán todas las filas de la
tabla, no eliminándose la definición de ésta en el esquema.

Continúa Aplicación1: A su programa anterior agregarle el procedimiento para eliminar registros.


El procedimiento de eliminación de registros se compone una acción

1. Agregue este procedimiento a su formulario

Private Sub CmdEliminar_Click()


If reg.RecordCount > 0 Then
If MsgBox("DESEA ELIMINAR", vbYesNo) = vbYes Then
cn.Execute ("DELETE * FROM data where Codigo = " & Val(TxtCodigo) )
reg.Requery
If reg.BOF Or reg.EOF Then
MsgBox ("YA NO HAY REGISTROS")
Exit Sub
End If
reg.MoveFirst
Call mostrardatos
End If
End If
End Sub

Página: 42
Capítulo 3 Visual Basic II

Ejemplo: Mantenimiento de registros maestro detalle, utilizaremos la base de datos pedidos (la
base de datos pedidos es una versión recortada de la base de datos Neptuno, las tablas tienen menos campos)
y realizaremos el mantenimiento de la tabla pedidos – detalles de pedidos .
(Puede solicitar la base de datos pedidos.mdb en jefatura de laboratorio o puede utilizar la base de datos de
ejemplo : Neptuno.mdb )

Cuando usted registre un pedido se debe grabar un registro en la tabla de pedidos, y todos los detalles
agregados al Flexgrid deberán grabarse en la tabla de detalles de pedidos.
- La tabla de pedidos se relaciona con la tabla de clientes, empleados y compañías de envíos
- La tabla de detalles de pedidos se relaciona con la tabla de pedidos y productos

1. Modelo de datos

- La adición de un pedido sugiere la adición de uno o muchos detalles de pedidos.

- Como se observa en el modelo la consulta de un pedido mueve sus tres tablas relacionadas: clientes,
empleados, compañías de envíos.
- Cada detalle de pedido mueve la tabla productos.

regtemp rp

Clientes Pedidos Compañías de envíos

1 regtemp
Empleados
muchos

Detalles de Pedidos Productos

rd

2. Programa en un Modulo1.

General Declaraciones
Public cn As new Connection ‘Variable que se utilizará para conectarse a la BD
Public regtemp As New Recordset ‘Recordset par alas tables relacionadas
Public rp As Recordset ‘Recordset para la tabla pedidos
Public rd As Recordset ‘Recordset para la tabla detalles de pedidos

Jean & Dennis Pichilingue Romero Página: 43


Visual Basic - SQL(Structured Query Language)

Public Sub conexion() ‘Procedimiento para conectarse a la base de datos


CN.Open "provider=microsoft.jet.oledb.4.0;data source= " + App.Path + "\pedidos.mdb"
End Sub

Public Sub desplazamiento(rs As Recordset, operacion As Integer)


‘Permite desplazare por los registros. Operacion se refiere a los metodos de desplazamiento
Select Case operacion
Case 0: rs.MoveFirst
Case 1
rs.MovePrevious
If rs.BOF Then rs.MoveFirst
Case 2
rs.MoveNext
If rs.EOF Then rs.MoveLast
Case 3: rs.MoveLast
End Select
End Sub

‘Carga un control combobox con un campo de una tabla


Public Sub llenacombo(c As ComboBox, CAMPO As String, Tabla As String, Optional x As Integer)
Dim regtemp As New Recordset
Dim sql As String
sql = " select "
If x = 1 Then sql = sql + "distinct "
sql = sql + CAMPO + " from " + Tabla + " order by 1 "
regtemp.Open sql, CN, adOpenForwardOnly
c.Clear
Do While Not regtemp.EOF
If Not IsNull(regtemp.Fields(0)) Then c.AddItem regtemp.Fields(0)
regtemp.MoveNext
Loop
regtemp.Close
End Sub

Public Sub limpiar(ff As Form) ‘Limpia todos los controles textbox de un formulario
Dim ctrl As Object
For Each ctrl In ff.Controls
If TypeOf ctrl Is TextBox Then
ctrl.Text = ""
End If
If TypeOf ctrl Is ComboBox Then
ctrl.Text = ""
End If
Next
End Sub

3. Consideraciones al grabar su aplicación


No olvide crear una carpeta llamada pedidos en la unidad C:\
Entonces usted tendrá la carpeta: C:\pedidos.
En esta carpeta grabe su modulo1, form1, project1 y su base de datos pedidos.mdb

Página: 44
Capítulo 3 Visual Basic II
4. Diseño del formulario

Option1
Option2
Option3
Option4

Array de controles
cmddesplaza
Msf1

4. Programación del formulario

General Declaraciones
Dim fil As Integer 'Controla el cambio de fila en el control msflexgrid, proc. mostrar datos
Dim fila As Integer 'Controla el cambio de fila en el control msflexgrid, proc. agregadetalle
Dim totalg As single 'Totaliza los detalles de pedidos, por cada pedido

Private Sub Form_Load()


Call conexion
Set rp = New Recordset
rp.Open "select * from Pedidos", CN, adOpenKeyset
rp.MoveFirst
Set rd = New Recordset
rd.Open "select * from [detalles de pedidos]", CN, adOpenKeyset
Call mostrardatos
End Sub

Public Sub mostrardatos()


'Busca el idcliente y recupera datos del cliente
Set regtemp = CN.Execute("select * from clientes where idcliente = '" & rp("idcliente") & "'")
If Not IsNull(regtemp(4)) Then Text1 = regtemp(4)
If Not IsNull(regtemp(5)) Then Text2 = regtemp(5)
If Not IsNull(regtemp(6)) Then Text3 = regtemp(6)

'Busca el idempleado y recupera datos del empleado


Set regtemp = CN.Execute("select * from empleados where idempleado = " & rp("idempleado") & "")
If Not IsNull(regtemp(3)) Then Text4 = regtemp(3)
If Not IsNull(regtemp(4)) Then Text5 = regtemp(4)
If Not IsNull(regtemp(5)) Then Text6 = regtemp(5)

'Recupera datos del pedido


txtnumero = rp("Idpedido")
DTPicker1.Value = rp("Fechapedido")
DTPicker2.Value = rp("FechaEntrega")
DTPicker3.Value = rp("fechaEnvío")
Select Case rp("formaenvío")
Case 1: Option1.Value = True
Case 2: Option2.Value = True

Jean & Dennis Pichilingue Romero Página: 45


Visual Basic - SQL(Structured Query Language)

Case 3: Option3.Value = True


End Select
fil = 0
Dim total As single
total = 0
totalg = 0

'Recupera los datos de los detalles de pedidos


rd.MoveFirst
rd.Find "idpedido = " & rp("idpedido") & ""
Do While rp("idpedido") = rd("idpedido")
fil = fil + 1
msf1.Rows = fil + 1
msf1.TextMatrix(fil, 1) = rd("Idproducto")
'Busca el nombre del producto y recupera su precio
Set regtemp = CN.Execute("select nombreproducto from productos where idproducto=" & rd("idproducto") & "")
msf1.TextMatrix(fil, 2) = regtemp("nombreproducto")
msf1.TextMatrix(fil, 3) = rd("Preciounidad")
msf1.TextMatrix(fil, 4) = rd("cantidad")
total = rd("Preciounidad") * rd("cantidad")
msf1.TextMatrix(fil, 5) = total
totalg = totalg + total
rd.MoveNext
If rd.EOF Then Exit Sub
Loop

'Muestra los totales


txtsubtotal = Format(totalg, "###,###.00")
txtigv = Format(0.18 * totalg, "###,###.00")
txttotal = Format(totalg + Val(txtigv), "###,###.00")
End Sub

Private Sub cmddesplaza_Click(Index As Integer)


Call desplazamiento(rp, Index)
Call mostrardatos
End Sub

Private Sub txtbusqueda_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
rp.MoveFirst
rp.Find "idpedido=" & Val(txtbusqueda) & ""
If rp.BOF Or rp.EOF Then
MsgBox ("No encontro N°.de pedido")
rp.MoveLast
Else
Call mostrardatos
End If
End If
End Sub

Private Sub cmdnuevo_Click()


'Carga de datos los combos de clientes, empleados y productos
Call llenacombo(cmbcliente, "NombreCompañía", "clientes")
Call llenacombo(cmbempleado, "Apellidos", "empleados")
Call llenacombo(cmbproducto, "nombreproducto", "productos")

Call limpiar(formpedidos)
msf1.Rows = 1

'Desactiva los controles de desplazamiento


For a = 0 To 3
cmddesplaza(a).Enabled = False
Next
'Activa / Desactiva botones de comando
cmdgrabar.Enabled = True
cmdcancelar.Enabled = True
cmdagregadetalle.Enabled = True
cmdnuevo.Enabled = False

Página: 46
Capítulo 3 Visual Basic II
txtnumero.Enabled = False
End Sub

Private Sub cmbproducto_Click()


Set regtemp = CN.Execute("select preciounidad from productos where nombreproducto='" & cmbproducto & "'")
txtprecio = regtemp(0)
End Sub

Private Sub cmdagregadetalle_Click()


If cmbproducto.ListIndex = -1 Then
MsgBox ("debe elegir un producto")
Exit Sub
End If
If txtcantidad = "" Then
MsgBox ("debe ingresar cantidad")
txtcantidad.SetFocus
Exit Sub
End If
fila = fila + 1 'Controla el cambio de fila en el flexgrid
msf1.Rows = fila + 1
Set regtemp = CN.Execute("select idproducto from productos where nombreproducto='" & cmbproducto & "'")
msf1.TextMatrix(fila, 1) = regtemp("idproducto")
msf1.TextMatrix(fila, 2) = cmbproducto
msf1.TextMatrix(fila, 3) = txtprecio
msf1.TextMatrix(fila, 4) = txtcantidad
msf1.TextMatrix(fila, 5) = Val(txtprecio) * Val(txtcantidad)
txtprecio = ""
txtcantidad = ""
End Sub

Private Sub cmdgrabar_Click()


If MsgBox("Desea Grabar", vbYesNo) = vbYes Then
rp.MoveLast
txtnumero = rp("idpedido") + 1

'Busca nombre de cliente y captura su codigo


Set regtemp = CN.Execute("select IdCliente from clientes where NombreCompañía='" & cmbcliente & "' ")
xidcliente = regtemp("idcliente")

'Busca apellido de empleado y captura su codigo


Set regtemp = CN.Execute("select idempleado from empleados where apellidos='" & cmbempleado & "'")
xidempleado = regtemp("idempleado")

If Option1.Value = True Then xcompañia = 1


If Option2.Value = True Then xcompañia = 2
If Option3.Value = True Then xcompañia = 3

'Graba cabecera de pedido


xgraba = "insert into pedidos values(" & Val(txtnumero) & ",'" & xidcliente &
"'," & xidempleado & ",'" & DTPicker1.Value & "','" & DTPicker2.Value & "','" &
DTPicker3.Value & "'," & xcompañia & "," & Val(Text6) & ")"
CN.Execute (xgraba)
rp.Requery

'Grabar detalles de pedidos


For a = 1 To msf1.Rows - 1
xgrabadetalle = "insert into [detalles de pedidos] values (" &
Val(txtnumero) & "," & Val(msf1.TextMatrix(a, 1)) & ",'" & Val(msf1.TextMatrix(a,
3)) & "'," & Val(msf1.TextMatrix(a, 4)) & ")"
CN.Execute (xgrabadetalle)
Next
rd.Requery
End If
For i = 0 To 3
cmddesplaza(i).Enabled = True
Next
End Sub
Private Sub CmdTotalizar_Click()

Jean & Dennis Pichilingue Romero Página: 47


Visual Basic - SQL(Structured Query Language)

total = 0
totalg = 0
For i = 1 To msf1.Rows - 1
total = Val(msf1.TextMatrix(i, 3)) * Val(msf1.TextMatrix(i, 4))
totalg = totalg + total
Next

'Muestra los totales


txtsubtotal = Format(totalg, "###,###.00")
txtigv = Format(0.18 * totalg, "###,###.00")
txttotal = Format(totalg + Val(txtigv), "###,###.00")
End Sub

Private Sub msf1_KeyDown(KeyCode As Integer, Shift As Integer)


If KeyCode = 46 And msf1.Rows > 1 Then
If msf1.Rows = 2 Then
msf1.Rows = 1
fila = fila - 1
Else
msf1.RemoveItem msf1.Row
fila = fila - 1
End If
End If
End Sub

Private Sub cmdcancelar_Click()


For i = 0 To 3
cmddesplaza(i).Enabled = True
Next
rp.MoveLast
Call mostrardatos
End Sub

Práctica dirigida 1:
Objetivo:
Repasar los temas de conexión, desplazamiento, búsqueda, adición, modificación y eliminación de
registros con tablas relacionadas.
Mantenimiento de registros con tablas relacionadas
1.Consideraciones
- Utilizaremos la base de datos Neptuno
- Realizaremos el mantenimiento de la tabla productos
- Activar las librerías de objetos ADO. Seleccione menú Project, References
 Microsoft ActiveX Data Object 2.1 Library
 Microsoft ActiveX Data Object Recordset 2.1 Library

2.Desarrollo de la aplicación

2.1 Modelo de datos Neptuno. De este modelo se observa que la tabla producto recoge
datos de la tabla proveedores y categorías. Entonces se trata de un mantenimiento
de registros con tablas relaciónales.

Página: 48
Capítulo 3 Visual Basic II

2.2 Crear un módulo y agregue los siguientes procedimientos

General Declaraciones
Public cn As Connection ‘Variable que permita conectarse a una BD.
Public regproducto As Recordset `Variable que se utilizará para abrir una tabla
Public regtemp As New Recordset ‘Variable que se utilizará para acceso a registros

Public Sub conexion()


Set cn = New Connection ‘Crea una instancia de la clase connection
cn.Provider = "microsoft.jet.oledb.4.0" '4.0-BD access-2000/ 3.51-BD acces-97/3.50-BD acces-95
cn.Open App.path +"\neptuno.mdb" 'Abre el acceso a los objetos de la BD neptuno
End Sub

‘Procedimiento que permitirá desplazarse por los registros

Public Sub desplazamiento(rs As Recordset, operacion As Integer)


‘operacion se refiere a los metodos de desplazamiento
Select Case operacion
Case 0: rs.MoveFirst
Case 1
rs.MovePrevious
If rs.BOF Then rs.MoveFirst
Case 2
rs.MoveNext
If rs.EOF Then rs.MoveLast
Case 3: rs.MoveLast
End Select
End Sub

‘Procedimiento para desactivar los botones de commando de cualquier formulario


Public Sub desaccommant(ff As Form)
Dim ctrl As Object
For Each ctrl In ff.Controls
If TypeOf ctrl Is CommandButton Then
ctrl.Enabled = False
End If
Next
End Sub

‘Procedimiento para activar los botones de commando de cualquier formulario

Public Sub actcommant(gg As Form)

Jean & Dennis Pichilingue Romero Página: 49


Visual Basic - SQL(Structured Query Language)

Dim ctrl As Object


For Each ctrl In gg.Controls
If TypeOf ctrl Is CommandButton Then
ctrl.Enabled = True
End If
Next
End Sub

‘Procedimiento que permite llenar un combo, con los datos de un campo perteneciente
‘a una tabla.
Public Sub llenacombo(c As Object, campo As String, tabla As String)
Dim regtemp As New Recordset
Dim sql As String
sql = " select " + campo + " from " + tabla + " order by 1 "
regtemp.Open sql, cn, adOpenForwardOnly
c.Clear
Do While Not regtemp.EOF
If Not IsNull(regtemp.Fields(0)) Then c.AddItem regtemp.Fields(0)
‘Si el campo de datos tiene un valor, transfiere este valor como elemento del combobox
regtemp.MoveNext
Loop
regtemp.Close
End Sub

Public Sub limpiar(ff As Form)


Dim ctrl As Object
For Each ctrl In ff.Controls
If TypeOf ctrl Is TextBox Then
ctrl.Text = VbNullString
End If
If TypeOf ctrl Is ComboBox Then
ctrl.Text = VbNullString
End If
Next
End Sub

3. Diseño del formulario

Deberá activar los siguientes componentes. Seleccione menú Project, Componentes

 Microsoft Tabbed Dialog Control 6.0


 Microsoft Windows Common Controls 6.0
 Microsoft Windows Common Controls - 2 6.0

Página: 50
Capítulo 3 Visual Basic II

SSTab1

CmdNuevo,
CmdGrabar,
CmdCancelar,
CmdEditar,
CmdActualizar,
Cmdsalir

Array de
controles
Propiedad name:
cmddesplaza

chksuspendido

StatusBar1

4. Programación del formulario

Private Sub Form_Load()


Call conexion ‘Ejecuta la conexion a la BD
Set regproducto = New Recordset ‘Crea una instancia de la clase recordset
regproducto.Open "select * from productos", cn, adOpenKeyset ‘Abre lam tabla productos
regproducto.MoveFirst

Call mostrardatos ‘Ejecuta el procedimiento mostrardatos para visualizar el registro actual


cmdgrabar.Enabled = False
cmdcancelar.Enabled = False
cmdactualizar.Enabled = False
End Sub

General Declaraciones
Sub mostrardatos()
If regproducto.BOF Or regproducto.EOF Then ‘Verifica si existen registros
MsgBox ("no existen registros")
Beep
Exit Sub
End If
txtcodigo = regproducto("idproducto")
txtnombre = regproducto("nombreproducto")

‘Executa una cadena SQL para localizar el código de proveedor de la tabla categorías, en la tabla de proveedores
Set regtemp = cn.Execute("select * from proveedores where idproveedor = " & regproducto("Idproveedor") & "")
Combo1 = regtemp("NombreCompañía")
‘Carga el nombre del proveedor, del registro localizado con la cadena SQL anterior

‘Executa una cadena SQL para localizar el código de la categoría de la tabla productos, en la tabla de categorías
Set regtemp = cn.Execute("select * from categorías where Idcategoría = " & regproducto("Idcategoría") & "")
Combo2 = regtemp("Nombrecategoría")
‘Carga el nombre de la categoría, del registro localizado con la cadena SQL anterior

txtcantidad = regproducto("cantidadporunidad")
txtprecio = regproducto("preciounidad")
txtunidexist = regproducto("unidadesenexistencia")
txtunidped = regproducto("unidadesenpedido")
txtnivelped = regproducto("nivelnuevopedido")
If regproducto("suspendido") Then
chksuspendido.Value = 0
Else
chksuspendido.Value = 1

Jean & Dennis Pichilingue Romero Página: 51


Visual Basic - SQL(Structured Query Language)

End If
If Not IsNull(regproducto("fds")) Then txtfds = regproducto("fds")
End Sub

Private Sub cmddesplaza_Click(Index As Integer)


‘Invoca al procedimiento desplazamiento, para mover el puntero de registro
Call desplazamiento(regproducto, Index)
Call mostrardatos ‘Llama al procedimiento para mostrar al registro actual
End Sub

Private Sub cmdnuevo_Click()


Call limpiar(Form2) ‘limpia los controles textbox
cmdgrabar.Enabled = True
frame1.Enabled = True
txtcodigo.Enabled = False
cmdcancelar.Enabled = True

Call llenacombo(Combo1, "NombreCompañía", "proveedores")


Call llenacombo(Combo2, "nombrecategoría", "categorías")
End Sub

Private Sub cmdgrabar_Click()

‘1. Verifica que los controles textbox tengan datos

If txtnombre = "" Then


MsgBox ("Debe Ingresar Nombre")
Exit Sub
End If
If Combo1 = "" Then
MsgBox ("debe seleccionar un proveedor")
Exit Sub
End If
If Combo2 = "" Then
MsgBox ("debe seleccionar una categoría")
Exit Sub
End If

If MsgBox("desea grabar", vbYesNo) = vbYes Then


regproducto.MoveLast ‘desplaza el puntero de registro al final
txtcodigo = regproducto("idproducto") + 1 ‘Autogenera el código

‘2. Busca nombres y captura los códigos necesarios para el momento de la grabación

‘Ejecuta cadena SQL para localizar nombre de compañía proveedora


Set regtemp = cn.Execute("select idproveedor,nombrecompañía from proveedores where nombrecompañía='" & Combo1 & "'")
xidproveedor = regtemp("idproveedor") ‘Captura el código del proveedor

‘Ejecuta cadena SQL para localizar nombre de categoría


Set regtemp = cn.Execute("select idcategoría,nombrecategoría from categorías where nombrecategoría='" & Combo2 & "'")
xidcategoría = regtemp("idcategoría") ‘Captura el código de la categoría

If chksuspendido.Value = 1 Then
xsuspendido = 0
Else
xsuspendido = -1
End If

‘3. Cadena SQL que permite insertar un nuevo registro


xgraba = "insert into productos values(" & Val(txtcodigo) & ",'" & txtnombre &
"'," & xidproveedor & "," & xidcategoría & ",'" & txtcantidad & "'," &
Val(txtprecio) & "," & Val(txtunidexist) & "," & Val(txtunidped) & "," &
Val(txtnivelped) & "," & xsuspendido & "," & Val(txtfds) & ")"

cn.Execute (xgraba) ‘Ejecuta la cadena SQL


regproducto.Requery ‘Actualiza el recordset

Página: 52
Capítulo 3 Visual Basic II
End If

‘Restaura el entorno de trabajo


Call actcommant(Form5)
frame1.Enabled = False
End Sub

Private Sub cmdcancelar_Click()


‘Cancela un proceso de grabación o actualización de datos
Call actcommant(Form5)
frame1.Enabled = False
regproducto.MoveFirst
Call mostrardatos
cmdgrabar.Enabled = False
cmdcancelar.Enabled = False
cmdactualizar.Enabled = False
End Sub

Private Sub cmdeditar_Click()


`Prepara el entorno para editar un regiostro
Call desaccommant(Form5)
frame1.Enabled = True
txtcodigo.Enabled = False
cmdactualizar.Enabled = True
cmdcancelar.Enabled = True
cmdeditar.Enabled = False
End Sub

Private Sub cmdactualizar_Click()


‘Verifica que existan datos en los controles
If txtnombre = "" Then
MsgBox ("Debe Ingresar Nombre")
Exit Sub
End If
If Combo1 = "" Then
MsgBox ("debe seleccionar un proveedor")
Exit Sub
End If
If Combo2 = "" Then
MsgBox ("debe seleccionar una categoría")
Exit Sub
End If

If MsgBox("desea grabar", vbYesNo) = vbYes Then

‘Ejecuta cadena SQL para localizar nombre de compañía proveedora


Set regtemp = cn.Execute("select idproveedor,nombrecompañía from proveedores where nombrecompañía='" & Combo1 & "'")
xidproveedor = regtemp("idproveedor")

‘Ejecuta cadena SQL para localizar nombre de categoría


Set regtemp = cn.Execute("select idcategoría,nombrecategoría from categorías where nombrecategoría='" & Combo2 & "'")
xidcategoría = regtemp("idcategoría")
If chksuspendido.Value = 1 Then
xsuspendido = 0
Else
xsuspendido = -1
End If

‘Cadena SQL para actualizar un registro


xgraba = "update productos set NombreProducto='" & txtnombre & "',IdProveedor="
& xidproveedor & ",IdCategoría = " & xidcategoría & ",CantidadPorUnidad='" &
txtcantidad & "',PrecioUnidad=" & Val(txtprecio) & ",UnidadesEnExistencia = " &
Val(txtunidexist) & ",UnidadesEnPedido=" & Val(txtunidped) & ",NivelNuevoPedido=" &
Val(txtnivelped) & ",Suspendido=" & xsuspendido & ",fds=" & Val(txtfds) & " where
IdProducto = " & Val(txtcodigo) & ""

cn.Execute (xgraba) ‘Ejecuta la cadena SQL


regproducto.Requery
End If

Jean & Dennis Pichilingue Romero Página: 53


Visual Basic - SQL(Structured Query Language)

Call actcommant(Form5)
frame1.Enabled = False
End Sub

Private Sub cmdsalir_Click()


Unload Me
regproducto.Close ‘Cierra el recordset
Set regproducto = Nothing ‘Elimina el recordset
End Sub

Práctica dirigida 2:
Objetivo:
Repasar los temas de conexión, desplazamiento, búsqueda, adición, modificación y eliminación de
registros con tablas relacionadas.
Mantenimiento de registros con tablas relacionadas
1.Consideraciones
- Utilizaremos la base de datos Transporte.mdb
- Realizaremos el mantenimiento de la tabla salidas
- Activar las librerías de objetos ADO. Seleccione menú Project, References
 Microsoft ActiveX Data Object 2.1 Library
 Microsoft ActiveX Data Object Recordset 2.1 Library

2.Desarrollo de la aplicación

2.1 Modelo de datos Transporte.

2.2 Estructura de las tablas

Página: 54
Capítulo 3 Visual Basic II
2.3 Contenido de las tablas

3. Crear un módulo y agregue los siguientes procedimientos

General Declaraciones
Public Cn As New Connection
Public Re As New Recordset
Public Regtemp As New Recordset
Public Regtemp2 As New Recordset
Public Rv As New Recordset
Public Rt As New Recordset

Public Sub Conectar()


Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path +
"\transporte.mdb;Persist Security Info=False"
End Sub

Public Sub Limpiar(F As Form)


Dim Ctrl As Control
For Each Ctrl In F.Controls
If TypeOf Ctrl Is ComboBox Or TypeOf Ctrl Is TextBox Then
Ctrl.Text = ""
End If
Next
End Sub

Public Sub LlenarCombo(C As ComboBox, tabla As String, campo As String, Optional x As Integer)
Dim Temp As New Recordset
Dim sql As String
sql = "select " + campo + " from " + tabla
Temp.Open sql, Cn, adOpenForwardOnly
C.Clear
Do While Not Temp.EOF
If Not IsNull(Temp.Fields(0)) Then C.AddItem Temp.Fields(0)
Temp.MoveNext
Loop
Temp.Close
End Sub

4. Diseño del formulario

Deberá activar los siguientes componentes. Seleccione menú Project, Componentes

 Microsoft Windows Common Controls 6.0


Jean & Dennis Pichilingue Romero Página: 55
Visual Basic - SQL(Structured Query Language)

 Microsoft Windows Common Controls - 2 6.0

5. Programación del formulario

Private Sub Form_Load()


Call Conectar
Re.Open "select * from salidas", Cn, adOpenKeyset
Rv.Open "select * from viajero", Cn, adOpenKeyset
Call LlenarCombo(Combo1, "destinos", "nombre")
End Sub

Private Sub cmdnuevo_Click()


Call Limpiar(FrmTrans)
Txtviajero.SetFocus
cmdgrabarv.Enabled = True
End Sub

Private Sub Txtviajero_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 And Trim(Txtviajero) <> "" Then
Rv.MoveFirst
Rv.Find "idviajero= " & Val(Txtviajero) & ""
If Rv.BOF Or Rv.EOF Then
Txtnombre.SetFocus
MsgBox ("Ingrese nombres")
Exit Sub
Else
Txtnombre = Rv(1)
Txttelefono = Rv(2)
End If
End If
End Sub

Private Sub cmdgrabarv_Click()


If Trim(Txtnombre) = "" Then
MsgBox ("debe ingresar un nombre")
Txtnombre.SetFocus
Exit Sub
End If
Cn.Execute ("insert into viajero values(" & Val(Txtviajero) & ", '" & Txtnombre & "','" & IIf(Trim(Txttelefono) = "",
"No disponible", Txttelefono) & "')")
Rv.Requery
cmdgrabarv.Enabled = False

Página: 56
Capítulo 3 Visual Basic II
End Sub

Private Sub Asiento_Click(Index As Integer)


If Txtviajero = "" Then Exit Sub
If Txtnombre = "" Then Exit Sub
If Txttelefono = "" Then Exit Sub
If Combo1.ListIndex = -1 Then Exit Sub 'destino
If Combo2.ListIndex = -1 Then Exit Sub 'hora
Dim xcodigo, xgraba As String
Dim xiddestino

If MsgBox("desea grabar?", vbYesNo) = vbYes Then


Set Regtemp = Cn.Execute("select * from destinos where nombre='" & Combo1 & "'")
xiddestino = Regtemp(0)
xcodigo = Trim(Year(DTPicker1.Value)) & "-" & Trim(xiddestino) & "-" & Trim(Day(DTPicker1.Value)) & "-" &
Trim(Month(DTPicker1.Value)) & "-" & Trim(Left(Combo2, 4))
xcodigo = xcodigo & "-" & Trim(Str(Re.RecordCount + 1))
xgraba = "insert into salidas values('" & xcodigo & "'," & Val(Txtviajero) & ",#" & DTPicker1.Value & "#," & _
"" & Index & "," & xiddestino & ",#" & Combo2 & "#)"

Cn.Execute (xgraba)
Re.Requery

Asiento(Index).BackColor = vbBlue
Asiento(Index).Enabled = False
End If
Txtsalida = xcodigo
End Sub

Private Sub Cmdprocesar_Click()


If Combo1.ListIndex = -1 Then 'si no selecciona destino
MsgBox ("Debe elegir destino")
Exit Sub
End If
If Combo2.ListIndex = -1 Then 'si no selecc horario
MsgBox ("Debe elegir horario")
Exit Sub
End If

Dim xiddestino
Set Regtemp = Cn.Execute("select * from destinos where nombre='" & Combo1 & "'")
xiddestino = Regtemp(0)
Dim xbusca As String
xbusca = Trim(Year(DTPicker1.Value)) & "-" & Trim(xiddestino) & "-" & Trim(Day(DTPicker1.Value)) & "-" &
Trim(Month(DTPicker1.Value)) & "-" & Trim(Left(Combo2, 4))
Set Regtemp = Cn.Execute("select * from salidas where left(idsalida,15)= '" & xbusca & "'")
If Regtemp.BOF Or Regtemp.EOF Then
MsgBox ("todos los asientos estan libres")
Exit Sub
End If

Dim a As Integer
Do While Not Regtemp.EOF
Asiento(Regtemp(3)).BackColor = vbBlue
Asiento(Regtemp(3)).Enabled = False
Regtemp.MoveNext
Loop
End Sub

Jean & Dennis Pichilingue Romero Página: 57


Visual Basic - SQL(Structured Query Language)

Práctica dirigida 3:
Objetivo:
Repasar los temas de conexión, desplazamiento, búsqueda, adición, modificación y eliminación de
registros con tablas relacionadas.
Mantenimiento de registros con tablas relacionadas
1.Consideraciones
- Utilizaremos la base de datos Personal.mdb
- Realizaremos el mantenimiento de la tabla DatosLaborales
- Activar las librerías de objetos ADO. Seleccione menú Project, References
 Microsoft ActiveX Data Object 2.1 Library
 Microsoft ActiveX Data Object Recordset 2.1 Library

2.Desarrollo de la aplicación

2.1 Modelo de datos Personal.mdb.

2.2 Estructura de las tablas

2.3 Contenido de las tablas

Página: 58
Capítulo 3 Visual Basic II

3. Crear un módulo y agregue los siguientes procedimientos

General Declaraciones
Public cn As New Connection
Public regtemp As Recordset 'Tablas relacionales
Public reg As Recordset 'Apunta a la tabla principal
Public Sub conexion()
cn.Provider = "Microsoft.jet.oledb.4.0"
cn.Open App.Path + "\Personal.mdb"
End Sub

Public Sub Desplazamiento(R As Recordset, Indice As Integer)


Select Case Indice
Case 0:
R.MoveFirst
Case 1:
R.MovePrevious
If R.BOF Then R.MoveFirst
Case 2:
R.MoveNext
If R.EOF Then R.MoveLast
Case 3:
R.MoveLast
End Select
End Sub

Public Sub LlenarCombo(c As ComboBox, tabla As String, campo As String)


Dim temp As New Recordset
Dim SQL As String
SQL = "select " + campo + " from " + tabla
temp.Open SQL, cn, adOpenStatic
c.Clear
Do While Not temp.EOF
If Not IsNull(temp(0)) Then c.AddItem temp(0)
temp.MoveNext
Loop
End Sub

Public Sub Limpia(F As Form)


Dim ctrl As Object
For Each ctrl In F.Controls
If TypeOf ctrl Is TextBox Then
ctrl.Text = ""
End If
Next
End Sub

4. Diseño del formulario

Deberá activar los siguientes componentes. Seleccione menú Project, Componentes


 Microsoft Tabbed Dialog Control 6.0
 Microsoft Windows Common Controls 6.0
 Microsoft Windows Common Controls - 2 6.0

Jean & Dennis Pichilingue Romero Página: 59


Visual Basic - SQL(Structured Query Language)

5. Programación del formulario

Public Sub mostrardatos()


If reg.BOF Or reg.EOF Then Exit Sub
TxtCodigo = reg(0) 'TxtCodigo=reg("CodEmpleado")
If Not IsNull(reg(1)) Then TxtNombre = reg(1)
If Not IsNull(reg(2)) Then TxtApellido = reg(2)
Set regtemp = cn.Execute("select * from Cargo where CodCargo=" & reg("Cargo") & "")
TxtCargo = regtemp("NomCargo")
Set regtemp = cn.Execute("Select * from Dpto where CodDpto=" & reg("Departamento") & "")
TxtDpto = regtemp("NomDpto")
End Sub

Private Sub BuscaCodigo_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
reg.MoveFirst
reg.Find "codempleado = " & Val(BuscaCodigo) & ""
If reg.BOF Or reg.EOF Then
MsgBox ("No encontro")
reg.MoveLast
Else
Call mostrardatos
End If
End If
End Sub

Private Sub BuscaNombre_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
reg.MoveFirst
reg.Find "nombre like '" & BuscaNombre & "%'"
If reg.BOF Or reg.EOF Then
MsgBox ("No encontro")
reg.MoveLast
Else
Call mostrardatos
End If
End If

End Sub

Private Sub CmdActualizar_Click()


If TxtNombre = "" Then
MsgBox ("DEBE INGRESAR NOMBRE")
Exit Sub
End If
If MsgBox("DESEAS MODIFICAR", vbYesNo) = vbYes Then

Página: 60
Capítulo 3 Visual Basic II
Set regtemp = cn.Execute(" Select * from cargo where nomcargo='" & TxtCargo & "'")
xcargo = regtemp(0)
Set regtemp = cn.Execute("Select * from dpto where nomdpto='" & TxtDpto & "'")
xdpto = regtemp(0)
cn.Execute ("update DatosLaborales set Nombre = '" & TxtNombre & "',apellido = '" & TxtApellido & "',cargo= " &
xcargo & ",departamento=" & xdpto & " where codempleado = " & Val(TxtCodigo) & "")
reg.Requery
End If
Frame1.Enabled = True
Frame2.Enabled = True
Frame3.Enabled = True
CmdNuevo.Enabled = True
CmdActualizar.Enabled = False
End Sub

Private Sub CmdDesplaza_Click(Index As Integer)


Call Desplazamiento(reg, Index)
Call mostrardatos
End Sub

Private Sub CmdEditar_Click()


Frame1.Enabled = True
TxtCodigo.Enabled = False
TxtNombre.SetFocus
Frame2.Enabled = False
Frame3.Enabled = False
CmdActualizar.Enabled = True
CmdNuevo.Enabled = False
End Sub

Private Sub CmdEliminar_Click()


If reg.RecordCount > 0 Then 'Si existen registros
If MsgBox("DESEA ELIMINAR", vbYesNo) = vbYes Then
cn.Execute ("Delete * from DatosLaborales where CodEmpleado=" & Val(TxtCodigo) & "")
reg.Requery
If reg.BOF Or reg.EOF Then
MsgBox ("YA NO HAY REGISTROS")
Exit Sub
End If
reg.MoveFirst
Call mostrardatos
End If
End If
End Sub

Private Sub CmdGrabar_Click()


If TxtNombre = "" Then
MsgBox ("Ingrese Nombre")
TxtNombre.SetFocus
Exit Sub
End If
If TxtApellido = "" Then
MsgBox ("Ingrese Apellido")
TxtApellido.SetFocus
Exit Sub
End If
If TxtCargo = "" Then
MsgBox ("Seleccione Cargo")
Exit Sub
End If
If TxtDpto = "" Then
MsgBox ("Seleccione Departamento")
Exit Sub
End If
If MsgBox("DESEA GRABAR", vbYesNo) = vbYes Then
reg.MoveLast
TxtCodigo = "0000" & reg(0) + 1
Set regtemp = cn.Execute("Select * from Dpto where NomDpto= '" & TxtDpto & "'")

Jean & Dennis Pichilingue Romero Página: 61


Visual Basic - SQL(Structured Query Language)

xCodDpto = regtemp(0)
Set regtemp = cn.Execute("Select * from Cargo where NomCargo= '" & TxtCargo & "'")
xCodCargo = regtemp(0)
cn.Execute ("insert into DatosLaborales values (" & Val(TxtCodigo) & ",'" & TxtNombre & "','" & TxtApellido & "'," &
xCodCargo & ", " & xCodDpto & ")")
reg.Requery
End If
End Sub

Private Sub CmdNuevo_Click()


Call Limpia(Personal)
Frame1.Enabled = True
TxtCodigo.Enabled = False
TxtNombre.SetFocus
TxtCargo = ""
TxtDpto = ""
End Sub

Private Sub CmdSalir_Click()


If MsgBox("DESEA SALIR DEL PROGRAMA", vbExclamation + vbYesNo, "PERSONAL") = vbYes Then
End
End If
End Sub
Private Sub Form_Load()
Call conexion
Set reg = New Recordset
reg.Open "Select * from DatosLaborales", cn, adOpenKeyset
Call mostrardatos
End Sub

Private Sub TxtCargo_GotFocus()


Call LlenarCombo(TxtCargo, "Cargo", "NomCargo")
End Sub

Private Sub TxtDpto_GotFocus()


Call LlenarCombo(TxtDpto, "Dpto", "NomDpto")
End Sub

Práctica Propuesta:
Objetivo:
1. Repasar los temas de conexión, desplazamiento, búsqueda, adición, modificación y
eliminación de registros con tablas relacionadas.
Utilizaremos la base de datos Videos.mdb

2. Realizar las siguientes tareas


- Realizar el mantenimiento de la tabla Clientes
- Realizar el mantenimiento de la tabla Empleados
- Realizar el mantenimiento de la tabla Videos
- Realizar el mantenimiento de la tabla Productos
- Realizar el mantenimiento de la tabla Comprobante
- Activar las librerías de objetos ADO. Seleccione menú Project, References
 Microsoft ActiveX Data Object 2.1 Library
 Microsoft ActiveX Data Object Recordset 2.1 Library

2.1 Modelo de datos Videos.mdb.

Página: 62
Capítulo 3 Visual Basic II

2.2 Estructura de las tablas

Jean & Dennis Pichilingue Romero Página: 63


Visual Basic - SQL(Structured Query Language)

2.3 Contenido de las tablas

Página: 64
Capítulo 3 Visual Basic II

Jean & Dennis Pichilingue Romero Página: 65


Visual Basic - SQL(Structured Query Language)

Tablas de almacenamiento de información temporal

Cuestionario

1. Diseñar un programa que permita adicionar, modificar y eliminar registros de la tabla clientes, base de datos
Neptuno.
2. Diseñar un programa que permita adicionar, modificar y eliminar registros de la tabla empleados, base de
datos Neptuno.
3. Crear el procedimiento que permita controlar el stock de productos, base de datos Neptuno.

Página: 66

Você também pode gostar