none
Cambiar Valores a un conjunto de datos RRS feed

  • Pregunta

  • Hola como cambio los valores a un conjunto de filas en visual basic 2010 con access db.

    Resulta que yo tengo 

    id                 autonumerico
    codigo          Texto
    marca          texto
    nombre        texto 
    color            texto
    talle            texto
    stock          texto
    precio         texto

    Y quiero con una ventana cargar un articulo y podes cambiarle el precio a todos los que tengan el mismo articulo.

    Porque si tengo que cambiar uno por uno se hace muy largo porque por cada codigo yo puedo tener hasta 30 Talles distintos. Se entiende?

    Alguien que me pueda ayudar por favor!

    jueves, 28 de junio de 2012 0:05

Todas las respuestas

  • Esa tabla que usted describe, ¿qué representa?  ¿Los artículos?

    Cuando usted dice "cambiarle el precio a todos los que tengan el mismo artículo", ¿qué son los?  ¿Los qué?


    Jose R. MCP
    Code Samples

    jueves, 28 de junio de 2012 1:07
  • Y quiero con una ventana cargar un articulo y podes cambiarle el precio a todos los que tengan el mismo articulo.

    cual seria el campo articulo por el cual tendrias que filtrar la tabla ?

    porque se usaria

    UPDATE NombreTable Set precio = @precio WHERE idarticulo = @idarticulo

    pero no veo el campo articulo por el cual detectar que registros afectar

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 28 de junio de 2012 13:01
  • Hola ya solucione, el articulo seria loq ue yo llamo codigo! 

    lo hice asi:

    Dim cnx As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\Facturacion\Facturacion\Facturacion.mdb")
            Dim SQLUpdate As String
            SQLUpdate = "update Articulos set Codigo=@Codigo, Precio=@Precio where Codigo=@Codigo"
            Dim cmd As New OleDbCommand(SQLUpdate, cnx)
            cmd.CommandType = CommandType.Text
            cmd.Parameters.AddWithValue("@Codigo", Label1.Text)
            cmd.Parameters.AddWithValue("@Precio", TextBox2.Text)
            cnx.Open()
            cmd.ExecuteNonQuery()
            MessageBox.Show("El Articulo Nº " + Label1.Text + " ha sido actualizado.", "Agregado", MessageBoxButtons.OK, MessageBoxIcon.Information)
            cnx.Close()

    jueves, 28 de junio de 2012 23:27
  • Ahora una pregunta, como podria hacer que se vaya actualizando mi tabla de facturas aumentando el uno para cada vez que yo haga un presupuesto?

    Dim cnxf As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\Facturacion\Facturacion\Facturacion.mdb")
            Dim SQLUpdatef As String
            SQLUpdatef = "update Documentos set Nro=@Nro where Nro=@Nro"
            Dim cmdf As New OleDbCommand(SQLUpdatef, cnxf)
            cmdf.CommandType = CommandType.Text
            Dim var1 As Integer = 1
            Dim var2 As Integer = TextBox1.Text
            Dim fac As Integer = var1 + var2
            cmdf.Parameters.AddWithValue("@Nro", fac)
            cnxf.Open()
            cmdf.ExecuteNonQuery()
            cnxf.Close()

    YO lo hice asi y el codigo anda osea no me da errores pero tampoco actualiza..

    Yo al textbox1 lo configure desde las propiedades para que lea mi DocumentosDataBinding con el numero de factura.

    No da errores pero tampoco actualiza el numero aumentandolo en 1.

    Saludos y muchas gracias.

    jueves, 28 de junio de 2012 23:29
  • Pues claro, no actualiza porque para que el registro sea encontrado, Nro tiene que ser igual a @Nro, pero si son iguales quiere decir que ya están actualizados.  Así que sí, esa consulta está incorrecta.

    En general uno hace un Update <tabla> Set <campo> = <valor> WHERE <campo de clave primaria> = <valor de clave primaria>.  Si está tratando de actualizar más de un registro, pues entonces el WHERE cambia, pero para ayudarle mejor necesitaríamos que usted describa lo que quiere que pase en sus propias palabras.  Ejemplo:  Quiero actualizar todos aquellos registros cuyo Campo X tenga un valor de tanto.  Los valores que quiero cambiar son A, B y C en las columnas AA, BB y CC.

    Si puede usted articular su consulta de esa manera, entonces nos será más fácil ayudar.


    Jose R. MCP
    Code Samples

    viernes, 29 de junio de 2012 4:01
  • Yo lo que quiero hacer a grandes rasgos explico es que cada vez que se entra al formulario presupuesto y se hace un presupuesto y se imprime que una vez que se le da al boton imprimir me actualize mi numero de factura aumentandolo en 1.. eso es todo y yo para eso tengo una tabla llamada documentos que tiene un campo id autonumero, otro documento y otro nro.. yo solo quiero que el campo nro vaya aumentandolo en 1 cada vez q imprimo un presupuesto.. es todo

    Saludos!

    viernes, 29 de junio de 2012 20:16
  • WebJose fuiste de mucha ayuda ahi entendi como funciona el update muchas gracias lo unico que hice fue

            SQLUpdatef = "update Documentos set Nro=@Nro where Nro<>@Nro"
            

    Osea que cuadno el nro sea distinto le sume uno, cosa que siempre va a ser distinto por lo tanto siempre me suma uno. El codigo completo queda asi:

    Dim cnxf As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\Facturacion\Facturacion\Facturacion.mdb")
            Dim SQLUpdatef As String
            SQLUpdatef = "update Documentos set Nro=@Nro where Nro<>@Nro"
            Dim cmdf As New OleDbCommand(SQLUpdatef, cnxf)
            cmdf.CommandType = CommandType.Text
            Dim var1 As Integer = 1
            Dim var2 As Integer = TextBox1.Text
            Dim fac As Integer = var1 + var2
            cmdf.Parameters.AddWithValue("@Nro", fac)
            cnxf.Open()
            cmdf.ExecuteNonQuery()
            cnxf.Close()

    viernes, 29 de junio de 2012 20:22