Visual Basic.NET - Por que va esto tan lento?

 
Vista:

Por que va esto tan lento?

Publicado por lestter (28 intervenciones) el 04/11/2006 13:13:37
Hola a todos:

Estoy haciendo un listado de facturacion sacando datos de dos tablas, la primera contiene los datos de las facturas salvo el nombre del cliente que lo quiero coger de la segunda tabla.

hago un bucle con los datos de la primera tabla y en cada iteracion del bucle busco el cliente en la segunda tabla.

La busqueda del cliente de la segunda tabla me es super lento.

Habría otra forma de hacerlo ???

el código que me ralentiza es el tener que cargar el dataset de la tabla clientes tantas veces como lineas de facturas hay..... las he marcado con asteriscos las dos lineas que ralentizan todo.

lo he hecho así:


miDBadapter = New OleDb.OleDbDataAdapter("select * from cfac where fecha>=" + mfecha1 + " and fecha<=" + mfecha2 + " and codigo= '" + codcli + "' order by tipo,nfac", miDBconn)
End If
miDBdataset.Clear()
miDBadapter.Fill(miDBdataset, "cfac")
encontrados = miDBdataset.Tables("cfac").Rows.Count()

If encontrados = 0 Then
MessageBox.Show("No hay datos para listar", "Diario de ventas", MessageBoxButtons.OK, MessageBoxIcon.Information)
Exit Sub
Else


For x = 0 To encontrados - 1
linea = ""
linea = linea + miDBdataset.Tables("cfac").Rows(x).Item("tipo")
linea = linea + " "
linea = linea & miDBdataset.Tables("cfac").Rows(x).Item("nfac")
linea = linea + " "
linea = linea & miDBdataset.Tables("cfac").Rows(x).Item("fecha")
linea = linea + " "

' cliente
vcodigo = miDBdataset.Tables("cfac").Rows(x).Item("codigo")
dbclidataset.Clear()
****** dbcliadapter = New OleDb.OleDbDataAdapter("select codigo,cliente from clientes where codigo= '" + vcodigo + "' order by codigo", dbcli)

******* dbcliadapter.Fill(dbclidataset, "clientes")
cli_encontrados = dbclidataset.Tables("clientes").Rows.Count()
If cli_encontrados > 0 Then
nombre_cli = dbclidataset.Tables("clientes").Rows(0).Item("cliente")
End If
linea = linea + LSet(nombre_cli, 25)

' base
numero = miDBdataset.Tables("cfac").Rows(x).Item("base1") + miDBdataset.Tables("cfac").Rows(x).Item("base2") + miDBdataset.Tables("cfac").Rows(x).Item("base3")
suma_base = suma_base + numero
cadena = numero.ToString("#,##0.00")
linea = linea + RSet(cadena, 12)
linea = linea + " "

' impuestos
numero = miDBdataset.Tables("cfac").Rows(x).Item("iva1") + miDBdataset.Tables("cfac").Rows(x).Item("iva2") _
+ miDBdataset.Tables("cfac").Rows(x).Item("iva3") + miDBdataset.Tables("cfac").Rows(x).Item("re1") + miDBdataset.Tables("cfac").Rows(x).Item("re2") + miDBdataset.Tables("cfac").Rows(x).Item("re3")
suma_impuestos = suma_impuestos + numero
cadena = numero.ToString("#,##0.00")
linea = linea + RSet(cadena, 8)
linea = linea + " "

' total factura

numero = miDBdataset.Tables("cfac").Rows(x).Item("total")
suma_total = suma_total + numero
cadena = numero.ToString("#,##0.00")
linea = linea + RSet(cadena, 12)
linea = linea + " "

ventana.Items.Add(linea)


Next ' bucle for x

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