none
update con visual basic y sql server express

    Question

  • hola quiero actualizar datos que tengo guardado en una base de datos sql server pero nada mas quiero modificar dos campos de mi base de datos los campos de mi tabla son

    mi base de datos tiene estod campos:

    contrato, PO, mes, año, periodo, buque, embarcado, retrasado

    los que nada mas quiero que se modifiquen, son: embarcado, retraso.

    mi codigo con el que consulto es:

    Dim

     

    sqlssssdic As String = " SELECT (ShipAdvice.retraso) FROM ShipAdvice inner join InvPartes on ShipAdvice.parte = InvPartes.parte " & _

     

    "WHERE (ShipAdvice.mes = '12') AND (ShipAdvice.periodo = 'A') AND (ShipAdvice.ao = @ao) AND (ShipAdvice.parte = @parte)"

    a si es como lo consulto y me los manda a unos texbo:

    pero quiero que tengan la opcion de ser modificados desde la base de datos:

     

     

    Tuesday, June 01, 2010 12:58 AM

Answers

  • hola

    pero en el select solo estas recuperando el valor de "retraso" y el otro campo ?

    podrias hacer algo como esto

    Try

        Using cnn As SqlConnection = New SqlConnection("connection string")

            Dim sql As String = "UPDATE ShipAdvice SET " & _
                                        "retraso = @retraso, " & _
                                        "embarcado = @embarcado " & _
                                    "WHERE (ShipAdvice.mes = '12') " & _
                                    "AND (ShipAdvice.periodo = 'A') " & _
                                    "AND (ShipAdvice.ao = @ao) " & _
                                    "AND (ShipAdvice.parte = @parte)"
                                   
            Dim cmd As SqlCommand = New SqlCommand(sql, cnn)
           
            cmd.Parameters.AddWithValue("@retraso", txtRetraso.Text)
            cmd.Parameters.AddWithValue("@embarcado", txtEmbarcado.Text)
            cmd.Parameters.AddWithValue("@ao", txtAo.Text)
            cmd.Parameters.AddWithValue("@parte", txtParte.Text)
           
            Dim cant As Integer = cmd.ExecuteNonQuery()
       
            If cant > 0 Then
                MessageBox.Show("Se han actualizado el registro")
            End If
           
        End Using
       
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

    lo que no supe es de donde salen los valores de los parametros, especialmente el de @ao y @parte, pero bueno puede adaptar el codigo, este solo intenta mostrar la tecnica que puede aplciar para actualziar

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Proposed as answer by Leandro TuttiniMVP Tuesday, June 01, 2010 1:09 AM
    • Marked as answer by juan11mh Tuesday, June 01, 2010 3:10 PM
    Tuesday, June 01, 2010 1:09 AM
  • si olvide poner la apertura de la conecion

    debajo de

    Using cnn As SqlConnection = New SqlConnection("connection string")

    escribe:

    cnn.Open()

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by juan11mh Tuesday, June 01, 2010 3:46 PM
    Tuesday, June 01, 2010 3:16 PM
  • hola

    si revisas el query que arme, veras que deje espacion al finalizar cada renglon de la consulta

    en tu caso has peusto todo junto

    Dim sql As String = "UPDATE ShipAdvice " & _
    "SET embarcado = @embarcado " & _
    "WHERE(ShipAdvice.mes = '1') AND ((ShipAdvice.periodo = 'B') or (ShipAdvice.periodo = 'C')) AND (ShipAdvice.ao =@ao) AND (ShipAdvice.parte =@parte)"

    veras que puse espacios al finalizar cada renglon

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by juan11mh Tuesday, June 01, 2010 4:40 PM
    Tuesday, June 01, 2010 3:53 PM

All replies

  • hola

    pero en el select solo estas recuperando el valor de "retraso" y el otro campo ?

    podrias hacer algo como esto

    Try

        Using cnn As SqlConnection = New SqlConnection("connection string")

            Dim sql As String = "UPDATE ShipAdvice SET " & _
                                        "retraso = @retraso, " & _
                                        "embarcado = @embarcado " & _
                                    "WHERE (ShipAdvice.mes = '12') " & _
                                    "AND (ShipAdvice.periodo = 'A') " & _
                                    "AND (ShipAdvice.ao = @ao) " & _
                                    "AND (ShipAdvice.parte = @parte)"
                                   
            Dim cmd As SqlCommand = New SqlCommand(sql, cnn)
           
            cmd.Parameters.AddWithValue("@retraso", txtRetraso.Text)
            cmd.Parameters.AddWithValue("@embarcado", txtEmbarcado.Text)
            cmd.Parameters.AddWithValue("@ao", txtAo.Text)
            cmd.Parameters.AddWithValue("@parte", txtParte.Text)
           
            Dim cant As Integer = cmd.ExecuteNonQuery()
       
            If cant > 0 Then
                MessageBox.Show("Se han actualizado el registro")
            End If
           
        End Using
       
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

    lo que no supe es de donde salen los valores de los parametros, especialmente el de @ao y @parte, pero bueno puede adaptar el codigo, este solo intenta mostrar la tecnica que puede aplciar para actualziar

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Proposed as answer by Leandro TuttiniMVP Tuesday, June 01, 2010 1:09 AM
    • Marked as answer by juan11mh Tuesday, June 01, 2010 3:10 PM
    Tuesday, June 01, 2010 1:09 AM
  • HOLA LENADRO SI EFECTIVAMENTE YA PUSE EL CODIGO QUE ME MANDASTE PERO A LA HORA DE GUARDAR ME SALE ESTE ERROR ExecuteNonQuery Requiere una conexion abierta y disponible el estado actual de la conecion es cerrada

     

    mi conexion es esta:

     

    Using cnn As New SqlConnection(ConfigurationManager.ConnectionStrings("WindowsApplication1.My.MySettings.ComprasConnectionString").ToString())

    que es lo que estoy haciendo mal.

    Tuesday, June 01, 2010 3:13 PM
  • Hola, te falta indicar cnn.Open antes de ejecutar el método ExecuteNonQuery
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    Tuesday, June 01, 2010 3:15 PM
  • si olvide poner la apertura de la conecion

    debajo de

    Using cnn As SqlConnection = New SqlConnection("connection string")

    escribe:

    cnn.Open()

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by juan11mh Tuesday, June 01, 2010 3:46 PM
    Tuesday, June 01, 2010 3:16 PM
  • ESTE ES MI CODIGO Y AL PARECER ESTA BIEN PERO ALA HORA DE EJECUTARLO ME MANDA UN ERROR QUE DICE QUE HAY UN ERROR EN embarcado:

    ME PRODRIAN AYUDAR YO YA LO REVISE Y AL PARECER ESTA BIEN.

    Try

     

    Using cnn As New SqlConnection(ConfigurationManager.ConnectionStrings("WindowsApplication1.My.MySettings.ComprasConnectionString").ToString())

    cnn.Open()

     

    Dim sql As String = "UPDATE ShipAdvice" & _

     

    "SET embarcado = @embarcado" & _

     

    "WHERE(ShipAdvice.mes = '1') AND ((ShipAdvice.periodo = 'B') or (ShipAdvice.periodo = 'C')) AND (ShipAdvice.ao =@ao) AND (ShipAdvice.parte =@parte)"

     

    Dim cmd As SqlCommand = New SqlCommand(sql, cnn)

    cmd.Parameters.AddWithValue(

    "@embarcado", sene1.Text)

    cmd.Parameters.AddWithValue(

    "@retraso", sene2.Text)

     

    Dim cant As Integer = cmd.ExecuteNonQuery()

     

    If cant > 0 Then

    MessageBox.Show(

    "Se han actualizado el registro")

     

    End If

     

    End Using

     

    Catch ex As Exception

    MsgBox(ex.Message)

     

    End Try

    NO SE DONDE ESTA EL ERROR. AYUDA...

    Tuesday, June 01, 2010 3:48 PM
  • hola

    si revisas el query que arme, veras que deje espacion al finalizar cada renglon de la consulta

    en tu caso has peusto todo junto

    Dim sql As String = "UPDATE ShipAdvice " & _
    "SET embarcado = @embarcado " & _
    "WHERE(ShipAdvice.mes = '1') AND ((ShipAdvice.periodo = 'B') or (ShipAdvice.periodo = 'C')) AND (ShipAdvice.ao =@ao) AND (ShipAdvice.parte =@parte)"

    veras que puse espacios al finalizar cada renglon

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by juan11mh Tuesday, June 01, 2010 4:40 PM
    Tuesday, June 01, 2010 3:53 PM