Como restar dos listbox

Saludos de nuevo te molesto con una duda en programación
Pero ahora ya no tiene que ver con exportar (eso ya quedo entendido). Veras tengo 2 tablas: Vale y Contravale, ambas con los mismos datos : código, nombre, cantidad.
El Vale representa todo lo que se vende, y el contravale lo que devuelven. EL punto es que hay hacer el importe final se necesita que se resten a los productos que se vendieron los productos que se devolvieron, algo así, los datos se muestran en listbox respectivamente, y con un botón llamado "ajustar consumo" se hace la resta:
Tabla Vales :
Código -- Nombre-- Cantidad
123 Acetona 3
124 Cobalto 5
125 Zinc 10
Tabla contravales (devoluciones)
123 Acetona 1
124 Cobalto 4
Y el resultado tendría que ser así, mostrándolo en un listbox
123 Acetona 2
124 Cobalto 1
125 Zinc 10
Sospecho que no es tan complicado de hacer, solo que ya le he dado vueltas al asunto .. Y l lograr hacer la resta con un for comparando los códigos me deja de fuera el ultimo valor, por que no hay coincidencia con el código de la tabla de devoluciones..
Sinceramente espero me des una orientación, como amablemente lo has estado haciendo . Muchas gracias de ante mano

1 Respuesta

Respuesta
1
Te recomiendo que para lo que entendí, debería utilizar otro control en vez del listbox, uno que te permita utilizar un arreglo de POR por Y dimensiones. Por lo menos un datagriview. De todas maneras ya he realizado el código para que te sirva con los listbox pero no se ve muy bien.
Sobre las tablas con las mismas columnas no es una BUENA PRACTICA, pero si quieres nos sentamos y vemos la película completa.
Imports System. Data
Imports
System. Data. SqlClient
Partial
Class ListBoxResta
Inherits System.Web.UI.Page
Public connex As New SqlConnection
Public Ds As New DataSet
Public dtVales As New DataTable
Public dtContraVales As New DataTable
Public dtResultado As New DataTable
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
connex.ConnectionString =
"Data Source=P5630;Initial Catalog=Northwind;Persist Security Info=True;User ID=sa;Password=sa"
If Not IsPostBack Then
Dim cadenaVales As String = "Select codigo , Nombre +' ' + cast(cantidad as varchar(18)),cantidad from Vales"
Dim cadenaRV As String = "Select codigo , Nombre +' ' + cast(cantidad as varchar(18)) ,cantidad from ContraVales"
' Dim cadenaVales As String = "Select codigo , Nombre ,cantidad from Vales"
' Dim cadenaRV As String = "Select codigo , Nombre ,cantidad from ContraVales"
LlenarListBox(ListBox1, dtVales, cadenaVales)
LlenarListBox(ListBox2, dtContraVales, cadenaRV)
ViewState(
"dtvales") = dtVales
ViewState(
"dtContraVales") = dtContraVales
Else
dtVales = ViewState(
"dtvales")
dtContraVales = ViewState(
"dtContraVales")
End If
End Sub
Public Sub LlenarListBox(byref lstbox as ListBox,byref dt as DataTable,sql as string )
Try
connex.Open()
Dim sqlda As New SqlDataAdapter
sqlda.SelectCommand =
New SqlCommand
sqlda.SelectCommand.Connection = connex
sqlda.SelectCommand.CommandText = sql
sqlda.Fill(dt)
If dt.Rows.Count > 0 Then
lstbox.DataTextField = dt.Columns.Item(1).ColumnName
lstbox.DataValueField = dt.Columns.Item(0).ColumnName
lstbox.DataSource = dt
Else
lstbox.DataSource =
Nothing
End If
lstbox.DataBind()
Catch ex As Exception
Throw ex
Finally
connex.Close()
End Try
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
dtResultado = dtVales.Copy
Dim i As Integer
Dim drresult As DataRow
For Each rowVales As DataRow In dtVales.Rows
For Each rowContraVales As DataRow In dtContraVales.Rows
If rowVales(0).Equals(rowContraVales(0)) Then
drresult = dtResultado.Rows(i)
drresult(0) = rowVales(0)
drresult(1) = rowVales(1)
drresult(1) = rowVales(1) &" --> " & rowVales(2) - rowContraVales(2)
End If
Next
i = i + 1
Next
Me.ListBox3.DataTextField = dtResultado.Columns.Item(1).ColumnName
ListBox3.DataValueField = dtResultado.Columns.Item(0).ColumnName
ListBox3.DataSource = dtResultado
ListBox3.DataBind()
Catch ex As Exception
Throw ex
Finally
End Try
End Sub
End
Class
Saludos...
Muchas gracias por responder tan rapido.. ya estoy checando el código y adaptándolo a la aplicación. Tomare en cuenta lo que mencionas de tener las tablas con mismas columnas.. nuevamente gracias por el tiempo..

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas