Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: RiasChan en 21 Marzo 2018, 01:25 am



Título: Sumar datos cocretos de una base de datos desde VB 6.0 con ADO
Publicado por: RiasChan en 21 Marzo 2018, 01:25 am
Necesitaria saber como sumar una columna en específico de clientes en especifico con visual 6.0.

La idea es esta:

Cada vez que le "anoto" a un cliente una venta que no paga (que saca fiado) en la base de datos se anota un 1. Entonces, cuando ese cliente me vuelve a pedir fiado y lo fio de nuevo, me agrega otro registro con el mismo codigo de cliente, y otro 1.

Entonces en la base de datos, tengo el codigo de cliente (repetido tantas veces lo fie) Sus datos de esa venta fiada, y un número 1 por cada vez que lo fie.

la idea es, traer a un textbox la suma de esos "1" que corresponden al cliente "4" por ejemplo.


Por ejemplo:

Pepito es el cliente 4
Jose es el cliente 5

A Pepito lo fié 1 vez (+1 a la cuenta de fiado)
A Jose lo fie 1 vez (+1)
A pepito lo volvi a fiar (+1)

Entonces, quiero que en el textbox me diga que a Pepito en total lo fie 2 veces (que me sume los 2 números 1 que tengo en el registro correspondiente a Pepito.)

El campo donde almaceno la cantidad de fiados es (donde va el 1), es
CantFiado

El cambo donde almaceno el código de cada cliente, es
CodigoCliente

y al tabla se llama Fiar.

Tengo entendido q se hace con uan sentencia sql de sum, pero no sé usarla.

gracias, espero me puedan ayudar


Asi lo tengo codificado:

Primero el form load carga esto, carga los datos de la base de datos a una lista, me trae unos ciertos datos de la base de datos no todos los registros

Código:
Dim rs As adodb.Recordset
Dim sql As String
sql = "Select * from Fiar order by Apellido"
If Not Conectar() Then Exit Sub
Set rs = cn.Execute(sql)
List4.Clear
Do While Not rs.EOF
List4.AddItem Format(rs!FiadoNumero, "000") & vbTab & rs!Apellido & ", " & vbTab & rs!Nombre
rs.MoveNext
Loop
Set rs = Nothing
''Call cargardatosventas
''Call ordenar
Desconectar
'List1.ListIndex = 0

Despues, cuando hago click en algun elemento de la lista, me trae cada campo de la base de datos en un txtbox diferente:

Código:
Private Sub cargafiado()

Dim opc As String
Dim cod As Integer
Dim sql As String
opc = List4.List(List4.ListIndex)
cod = Val(Left(opc, 3))
sql = "Select * from Fiar where FiadoNumero = " & cod
Dim rs As adodb.Recordset
If Not Conectar() Then Exit Sub
Set rs = cn.Execute(sql)
'' un registro para cada textbox como este:
txtccodigo = IIf(IsNull(rs!CodigoCliente), "(vacío)", rs!CodigoCliente)
Set rs = Nothing
Desconectar
end sub


La idea seria en una sub nueva o a continuación de "Cargafiado" haga lo que pido arriba, gracias


Título: Re: Sumar datos cocretos de una base de datos desde VB 6.0 con ADO
Publicado por: RiasChan en 21 Marzo 2018, 18:35 pm
Ya está ya lo solucioné. Lo que hice fue llamar a esta función cuando carga la lista y los demás componentes de los texbox

Código:
Private Sub lauchita()
Dim rs2 As ADODB.Recordset
Dim cod2 As Integer
Dim sql2 As String
cod2 = Val(Left(opc, 3))
[b]sql2 = "Select sum(CantFiado) as importe from Fiar where CodigoCliente =" & Val(txtccodigo.Text)[/b]
If Not Conectar() Then Exit Sub
Set rs2 = cn.Execute(sql2)
txtLaucha = IIf(IsNull(rs2!importe), "(vacío)", rs2!importe)
Set rs2 = Nothing
Desconectar
End Sub


Entonces, le digo que me haga el cálculo SQL donde CodigoCliente sea igual al valor que haya en el texto del código del cliente. Obviamente serán iguales, es comparar el valor del RS de la base de datos con el mismo valor traído de la misma base de datos pero ya guardado en el textbox. Entonces cuando esos dos 2 son iguales (siempre) me trae la suma de la columnna de cantidad fiados.

Bueno, parece q funcionó luego de mucho insistir, ya lo probe con 1, 2 y 3 registros y funciona