Anda di halaman 1dari 10

Programa para manipular una base de datos de acces con visual basic 6.

0 Base de Datos

Formulario Principal

Ventana Eliminar

Cdigo del Formulario Principal Option Explicit

Private Sub cmdBuscar_Click() frmBuscar.Show , Me End Sub Private Sub cmdEditar_Click() Dim i As Integer ' verifica que hay datos en el ListView y que hay uno seleccionado If (ListView1.ListItems.Count = 0) Then MsgBox "No hay ningn regisro para editar", vbInformation Exit Sub End If If (ListView1.SelectedItem Is Nothing) Then MsgBox "Debe seleccionar previamente un registro para poder editarlo", vbInformation Exit Sub End If With frmEditar ' obtiene el elemento seleccionado .lblId = ListView1.SelectedItem.Text .txtNombre.Text = ListView1.SelectedItem.ListSubItems(1).Text .txtApellido.Text = ListView1.SelectedItem.ListSubItems(2).Text .txtTelefono.Text = ListView1.SelectedItem.ListSubItems(3).Text .txtDomicilio.Text = ListView1.SelectedItem.ListSubItems(4).Text .cboSexo = ListView1.SelectedItem.ListSubItems(5).Text .lblFecha = ListView1.SelectedItem.ListSubItems(6).Text .IdRegistro = ListView1.SelectedItem.Text .ACCION = EDITAR_REGISTRO .Show vbModal End With End Sub Private Sub cmdEliminar_Click() If (ListView1.ListItems.Count = 0) Then MsgBox "No hay ningn registro para eliminar", vbInformation

Exit Sub End If ' verifica que hay datos en el ListView y que hay uno seleccionado If (ListView1.SelectedItem Is Nothing) Then MsgBox "No hay registro seleccionado para eliminar", vbInformation Exit Sub End If

With ListView1.SelectedItem ' pregunta If MsgBox("Se va a eliminar el registro : " & vbNewLine & _ String(50, "-") & vbNewLine & _ "ID: " & .Text & vbNewLine & _ "Nombre " & .ListSubItems(1).Text & vbNewLine & _ "Apellido: " & .ListSubItems(2).Text, _ vbExclamation + vbYesNo, "Eliminar") = vbYes Then ' Elimina cnn.Execute "delete from Personas where Id = " & .Text & "" ' refresca el recordset rs.Requery 1 ' vuelve a cargar los datos en el ListView Call CargarListView(ListView1, rs) End If End With End Sub Private Sub cmdNuevo_Click() ' Accin frmEditar.ACCION = AGREGAR_REGISTRO frmEditar.lblFecha = Format(Date, "mm/dd/yyyy") ' Abre el Form frmEditar.Show 1 End Sub Private Sub Form_Load() ' Abre la conexin Call IniciarConexion ' carga el Recorset con todos los datos rs.Open "select * from Personas", cnn, adOpenStatic, adLockOptimistic

' llena el ListView Call CargarListView(ListView1, rs) End Sub Ventana Nuevo,Editar

Cdigo de la ventana Editar Option Explicit Enum EACCION AGREGAR_REGISTRO = 0 EDITAR_REGISTRO = 1 End Enum Public IdRegistro Public ACCION As EACCION

Private Sub cmdCancelar_Click()

Unload Me End Sub Private Sub cmdGuardar_Click() On Error GoTo ErrorSub

' Valida el Nombre que no este vacio '''''''''''''''''''''''''''''''' If Trim(txtNombre) = "" Then MsgBox "El Nombre de registro no puede estar vacio", vbCritical, "Datos incompletos" txtNombre.SetFocus Exit Sub ' Valida el Apellido '''''''''''''''''''''''''''''''' ElseIf Trim(txtApellido) = "" Then MsgBox "El Apellido no puede estar vacio", vbCritical, "Datos incompletos" txtApellido.SetFocus Exit Sub ' Valida el Sexo '''''''''''''''''''''''''''''''' ElseIf Trim(cboSexo.Text) = "" Then MsgBox "No se ha indicado el sexo", vbCritical, "Datos incompletos" cboSexo.SetFocus Exit Sub End If 'Agrega el registro ''''''''''''''''''''''''''''''' Select Case ACCION Case EDITAR_REGISTRO cnn.Execute "UPDATE Personas set Nombre = '" & txtNombre & _ "', Apellido = '" & txtApellido & _ "', Telefono = '" & txtTelefono & _ "', Direccion = '" & txtDomicilio & _ "', Sexo = '" & cboSexo.ListIndex & _ "' where Id = " & IdRegistro & ""

Case AGREGAR_REGISTRO cnn.Execute "INSERT INTO Personas " & "(Nombre,Apellido,Telefono,Direccion,Sexo,FechaDeAlta) VALUES('" & _ txtNombre & "','" & _ txtApellido & "','" & _ txtTelefono & "','" & _ txtDomicilio & "','" & _ cboSexo.ListIndex & "','" & _ Format(Date, "dd/mm/yyyy") & "')" End Select rs.Requery 1 Call CargarListView(frmPrimcipal.ListView1, rs) DoEvents Unload Me Set frmEditar = Nothing Exit Sub ErrorSub: MsgBox Err.Description End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyEscape Then Unload Me End If End Sub Ventana Buscar

Cdigo de la Ventana Buscar Option Explicit

Private Sub cboBuscar_Change() Call Filtrar End Sub Private Sub cboOrdenar_Change() Call Filtrar End Sub Private Sub cmdAscendente_Click() cmdAscendente.Value = False Call Filtrar End Sub Private Sub cmdCerrar_Click() Unload Me End Sub Private Sub cmdDescendente_Click() cmdDescendente.Value = False Call Filtrar End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyEscape Then Unload Me End If End Sub Private Sub Form_Load() With frmPrimcipal Me.Move (.Left + .ListView1.Left), _ (.ListView1.Height + .ListView1.Top + .Top + 500) End With Call Filtrar End Sub Public Sub Filtrar() Dim Campo, OrderByCampo, Orden As String Dim SQL As String If cboBuscar.ListIndex = -1 Then cboBuscar.ListIndex = 0 End If

If cboOrdenar.ListIndex = -1 Then cboOrdenar.ListIndex = 0 End If If cboBuscar.ListIndex = 0 Then Campo = "Id" ElseIf cboBuscar.ListIndex = 1 Then Campo = "Nombre" ElseIf cboBuscar.ListIndex = 2 Then Campo = "Apellido" End If Select Case cboOrdenar.ListIndex Case 0: OrderByCampo = "Id" Case 1: OrderByCampo = "Nombre" Case 2: OrderByCampo = "Apellido" Case 3: OrderByCampo = "FechaDeAlta" End Select If cmdAscendente.Value Then Orden = "asc" If cmdDescendente.Value Then Orden = "desc" ' si el recorset est abierto lo cierra If rs.State = adStateOpen Then rs.Close End If SQL = "SELECT * FROM Personas Where " & _ Campo & " like '" & txtBuscar & _ "%' order by " & OrderByCampo & " " & Orden rs.Open SQL, cnn, adOpenStatic, adLockOptimistic Call CargarListView(frmPrimcipal.ListView1, rs) End Sub Private Sub txtBuscar_Change() Call Filtrar End Sub

Codigo del Modulo Principal

Option Explicit Public Declare Sub InitCommonControls Lib "comctl32" () ' variables para la conexin y el recordset '''''''''''''''''''''''''''''''''''''''''''' Public cnn As New ADODB.Connection Public rs As New ADODB.Recordset Public ObjItem As ListItem Sub Main() On Error Resume Next Call InitCommonControls Err.Clear frmPrimcipal.Show End Sub ' abre conexion Public Sub IniciarConexion() With cnn .CursorLocation = adUseClient .Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ App.Path & "\datos.mdb" & ";Persist Security Info=False" End With End Sub Public Sub CargarListView(ListView1 As ListView, rs As ADODB.Recordset) On Error GoTo ErrorSub Dim i As Integer 'limpia el LV ListView1.ListItems.Clear ' si hay registros If rs.RecordCount > 0 Then ' recorre el recordset While Not rs.EOF

' aade los datos Set ObjItem = ListView1.ListItems.Add(, , rs(0))

ObjItem.SubItems(1) = rs!Nombre ObjItem.SubItems(2) = rs!Apellido ObjItem.SubItems(3) = rs!Telefono ObjItem.SubItems(4) = rs!Direccion If Abs(rs!sexo) = 0 Then ObjItem.SubItems(5) = "Masculino" Else ObjItem.SubItems(5) = "Femenino" End If ObjItem.SubItems(6) = rs!FechaDeAlta ' siguiente registro rs.MoveNext Wend End If 'Call ForeColorColumn(&H8000&, 0, frmPrimcipal.ListView1) 'Call ForeColorColumn(vbRed, 6, FrmPrincipal.LV) Exit Sub ErrorSub: If Err.Number = 94 Then Resume Next End Sub ' cierra Sub Desconectar() On Local Error Resume Next rs.Close Set rs = Nothing cnn.Close Set cnn = Nothing End Sub