none
KIERO CONSULTAR PROVEEDOR Y LA VES MODIFICAR PROVEEDOR RRS feed

  • Pregunta

  •    ESTE MI TABLA  DISTRITO Y PROVEEDOR

    create table proveedor
    (
    cod_prov char(10)primary key,
    razon_social varchar(50)not null,
    ruc char(10)not null,
    direccion varchar(50)not null,
    telefono char(10)not null,
    cod_dis char(10)foreign key(cod_dis)references distrito(cod_dis)
    )
    go


    create table distrito
    (
    cod_dis char(10)primary key ,
    nom_dis varchar(50)not null
    )
    go

    //////////////ESTE ES MI CODIGO FUENTE V.NET   DE CONSULTAR PROVEEDOR

                Dim cmd As New SqlCommand(" select * from proveedor where razon_social like  '" & TextBox3.Text & "%'", CN)

               Dim da As New SqlDataAdapter

                    da.SelectCommand = cmd

                    Dim dt As New DataTable

                    da.Fill(dt)

                    If dt.Rows.Count = 0 Then


                        MessageBox.Show("NO EXITE EL PROVEEDOR", "VERIFIQUE", MessageBoxButtons.OK, MessageBoxIcon.Information)

                        TextBox3.Text = ""

                    Else

                  TextBox1.Text = dt.Rows(0).Item("cod_prov")
                        TextBox2.Text = dt.Rows(0).Item("ruc")
                        TextBox4.Text = dt.Rows(0).Item("direccion")
                        TextBox5.Text = dt.Rows(0).Item("telefono")

                     
                        ComboBox1.Text = dt.Rows(0).Item("cod_dis")

             
                    End If

    -------------------------------AQUI MODIFICAR EL PROVEEDOR--  EN PROCEDURE  SQLSERVER-------------

    create procedure sp_modificar_proveedores

    @v1 char(10),
    @v2 varchar(50),
    @v3 char(10),
    @v4 varchar(50),
    @v5 char(10),
    @v6 char(10)

    as

    update proveedor  set razon_social=@v2,ruc=@v3,direccion=@v4,telefono=@v5,cod_dis=@v6 where cod_prov=@v1
    go

    ////////////////////////AQUI MODIFICAR  EL PROVEEDOR      

                Dim cmd As New SqlCommand("sp_modificar_proveedores", CN)

                cmd.CommandType = CommandType.StoredProcedure


                cmd.Parameters.Add("@v1", SqlDbType.Char).Value = TextBox1.Text

                cmd.Parameters.Add("@v2", SqlDbType.VarChar).Value = TextBox3.Text

                cmd.Parameters.Add("@v3", SqlDbType.Char).Value = TextBox2.Text


                cmd.Parameters.Add("@v4", SqlDbType.VarChar).Value = TextBox4.Text

                cmd.Parameters.Add("@v5", SqlDbType.Char).Value = TextBox5.Text

                cmd.Parameters.Add("@v6", SqlDbType.Char).Value = ComboBox1.Text

                CN.Open()

                cmd.ExecuteNonQuery()


                CN.Close()

    /////mi problema es  ke cuando consulte mi provedor sus datos    codigo,razon, ruc,direcion,telefono  y  distrito

    ke  distrito ke se muestre su nombre  distritoo   no  su codigo  distrito

    solo nombre  del distrito

    y en boton modificar

    solo kiero modificar su   distrito  osea su nombre del distrito   de cada proveedor  nada mas

    ami me sale  pero  modificando por  numero del distrito    y   me consulta  provedor  pero tambien su numero dle provedor

    yo kiero ke se muestra solo  el nombre del distrito ke muestre y ke pueda modificar tambien el nombre del distrito

    por nombre

    gracias amigo mil garcias sii gracias sinceramente gracias por tu ayuda

     

    martes, 19 de junio de 2012 20:05

Todas las respuestas

  • Dim cmd As New SqlCommand(" select * from proveedor where razon_social like  '" & TextBox3.Text & "%'", CN)

    me pregunto cuale s la razon por la cual no usas parametros?

    porque no usas

    Dim cmd As New SqlCommand(" select * from proveedor where razon_social like  @razonsocial + '%'", CN)
    
    cmd.Parameters.AddWithValue("@razonsocial", TextBox3.Text);

    PD: sigo pensando que escribir k en lugar de q no debria demorar mas, pero si te ahce mas profesional el escribir correctamente




    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 19 de junio de 2012 21:07
  • solo kiero modificar su   distrito  osea su nombre del distrito   de cada proveedor  nada mas

    podrias crear un sp especial que solo tomes los camposunicamente que quieres modificar y crear el UPDATE solo de estos y no de toda la tabla completa


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 19 de junio de 2012 21:08
  • Hola.

    Siempre te saldra el codigo de tu distrito, porque en el ComboBox ese es el texto que le estas poniendo: 

    ComboBox1.Text = dt.Rows(0).Item("cod_dis")

    Para que eso no te suceda deberias usar un DataSource, donde le puedas poner el codigo del distrito y su codigo, con el fin de mostrara el nombre, pero poder usar su codigo, algo como:

    Dim da As New SqlDataAdapter
    Dim cmd As New SqlCommand("select p.cod_prov, p.ruc, p.direccion, p.telefono, p.cod_dis, d.nom_dis
    			   from proveedor p
    			   join distrito p on p.cod_dis = d.cod_dis
    			   where razon_social like  @razonsocial + '%'", CN)
    cmd.Parameters.AddWithValue("@razonsocial", TextBox3.Text)
    da.SelectCommand = cmd
    Dim dt As New DataTable
    da.Fill(dt)
    
    If dt.Rows.Count = 0 Then
    
       MessageBox.Show("NO EXITE EL PROVEEDOR", "VERIFIQUE", MessageBoxButtons.OK, MessageBoxIcon.Information)
    
        TextBox3.Text = ""
    
    Else
    
      TextBox1.Text = dt.Rows(0).Item("cod_prov")
      TextBox2.Text = dt.Rows(0).Item("ruc")
      TextBox4.Text = dt.Rows(0).Item("direccion")
      TextBox5.Text = dt.Rows(0).Item("telefono")
    
    'Se crea un Dictionary para almacenar la clave y el valor de distrito
    Dictionary<string, string> distrito = new Dictionary<string, string>(); 
    
    'Se agrega el registro al diccionario
    distrito[dt.Rows(0).Item("cod_dis").ToString()] = "nom_dis"
    
    'Se indica cual miembro se muestra y cual contiene el valor.
    comboBox1.DisplayMember = "Value"
    comboBox1.ValueMember = "Key"
    
    'Se enlaza el datasource
    ComboBox1.DataSource = new BindingSource(choices, null)
    
    dt.Rows(0).Item("cod_dis")
    
              
    End If

    Luego cuando vayas a modificar en vez de utilizar el combobox1.text utilizas combobox1.value 

    lo que seria como:

    Dim cmd As New SqlCommand("sp_modificar_proveedores", CN)
    
                cmd.CommandType = CommandType.StoredProcedure
    
    
                cmd.Parameters.Add("@v1", SqlDbType.Char).Value = TextBox1.Text
    
                cmd.Parameters.Add("@v2", SqlDbType.VarChar).Value = TextBox3.Text
    
                cmd.Parameters.Add("@v3", SqlDbType.Char).Value = TextBox2.Text
    
    
                cmd.Parameters.Add("@v4", SqlDbType.VarChar).Value = TextBox4.Text
    
                cmd.Parameters.Add("@v5", SqlDbType.Char).Value = TextBox5.Text
    
                cmd.Parameters.Add("@v6", SqlDbType.Char).Value = ComboBox1.Value.ToString()
    
                CN.Open()
    
                cmd.ExecuteNonQuery()
    
    
                CN.Close()

    Te resalto que tuve que modificar tu consulta Sql, ya que no tenia el nombre del distrito y eso es lo que querias.

    Ahora, para modificar solo debes seleccionar el nombre del Distrito en el combobox y con eso cuando hagas el update automaticamente selecciona el valor asociado.

    Mira las lineas resaltadas en negrita que fueron donde hice mayores cambios.

    Referencias: Dictionary (Dictionary<TKey, TValue>), y lo que le recomienda Leonardo es por uso de buenas practicas, para evitarle que su codigo sea vulnerable SqlParameterCollection.AddWithValue (Método)

    Saludos.


    - Si un comentario te ayuda a resolver tu problema, marcalo como respuesta, pero si basado en tu experiencia la consideras como util para la comunidad de desarrolladores, marcalo como util.



    • Editado By AlaN viernes, 22 de junio de 2012 0:13 Edit info
    viernes, 22 de junio de 2012 0:11
  • by  alan    respecto a 

    cmd.Parameters.Add("@v6", SqlDbType.Char).Value = ComboBox1.Value.ToString()

    me vota error porke    value.tostring     para ke no reconoce ese codigo 

    ok bueno no puedo igual modificar mi proveedor   por nombre de distrito   aun  amigo

    sábado, 23 de junio de 2012 15:16
  • by alan

      y  respecto   a    a consulta me sale error tambien  iguall

    me dice  e declaroo  mucho  p, p,   eso me sale  bueno  tu isi  este codigo conbinacion de tablas

    pero igual me vota eror    aun peor porke no consulta nada  ni sikiera mi  telefono, ruc

    bueno  no se ke hacer   seguire intentando codificar 

    sábado, 23 de junio de 2012 15:18
  • amigo   leandro tutuni

    tu anteriormente me ayudes   con   stock  te acuerdas    stock  de producto  en un datagridview y  lo isiste bien

    yy  salio  bien  

    te pido por favor ayhudame en este problema   en conssulta proveedor y  modificarr   el distrito del proveedor

    si mis codigo fuente   hay esta ya te di    sii puede modificar   completo mi codigo fuente  si tengo error

    en este pequeño problema estoy fallando  bueno gracias se ke  ayudaras sii lo gracias de corazon   amigo  leandro tutuni

    sábado, 23 de junio de 2012 15:56
  •  

    Hola, no sé si lo he entendido bien. Una pregunta, cuando consultas el proveedor que das los valores a los controles, ¿el combobox tiene los items rellenos con los proveedores: nombres y valores (id_proveedor)?

    En caso que sea a sin, en vez de hacer esto

           ComboBox1.Text = dt.Rows(0).Item("cod_dis")

            tendrías que hacer:

            ComboBox1.SelectedValue = dt.Rows(0).Item("cod_dis")

            y cuando guardes los valores en la base de datos vuelves a utilizar  ComboBox1.SelectedValue

    En caso que sea que no, podrías crear una consulta y rellenar el comobox con todos los proveedores y después aplicar el método de arriba.

    Por ejemplo, en el evento Load del form rellenar el comobox

            Using cnx As New OleDbConnection("TuConexion")
                cnx.Open()
                Using cmd As New OleDbCommand("SELECT nombre_proovedor, id_proveedor FROM tuTabla", cnx)
                    Using d_adapter As New OleDbDataAdapter(cmd)
                        Dim ds As New DataTable
                        d_adapter.Fill(ds)
                        ComboBox1.DisplayMember = "nombre_proovedor"
                        ComboBox1.ValueMember = "id_proveedor"
                        ComboBox1.DataSource = ds
                    End Using
                End Using
            End Using

    • Editado ToniAG sábado, 23 de junio de 2012 17:12
    sábado, 23 de junio de 2012 16:38
  • toni  AG                   bien  gracias

    ke bien bien muy perfecto tiene razon  solo era un codigo pequeñito gracias con tu ayuda  corregi sobre consultar provedor  por nombre del distrito y me salio perfecto bien

    amigo  eres fantastico  eres experto   veo salio perfecto   gracias mil gracias   bueno   ahora

    solo tengo un pequeñito problema  sobre modificar distrito ahora amigo se ke me puede ayudar   tu lo isiste ahora  y  consulta  bien

    pero ahor akiero modificar mis codigo fuente son estos   corrigeme sii gracias

    lo ke kiero es modificar el distrito    en vb.net

    -----------------------------mi tablas de sqlserver

    create table proveedor

    (
    cod_prov char(10)primary key,
    razon_social varchar(50)not null,
    ruc char(10)not null,
    direccion varchar(50)not null,
    telefono char(10)not null,
    cod_dis char(10)foreign key(cod_dis)references distrito(cod_dis)
    )
    go


    create table distrito
    (
    cod_dis char(10)primary key ,
    nom_dis varchar(50)not null
    )
    go

    ---------------------procedure----------sqlserver

    create procedure sp_modificar_proveedores

    @v1 char(10),
    @v2 varchar(50),
    @v3 char(10),
    @v4 varchar(50),
    @v5 char(10),
    @v6 char(10)

    as

    update proveedor  set razon_social=@v2,ruc=@v3,direccion=@v4,telefono=@v5,cod_dis=@v6 where cod_prov=@v1
    go

    /////////////////

    -------------------------codigo visual.net

    Dim cmd As New SqlCommand("sp_modificar_proveedores", CN)

                cmd.CommandType = CommandType.StoredProcedure


                cmd.Parameters.Add("@v1", SqlDbType.Char).Value = TextBox1.Text

                cmd.Parameters.Add("@v2", SqlDbType.VarChar).Value = TextBox3.Text

                cmd.Parameters.Add("@v3", SqlDbType.Char).Value = TextBox2.Text


                cmd.Parameters.Add("@v4", SqlDbType.VarChar).Value = TextBox4.Text

                cmd.Parameters.Add("@v5", SqlDbType.Char).Value = TextBox5.Text

                cmd.Parameters.Add("@v6", SqlDbType.Char).Value = ComboBox1.Text

                CN.Open()

                cmd.ExecuteNonQuery()

                CN.Close()

    ------------------------------------kiero modificar el distrito  de mi proveedor   por medio de un combobox1

    gracias espero tu resultado amigos   gracias   mil veces gracias de corazon

    sábado, 23 de junio de 2012 17:26
  • OK gracias mil gracias  con tu respuesta anterior esta analizando y tenia razon  otra ves

    era el mismo codigo fuente  okk   entiendo ahora    sii era el mismo codigo fuente ke tenia ke escribir al modificar

    sii   gracias   

    toni  AG     gracias

    sábado, 23 de junio de 2012 17:37
  • si amigo toni   AG

    GRACIAS me ayudaste en verdad  era un pequeño codigo  y tu lo isiste    amigooo de verdad

    perfecto gracias amigo   TONI AG

    esto era para  consulta el provedor  pero con su nombre del distrito

              ComboBox1.SelectedValue = dt.Rows(0).Item("cod_dis")

    estos era para modificar el provedor pero con su nombre del distrito

      cmd.Parameters.Add("@v6", SqlDbType.Char).Value = ComboBox1.SelectedValue

    tu me ayudaste  era lo mismo codigo analise y era igual tiene razon gracias amigo toni AG    perfecto gracias de corazon

    sábado, 23 de junio de 2012 17:43
  • gracias  gracias

    ke todo bien todo amigo  por las ayudas a todos ustedes

    leandro tutuni

    y toni AG    me ayudaron sobre estos problema de mis codigo fuente    tu me ayudate    toni AG en  consulta y modificar

    y tu  Leandro Tutuni me ayudaste en    stock del producto  en un datagridiview1

    sinceramente gracias amigos mio , de corazon le digo  hasta la proxima oportunidad amigo mio   por su ayuda sii

    bueno nos vemos. gracias  gracias

    sábado, 23 de junio de 2012 18:05
  • Hola.

    Donde te da el error? exactamente que hace o dice?

    Te recomiendo que abras una instancias de SQL Server primero y depures bien las consultas antes de utilizarlas, asi evitaras excepciones o errores por cuestiones relacionadas al query.

    Saludos.


    - Si un comentario te ayuda a resolver tu problema, marcalo como respuesta, pero si basado en tu experiencia la consideras como util para la comunidad de desarrolladores, marcalo como util.


    • Editado By AlaN sábado, 23 de junio de 2012 20:32
    sábado, 23 de junio de 2012 20:30
  • nada amigo ya lo corregir gracias al amigo    Toni AG     el me ayudo   el pequeñito error ke tenia   bueno  sobre modificar el provedor

    el me ayudo  y en consulta tambien

    pero de todas manera gracias a ti por estar presente en el momento de mi problema de mi codigo gracias  nos vemos.

    sábado, 23 de junio de 2012 21:49