Problemas en orden de ejecución.

Qué tal estimado amigo. Vuelvo por tus conocimientos. En esta oportunidad porque hay un error que parece fácil pero no lo puedo resolver. Te lo explico con el código.
Tengo un botón de comando el cual uso para dar de baja un voluntario, a ese voluntario le tengo que dar un "motivo de baja" para saber porque fue la baja...(para eso uso un combobox). Entonces, cuando hago clic en el botón primero pregunto: ¿Está seguro que quiere dar de baja el voluntario?, vbyesno. Cuando hago clic en yes lanzo un cartel que me pide que seleccione un motivo, luego de seleccionarlo tengo que hacer nuevamente clic en el botón cmdbajaVol para que se ejecute el procedimiento a lo cual me vuelve a aparecer el cartel: ¿Está seguro que quiere dar de baja el voluntario?, vbyesno. Y luego de hacerle clic me aparece el cartel final "Se ha dado de baja con éxito"
Lo que quiero es que no me pregunte 2 veces ¿Está seguro que quiere dar de baja el voluntario?, vbyesno.
No se donde poner el código para que se ejecute bien.
He aquí el código:
Private Sub cmdBajaVol_Click()
CmbMotivoBaja.Enabled = True
If MsgBox("¿Está seguro que desea dar de baja al Voluntario?", vbExclamation + vbYesNo, "BAJA DE VOLUNTARIOS.") = vbYes Then
If CmbMotivoBaja.ListIndex = -1 Then
MsgBox "Seleccione un motivo de baja.", vbCritical, "BAJA DE VOLUNTARIOS."
Exit Sub
Else
Set Base = New ADODB.Connection
AbrirBase
'Actualizo la DB con el motivo de la baja.
Motivo = CmbMotivoBaja.List(CmbMotivoBaja.ListIndex)
strVolBaja = "UPDATE VOLUNTARIOS SET FechaBaja ='" & lblFecha.Caption & "',MOTIVOBAJA= '" & Motivo & "' where NumVoluntario ='" & txtModVoluntario(0).Text & "'"
Base.Execute (strVolBaja)
MsgBox "El voluntario se ha dado de baja.", vbInformation, "BAJA DE VOLUNTARIOS."
Unload Me
Base.Close
frmListadoVoluntarios.dtaVoluntarios.Refresh
cmdBajaVol.Enabled = False
CmbMotivoBaja.Enabled = False
'CmbMotivoBaja.Text = "Seleccione Motivo"
'cmdBajaVol.Enabled = False
cmdSolicitaDador.Enabled = True
cmdSolicitaMaterial.Enabled = True
'GrabaDador.Enabled = True
'GrabaSocio.Enabled = True
End If
Exit Sub
MsgBox "El voluntario se ha dado de baja.", vbInformation, "BAJA DE VOLUNTARIOS."
End Sub
DESDE YA MUCHAS GRACIAS!!!! SALUDOS!!!

1 Respuesta

Respuesta
1

¿Me parece o falta algo en ese código?

La próxima vez ponerme el código de esta forma:

Private Sub cmdBajaVol_Click()
CmbMotivoBaja.Enabled = True
If MsgBox("¿Está seguro que desea dar de baja al Voluntario?", vbExclamation + vbYesNo, "BAJA DE VOLUNTARIOS.") = vbYes Then
    If CmbMotivoBaja.ListIndex = -1 Then
    MsgBox "Seleccione un motivo de baja.", vbCritical, "BAJA DE VOLUNTARIOS."
    Exit Sub
        Else
        Set Base = New ADODB.Connection
        AbrirBase'PROCEDIMIENTO PÚBLICO QUE ABRE LA CONEXIÓN.
        'Actualizo la DB con el motivo de la baja.
        Motivo = CmbMotivoBaja.List(CmbMotivoBaja.ListIndex)
        strVolBaja = "UPDATE VOLUNTARIOS SET FechaBaja ='" & lblFecha.Caption & "',MOTIVOBAJA= '" & Motivo & "' where NumVoluntario ='" & txtModVoluntario(0).Text & "'"
        Base.Execute (strVolBaja)
        MsgBox "El voluntario se ha dado de baja.", vbInformation, "BAJA DE VOLUNTARIOS."
        Unload Me
        Base.Close
        frmListadoVoluntarios.dtaVoluntarios.Refresh
        'INHABILITO UNOS BOTONES PAAA QUE LUEGO DE LA BAJA NO SE PUEDA HACER NADA.
        cmdBajaVol.Enabled = False
        CmbMotivoBaja.Enabled = False
        cmdSolicitaDador.Enabled = True
        cmdSolicitaMaterial.Enabled = True
    End If
    Exit Sub
End If
    MsgBox "El voluntario se ha dado de baja.", vbInformation, "BAJA DE VOLUNTARIOS."
End Sub

Bueno amigo. Muchas gracias!!! No se a que te refieres con lo de que si le falta algo... Te explico estos que por ahí no lo hice: Abrirbase en un Sub Declarado en un modulo .Vas (con B larga - TodoEXpertos me lo ponge con V) Base es la variable ADODB.Connection. La verdad que no sabía que existía esta función para insertar código fuente. Espero así se pueda entender!! Saludos y gracias nuevamente!!

No veo por que se repite ese código, el por que hace dos veces el mismo Msgbox, por eso pregunté que falta.

Para mí se debe a que está en el evento clic del botón y mi problema es que no sé en que evento poner el código.

El funcionamiento es el siguiente:

Lo quiero dar de baja al voluntario entonces hago clic en el botón. Me pregunta si deseo darle de baja. Hago clic en SÍ y me pide que seleccione un estado (se me habilita el ComboBox) ... luego de seleccionar el ESTADO en el combo tengo que hacer clic nuevamente en el botón para dar de baja por eso me pregunta devuelta...

Lo que quise hacer en otro momento es poner el código de ejecución de baja en el evento clic del ComboBox y no me resultó.

Tienes alguna idea de que puedo hacer para que se ejecute bien??

De antemano. MUCHAS GRACIAS!!!!!

Saludos!!!!

Ahí está el error, no deberías usar el mismo botón para dos instancias diferentes. Como tu trabajas en VB6 no me acuerdo si se podía o no, pero en .NET sería fácil trabajar con el mismo botón.

Hay dos cosas, una, es una variable de tipo Boolean que te indique si estás en el primer click o en el segundo, es decir, la seteas como True cuando habilita el Combo, entonces al dar click en la segunda vez preguntas si es True la variable y haces el otro bloque código.

La otra, sería ocultar el primer botón al habilitar el Combo y mostrar un segundo botón que puede ser en la misma ubicación o no.

GRACIAS POR RESPONDER AMIGO PERO NO ERA ESE EL PROBLEMA. EL PROBLEMA ESTABA EN EL ORDEN EN QUE SE PREGUNTABA.

PRIMERO SELECCIONAR EL MOTIVO DE BAJA Y DESPUÉS PREGUNTAR SI ESTA SEGURO.

MUCHAS GRACIAS IGUAL!! SALUDOS!!!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas