none
Como puedo hacer que no inserte ningún valor cuando el combobox esta deshabilitado RRS feed

  • Pregunta

  • Hola chic@s buena tarde u na vez mas necesito de su ayuda y es que en esta ocasión necesito que al momento de des habilitar ciertos combobox los datos que estos contentan no se inserten en mi base, ya que como tengo ahora mi programa los inserta aunque estén des habilitados alguna idea de como podría hacerlo? les dejo mi código y les agradezco de antemano el apoyo

    rivate Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
            If txtId.Text.Equals("") = False And TxtAcreditado.Text.Equals("") = False And TxtBuc.Text.Equals("") = False And TxtRating.Text.Equals("") = False And TxtSucursal.Text.Equals("") = False Then
                If conn.personaRegistrada(txtId.Text) = False Then
                    MsgBox(conn.insertarPersona(txtId.Text, CDate(DtpFecha2.Text), CDate(DtpFecha3.Text), CDate(DtpFecha.Text), TxtAcreditado.Text, TxtBuc.Text, ComboCentro.SelectedValue, ComboSegmento.SelectedValue, TxtRating.Text, ComboDirec.SelectedValue, ComboRevi.SelectedValue, ComboPusher.SelectedValue, ComboPrecla.Text, TxtSucursal.Text, CDate(DatePrecla.Text), ComboSub.SelectedValue, Sesarbox.Checked.ToString))
                    txtId.Clear()
                    TxtAcreditado.Clear()
                    TxtBuc.Clear()
                    TxtRating.Clear()
                    TxtSucursal.Clear()
                    txtId.Focus()
                Else
                    MsgBox("La persona ya esta registrada")
                End If

            Else
                MsgBox("No se puede insertar existen campos vacios")
            End If
        End Sub

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'TODO: esta línea de código carga datos en la tabla 'Subsegmentos.tblCatSubsegmentos' Puede moverla o quitarla según sea necesario.
            Me.TblCatSubsegmentosTableAdapter.Fill(Me.Subsegmentos.tblCatSubsegmentos)
            'TODO: esta línea de código carga datos en la tabla 'Clienteslimites._clienteslimites' Puede moverla o quitarla según sea necesario.
            Me.ClienteslimitesTableAdapter.Fill(Me.Clienteslimites._clienteslimites)
            'TODO: esta línea de código carga datos en la tabla 'Pusher.tblCatEjecutivoAdministrativo' Puede moverla o quitarla según sea necesario.
            Me.TblCatEjecutivoAdministrativoTableAdapter.Fill(Me.Pusher.tblCatEjecutivoAdministrativo)
            'TODO: esta línea de código carga datos en la tabla 'DirectoresZona.tblCatDirectoresZona' Puede moverla o quitarla según sea necesario.
    Me.TblCatDirectoresZonaTableAdapter.Fill(Me.DirectoresZona.tblCatDirectoresZona)
            'TODO: esta línea de código carga datos en la tabla 'Segmentos.tblCatSegmentos' Puede moverla o quitarla según sea necesario.
            Me.TblCatSegmentosTableAdapter.Fill(Me.Segmentos.tblCatSegmentos)
            'TODO: esta línea de código carga datos en la tabla 'CentroReg.tblCatCentroRegional' Puede moverla o quitarla según sea necesario.
            Me.TblCatCentroRegionalTableAdapter.Fill(Me.CentroReg.tblCatCentroRegional)
            'TODO: esta línea de código carga datos en la tabla 'Revisadopor.tblCatRevisadoPor' Puede moverla o quitarla según sea necesario.
            Me.TblCatRevisadoPorTableAdapter.Fill(Me.Revisadopor.tblCatRevisadoPor)

        End Sub

        Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
            If CheckBox1.Checked = True Then
                Label15.Enabled = True
                DatePrecla.Enabled = True
                Label13.Enabled = True
                ComboPrecla.Enabled = True
            Else
                Label15.Enabled = False
                DatePrecla.Enabled = False
                Label13.Enabled = False
                ComboPrecla.Enabled = False
            End If
        End Sub


        Private Sub ComboSegmento_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ComboSegmento.SelectionChangeCommitted

            Label16.Enabled = ComboSegmento.SelectedValue.ToString = "C"
            ComboSub.Enabled = ComboSegmento.SelectedValue.ToString = "C"

            Sesarbox.Enabled = ComboSegmento.SelectedValue.ToString = "P"


        End Sub

    End Class

    • Cambiado Enrique M. Montejo martes, 21 de marzo de 2017 7:38 Pregunta relacionada con el acceso a datos.
    viernes, 17 de marzo de 2017 23:05

Todas las respuestas

  • Al insertar un registro inserta todos los campos, no es posible que no inserte ciertos campos, de aquellos campos que no proporcionas un valor mediante tu código te aparecerán como "Null", en tu tabla, con estas bases que es lo que tu deseas??

    -que se inserten con valores nulos o que se inserten con valores por default???

    Saludos

    sábado, 18 de marzo de 2017 0:02
  • Hola, disculpa que responda hasta ahora, deseo que se inserten valores nulos
    martes, 21 de marzo de 2017 17:25
  • Hola, uso la propiedad collection
    martes, 21 de marzo de 2017 17:27
  • Solo pasa los campos y parámetros que si tengan valor, omitiendo el resto, ahora bien si este caso es variable y que hasta que estas en tiempo de ejecucion lo sabes, entonces usa If o Select Case, lo que mejor te acomode, ej (te pongo un ejemplo mio debido a que no entendi del todo el tuyo):

    Supongamos que vamos a insertar un cheque y tenemos el caso de que, si no hay comentario, quede en NULL:

    Dim Comando As SqlCommand

    If Form1.ComboBox1.Enabled = True
       mySQL = "INSERT INTO cheques " _
                & "(cheque, cliente, fecha_dep, importe_cheque, fecha_tesoreria, comentario, usuario)" _
                & "VALUES (@che_, @cte_, @fechad_, @imp_, @fechat_, @com_, @usu_)"

                Dim Comando As New SqlCommand(mySQL, con)

                Comando.Parameters.AddWithValue("@che_", Form1.TextBox13.Text)
                Comando.Parameters.AddWithValue("@cte_", Form1.Label38.Text)
                Comando.Parameters.AddWithValue("@fechad_", Form1.DateTimePicker2.Value)
                Comando.Parameters.AddWithValue("@imp_", imp_a)
                Comando.Parameters.AddWithValue("@fechat_", Now)
                Comando.Parameters.AddWithValue("@com_", Form1.ComboBox1.Text)
                Comando.Parameters.AddWithValue("@usu_", usu_a)

    else
               mySQL = "INSERT INTO cheques " _
                & "(cheque, cliente, fecha_dep, importe_cheque, fecha_tesoreria, usuario)" _
                & "VALUES (@che_, @cte_, @fechad_, @imp_, @fechat_, @usu_)"

                Dim Comando As New SqlCommand(mySQL, con)

                Comando.Parameters.AddWithValue("@che_", Form1.TextBox13.Text)
                Comando.Parameters.AddWithValue("@cte_", Form1.Label38.Text)
                Comando.Parameters.AddWithValue("@fechad_", Form1.DateTimePicker2.Value)
                Comando.Parameters.AddWithValue("@imp_", imp_a)
                Comando.Parameters.AddWithValue("@fechat_", Now)
                Comando.Parameters.AddWithValue("@usu_", usu_a)

    End If

            abrir()  'abrir es la fucnion que abre la conexion
            x = Comando.ExecuteNonQuery()
            Comando.Dispose()
            cerrar()   'cerrar es la fucnion que cierra la conexion

    En un caso se considera Form1.ComboBox1.Text como dato del parámetro @com_ y en otro caso no se considera ni el parámetro ni el valor, en este segundo caso una vez hecho el INSERT a la tabla el comentario quedara "Null".

    En caso de que sean muchos los campos que pueden quedar nulos, y no siempre sean los mismos,  mejor te recomiendo que los dejes vacíos o con cero, esto es los campos varchar con una cadena = "" y en los casos numéricos con valor = 0, mejor que valores nulos, de esa forma tu consulta no varia y solo pondrás los if para llenar las variables.

    Espero haber sido claro.

    Saludos






    • Editado gasgdl miércoles, 22 de marzo de 2017 2:03
    • Propuesto como respuesta Joyce_AC miércoles, 22 de marzo de 2017 18:34
    martes, 21 de marzo de 2017 22:49