Ver Mensaje Individual
  #5 (permalink)  
Antiguo 14/06/2011, 20:23
Avatar de slaxsna
slaxsna
 
Fecha de Ingreso: diciembre-2010
Ubicación: Tampico
Mensajes: 38
Antigüedad: 14 años
Puntos: 3
Respuesta: manejar cambios en un formulario usando teclas funcion

Cita:
Iniciado por future89 Ver Mensaje
me funciono exelenta gracias !

lo ultimo alguien sabe como eliminar un producto del listview y

en la columna cantidad del listview necesito que si al ingresar un libro me aparesca 1 y si ingreso el mismo libro otra vez me aumente en 2

una orientación por favor....
Bueno para eliminar un producto basta con solo tener seleccionada la fila del producto que deseas eliminar ...

Código vb:
Ver original
  1. listview1.SelectedItems(0).Remove()

Pero influyen otros factores como si vas a realizar la eliminacion del producto añadido entonces tendrias que volver a realizar la operacion para que en el textbox total te quite el monto de ese producto.

Puedes volver hacer esto:

Código vb:
Ver original
  1. For s = 0 To listview1.Items.Count - 1
  2.             Subtotal = CDbl(Subtotal) + CDbl(listview.Items(s).SubItems(2).Text)
  3.         Next
  4.  
  5.         TxtTotal.Text = "$" & Format(Subtotal, "0.00")

Lo de aumento de la columna cantidad pudiera ser ...

Te lo voy a poner con el codigo que tu tienes y también yo diría que tendrías que poner otra columna por ejemplo que sea

código - nombre - precio - cantidad - importe << donde en importe se va ir haciendo la sumatoria dependiendo de la cantidad de productos por ejemplo al momento que traigas el primer producto entonces la cantidad de precio e importe serán igual si vuelves añadir el mismo producto entonces la columna cantidad cambiaría a 2 y la columna importe cambiaría al total de esos 2. Entonces te pondre el código mas o menos como yo lo haría ...

Código vb:
Ver original
  1. Dim j As Integer ' Esta va ir al principio de la clase
  2.  
  3. Private Sub TbProducto_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TbProducto.KeyPress
  4.         'Valido que se ingrese solo numeros
  5.  
  6.         If Char.IsNumber(e.KeyChar) Then
  7.             e.Handled = False
  8.             'Valido que se presione Backspace,Enter
  9.        ElseIf Char.IsControl(e.KeyChar) Then
  10.             e.Handled = False
  11.             'Las demas teclas quedan bloqueadas
  12.        Else
  13.             e.Handled = True
  14.         End If
  15.  
  16.         'Si mando un ENTER entonces que busque
  17.        If e.KeyChar = Convert.ToChar(Keys.Enter) Then
  18.         Try
  19.             For Me.j = 0 To Me.listview1.Items.Count - 1
  20.                 If Me.listview1.Items(j).SubItems(0).Text = TbProducto.Text Then
  21.                     Call MismaFila()
  22.                     Exit Sub
  23.                 End If
  24.             Next
  25.             Call listview()
  26.         Catch ex As Exception
  27.             MsgBox(ex.Message)
  28.         End Try
  29.     End If        
  30.     End Sub
  31.  
  32.    Private Sub MismaFila()
  33.         Dim cantidad As Integer
  34.         Dim importe, subtotal As Double
  35.  
  36.         cantidad = CInt(Me.listview1.Items(j).SubItems(3).Text) + 1
  37.         Me.listview1.Items(j).SubItems(3).Text = cantidad
  38.  
  39.         importe = CInt(cantidad) * CDbl(Me.listview1.Items(j).SubItems(2).Text)
  40.         Me.listview1.Items(j).SubItems(4).Text = Format(importe, "0.00")
  41.  
  42.         For s = 0 To listview1.Items.Count - 1
  43.             subtotal = CDbl(subtotal) + CDbl(listview1.Items(s).SubItems(2).Text)
  44.         Next
  45.         txtTotal.Text = "$" & Format(subtotal, "0.00")
  46.     End Sub
  47.  
  48.   Private Sub listview()
  49.         Dim s As Integer
  50.         Dim Subtotal As Double
  51.  
  52.         Try
  53.             myConn = New SqlConnection("Initial Catalog=libroteka;Data Source=localhost;Integrated Security=SSPI;")
  54.        
  55.             myCmd = myConn.CreateCommand
  56.             myCmd.CommandText = "SELECT * FROM libros WHERE cod_libro ='" & TbProducto.Text & "' "
  57.  
  58.  
  59.             adaptor.SelectCommand = myCmd
  60.             adaptor.Fill(dataset, "0")
  61.  
  62.             Dim count = dataset.Tables(0).Rows.Count
  63.             If count > 0 Then
  64.  
  65.                 myConn.Open()
  66.                 With Ltver.Items.Add(TbProducto.Text, "cod_libro")
  67.                     .SubItems.Add(dataset.Tables(0).Rows(0).Item("nombre_libro"))
  68.                     .SubItems.Add(dataset.Tables(0).Rows(0).Item("precio"))    
  69.                     .SubItems.Add(dataset.Tables(0).Rows(0).Item("precio"))    
  70.                End With
  71.             End If
  72.  
  73.         TbProducto.Clear()
  74.         dataset.Clear()
  75.         myConn.Close()
  76.  
  77.             For s = 0 To listview1.Items.Count - 1
  78.                 Subtotal = CDbl(Subtotal) + CDbl(listview1.Items(s).SubItems(2).Text)
  79.             Next
  80.             Me.txtTotal.Text = "$" & Format(Subtotal, "0.00")
  81.  
  82.         Catch ex As Exception
  83.            MsgBox(ex.Message)
  84.         End Try
  85.     End Sub


Es una idea muy muy vaga y no testeada entonces no te puedo asegurar si correría bien, pero la idea ahí esta solo es cuestión de que tu modifiques y hayes el resultado deseado.

Bueno creo que ya te ayude bien con tu tarea jejej saludos!

Edit:
Recuerda que el codigo anterior que te pase hacias la sumatoria de la columna precio para que lo imprimiera en el txtTotal.text entonces por logica ya no sumaras ese si no la de la columna importe...

Saludos