Visual Basic - recordset lento

Life is soft - evento anual de software empresarial
 
Vista:
Imágen de perfil de ivan

recordset lento

Publicado por ivan (8 intervenciones) el 10/09/2014 17:13:58
HOla: mi problema es el siguiente, en un proceso sumo todas las facturas de los clientes y en un campo le pongo el total de lo que debe el cliente asi recorre todos los clientes, al proceso lo hago con do until y es lento como puedo hacerlo al proceso que sea mas rapido desde ya muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 107
Ha disminuido su posición en 2 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

recordset lento

Publicado por xve (208 intervenciones) el 10/09/2014 18:48:41
Hola Ivan, la verdad es que con la información que das, es un poco difícil poder ayudarte.

No sabemos que tipo de base de datos utilizas, ni si la base de datos esta en tu maquina o un servidor. Tampoco sabemos que hace cada iteración del proceso.

Si nos puedes informar con un poco de detalle.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de ivan

recordset lento

Publicado por ivan (8 intervenciones) el 10/09/2014 19:01:15
la base de datos que uso es sql 2000 con vb6 y lo que hago es el siguiente codigo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Dim RsSm As New ADODB.Recordset
            MskDesde.Text = "01/11/2013"
               sql = ("select sum(importe),sum(entrega) from ventas where idcli= '" & IdCli & "'and fecha between '" & MskDesde.Text & "' and '" & MskFecha.Text & "'and esventa='" & 1 & "'and blng='" & 0 & "'")
           Set RsSm = cn.Execute(sql)
           If RsSm.EOF = False Then
            impor = RsSm(0)
            entr = RsSm(1)
           If IsNull(impor) Then
            impor = "0"
           End If
           If IsNull(entr) Then
            entr = "0"
           End If
         End If
            Saldo = impor - entr
              cn.Execute ("update clientes set salold=" & Saldo & " where id_cliente='" & IdCli & "'")
   RsCli.MoveNext
   Barra.Value = Barra.Value + 1
   Loop
   End If

gracias por la ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 107
Ha disminuido su posición en 2 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

recordset lento

Publicado por xve (208 intervenciones) el 10/09/2014 20:47:33
Hola Ivan, en este código falta un while, no? porque al final veo un loop... Simplemente lo que nos muestras aquí es una consulta sql, que no se cuantos registros tiene, ni que índices tiene....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de ivan

recordset lento

Publicado por ivan (8 intervenciones) el 10/09/2014 21:38:36
tengo que recorrer todas las filas de la tabla facturas que tengan deuda y los recibos, y restarlos a ese saldo lo inserto en el campo saldo de la tabla clientes, estube viendo algo creo que hay que hacerlo con el comando group pero no se como funciona, te agradeceria tu ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Oscar

recordset lento

Publicado por Oscar (63 intervenciones) el 14/09/2014 13:16:53
Lo que xve quiere saber es como son los indices de las tablas (si los hay) porque los indices bien creados pueden optimizar enormemente las select.

Sobre lo de usar GROUP necesitamos saber las tablas y sus estructuras.

Pero principalmente, la BBDD la creaste tú? en ese caso, usaste indices, que indices usaste? Le haces mantenimientos?

Porque simplemente puede ser que la BBDD sea un caos, no hagas backup de datos antiguos y mantengas datos en las mismas tablas durante años (haciendo que cada consulta sea sobre un volumen de datos faraonico, etc...)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar