Citar
Hola, quisiera saber cual es el probelma principal, o sea el "porque" de que te tarde tanto procesar esos registros ¿podes poner el codigo de esos registros?...porque capas estas haciendo algo mal ahi...y procesar esa cantidad de registros no debe haber problemas...hay procesos que procesan mas registros y no usan thread para nada.
si quieres pongo aqui mi cogido y le hechais un vistazo, lo unico para lo que quiero los threads es por estetica, para que el formulario no se quede en modo "No Responde" al ser una operación tan grande:
Código
Function AsignaOperaciones(fileName As String, ByRef matriz As totalExpedientes, PB1 As ProgressBar) As Integer
Dim file As Integer
Dim linea As String
Dim lineaGestion As String
Dim vDatos As Variant
Dim indice As Long
Dim gestion As Double
Dim encontrado As Boolean
file = FreeFile
PB1.Min = 0
PB1.Max = 149000
Open fileName For Input As #file
Do Until EOF(file)
Line Input #file, linea
vDatos = Split(linea, "*")
gestion = 0
indice = BuscaExpediente(Val(vDatos(0)), matriz, encontrado)
lineaGestion = vDatos(2)
If encontrado Then
If matriz.expedientes(indice).gestion <> "" Then
gestion = matriz.expedientes(indice).gestion
Else
gestion = 0
End If
matriz.expedientes(indice).TipoOperacion = vDatos(1)
matriz.expedientes(indice).gestion = gestion + CalculaSaldos(lineaGestion)
matriz.expedientes(indice).Asignacion = vDatos(3)
matriz.expedientes(indice).Defectuosa = vDatos(4)
matriz.expedientes(indice).Subsanada = vDatos(5)
matriz.expedientes(indice).Anulada = vDatos(6)
End If
If PB1.Max <> PB1.Value Then
PB1.Value = PB1.Value + 1
End If
Loop
Close #file
PB1.Value = 0
End Function
esto es una función, y la función BuscaExpediente es la siguiente:
Código
Function BuscaExpediente(numExp As String, matriz As totalExpedientes, ByRef bandera As Boolean) As Long
bandera = False
For i = 0 To matriz.numExpedientes - 1 Step 1
If numExp = matriz.expedientes(i).Expediente Then
bandera = True
BuscaExpediente = i
Exit Function
End If
Next
BuscaExpediente = -1
End Function
la estructura totalExpedientes es la siguiente
Código
Type EstructuraExpediente
Expediente As String
FechaFirma As String
Procedencia As String
FechaFactura As String
Debe As String
Haber As String
Saldo As String
TipoOperacion As String
gestion As String
Defectuosa As String
Subsanada As String
Asignacion As String
Anulada As String
End Type
Type totalExpedientes
expedientes() As EstructuraExpediente
numExpedientes As Long
End Type
En resumen, mi funcion buscaExpedientes realiza un bucle bastante grande,
y la funcion de AsignaOperaciones abre un archivo que contiene 150000 lineas con lo cual tiene que recorrer 150000 lineas y buscar en la matriz el correspondiente expediente para asignarle valores de la linea(cada linea corresponde a un expediente). Espero haberme explicado..

Un saludo y Gracias!


 
  




 Autor
 Autor
		




 En línea
									En línea
								


 
						
