Autor Tema: Mejorar esta Funcion  (Leído 3170 veces)

0 Usuarios y 1 Visitante están viendo este tema.

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Mejorar esta Funcion
« en: Junio 22, 2013, 06:24:40 pm »
Hola. estoy preparando esta funciona en VB6. me funciona bien solo que quiero ponerle mas opciones.

Código: (VB) [Seleccionar]
Public Sub ELIMINAR_REGISTRO(xTabla As String, xLisView As ListView, xNColumna As Integer, xMensajeExtra As String)
       
    If xLisView.ListItems.Count = 0 Then
        MsgBox "Debe seleccionar un registro para eliminar", vbInformation
    Else
        Dim msg As String
        msg = MsgBox("Esta seguro que va eliminar este registro..." & vbCrLf & vbCrLf & xMensajeExtra, vbYesNo + vbInformation)
       
        If msg = vbYes Then
            '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
            '// Conectar la Base Datos con ADO
               Call ConectarADO
            '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
            ComandoSQL = "DELETE FROM " & xTabla & " WHERE id='" & xLisView.SelectedItem.SubItems(xNColumna) & "'"
            cnADO.Execute ComandoSQL
            '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
            '// Cerrar la base de datos y liberar la memoria
                Call CerrarADO
            '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
        End If
    End If

End Sub

La opcion que le quiero poner es si hay 2 o mas tabla poder eliminar lo que yo le indique sin que aparezca los mensajes.

Por ejemplo tengo la Tabla: vehiculos y la tabla: detalle_vehiculos al eliminar un registro de la tabla vehiculos que también me elimine los registro segun el idvehiculos de la tabla detalle_vehiculos.
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Mejorar esta Funcion
« Respuesta #1 en: Junio 22, 2013, 06:43:19 pm »
Lo hice asi pero medio que queda otra ves limitado solo a 2 tablas si hay 3 o mas ya queda corto la funcion.

Código: (VB) [Seleccionar]
Public Sub ELIMINAR_REGISTRO(xTabla As String, xLisView As ListView, xColum As Integer, xMensajeExtra As String, xDetalle As Boolean)

    If xLisView.ListItems.Count = 0 Then
        MsgBox "Debe seleccionar un registro para eliminar", vbInformation
    Else
        Dim Msg As String
        Msg = MsgBox("Esta seguro que va eliminar este registro..." & xMensajeExtra, vbYesNo + vbInformation)

        If Msg = vbYes Then
            '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
            '// Conectar la Base Datos con ADO
                Call ConectarADO
            '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
               
                cnADO.BeginTrans
               
                ComandoSQL = "DELETE FROM " & xTabla & " WHERE id='" & xLisView.SelectedItem.SubItems(xColum) & "'"
                cnADO.Execute ComandoSQL
               
                If xDetalle = True Then
                    ComandoSQL = "DELETE FROM " & xTabla & "_detalle" & " WHERE idvehiculo='" & xLisView.SelectedItem.SubItems(xColum) & "'"
                    cnADO.Execute ComandoSQL
                End If
               
                cnADO.CommitTrans
               
            '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
            '// Cerrar la base de datos y liberar la memoria
                Call CerrarADO
            '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
        End If
    End If

End Sub
« última modificación: Junio 22, 2013, 06:45:35 pm por E N T E R »
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

wolf_kof

  • Visitante
Re:Mejorar esta Funcion
« Respuesta #2 en: Junio 22, 2013, 06:56:47 pm »
Eso en primer lugar lo puedes resolver con configurar las claves principales y foráneas de la base de datos, por ejemplo si es una base de datos de Access crea la relación y dale eliminar por cascada.



Ahora puedes agregar otra consulta sql después de esa consulta con un DELETE en la otra tabla para eliminar todos, recuerda que la sentencia DELETE elimina o un registro o un grupo de registros. Ejemplo:

Eliminar un solo registro:

Eliminar varios registroso con un mismo dato



wolf_kof

  • Visitante
Re:Mejorar esta Funcion
« Respuesta #3 en: Junio 22, 2013, 07:09:44 pm »
Y por que no creas una matriz como variable de la función y le cargas los nombres de las tablas y hacer un bucle para que las ejecute según la cantidad de items que tenga la matriz que podes sacar con un UBound, digo.

wolf_kof

  • Visitante
Re:Mejorar esta Funcion
« Respuesta #4 en: Junio 22, 2013, 07:12:54 pm »
Algo así:

Código: [Seleccionar]

Public Sub ELIMINAR_REGISTRO(xTabla As String, xTablas() as String, xLisView As ListView, xColum As Integer, xMensajeExtra As String, xDetalle As Boolean)
 
    If xLisView.ListItems.Count = 0 Then
        MsgBox "Debe seleccionar un registro para eliminar", vbInformation
    Else
        Dim Msg As String
        Msg = MsgBox("Esta seguro que va eliminar este registro..." & xMensajeExtra, vbYesNo + vbInformation)
 
        If Msg = vbYes Then
            '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
            '// Conectar la Base Datos con ADO
                Call ConectarADO
            '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
               
                cnADO.BeginTrans
               
                ComandoSQL = "DELETE FROM " & xTabla & " WHERE id='" & xLisView.SelectedItem.SubItems(xColum) & "'"
                cnADO.Execute ComandoSQL
               
                If xDetalle = True Then

                    Dim i as integer
                    For i = 0 to Ubound(xTablas) to
                                     ComandoSQL = "DELETE FROM " & xTablas(i) & " & " WHERE idvehiculo='" & xLisView.SelectedItem.SubItems(xColum) & "'"
                                     cnADO.Execute ComandoSQL
                    next
                End If
               
                cnADO.CommitTrans
               
            '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
            '// Cerrar la base de datos y liberar la memoria
                Call CerrarADO
            '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
        End If
    End If
 
End Sub


Y cargas los datos asi

Código: [Seleccionar]

........., {"Tabla1", Tabla2", "Tabla3"}, ...............


seba123neo

  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:Mejorar esta Funcion
« Respuesta #5 en: Junio 22, 2013, 07:33:17 pm »
pues podes hacerlo con claves como te dijeron o simplemente hacer otro delete y guardar el id asi lo borras por ese id.

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Mejorar esta Funcion
« Respuesta #6 en: Junio 22, 2013, 07:47:03 pm »
Segun la clave no puedo por que no los tengo relacionados.
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo