Leo una linea del txt, divido la cadena en campos y con el campo "codigo" ejecuto una consulta de busqueda, si existe el registro compruebo los posibles cambios y si no existe el registro lo añado a la bd.
El proceso ya le tengo hecho pero es demasiado lento, he comprobado que si no ejecuto la consulta el txt lo lee completo en 96 segundos, pero si activo la consulta a la db se dispara el tiempo a más de 10 horas.
Aquí pongo una pequeña parte del código a ver si podeis echarme una mano, pues ando un poco perdido.
Código:
Gracias de antemano a todas las posibles sugerencias y ayuda.Do strArti = objArticulos.ReadLine() artNombreFabricante = Microsoft.VisualBasic.Left(strArti, 14) artCodigoFabricante = Microsoft.VisualBasic.Mid(strArti, 15, 4) artCodigoBarras = Microsoft.VisualBasic.Mid(strArti, 19, 10) artDescripcion = Microsoft.VisualBasic.Mid(strArti, 29, 40) artCodigo = Microsoft.VisualBasic.Mid(strArti, 69, 18) artEan1 = Microsoft.VisualBasic.Mid(strArti, 87, 13) If artCodigo<>"" then If Microsoft.VisualBasic.Mid(strArti, 100, 11) IsNot Nothing Then artPrecio = CDbl(Microsoft.VisualBasic.Mid(strArti, 100, 11)) End If If Microsoft.VisualBasic.Mid(strArti, 111, 11) IsNot Nothing Then artReciclaje = CDbl(Microsoft.VisualBasic.Mid(strArti, 111, 11)) End If If Microsoft.VisualBasic.Mid(strArti, 122, 11) IsNot Nothing Then artUnidades = CDbl(Microsoft.VisualBasic.Mid(strArti, 122, 11)) End If If artUnidades <> 0 Then artPrecio = artPrecio / artUnidades End If artPrecio1 = artPrecio / artCoef1 ArtPrecio2 = artPrecio / artCoef2 artTable = ArticulosTableAdapter.GetDataBy(Trim(artCodigo), Trim(artCodigoFabricante)) frase = "" If artTable.Rows.Count = 0 Then nNuevos = nNuevos + 1 ' articulo nuevo lo damos de alta Dim nuevoArticulo As ActiveDataSet.ArticulosRow nuevoArticulo = ActiveDataSet.Articulos.NewArticulosRow() nuevoArticulo.nombrefabricante = artNombreFabricante nuevoArticulo.fabricante = artCodigoFabricante nuevoArticulo.barras = artCodigoBarras nuevoArticulo.descripcion = artDescripcion nuevoArticulo.codigo = artCodigo nuevoArticulo.ean1 = artEan1 nuevoArticulo.precio = artPrecio nuevoArticulo.precio1 = artPrecio1 nuevoArticulo.precio2 = ArtPrecio2 nuevoArticulo.reciclaje = artReciclaje Me.ActiveDataSet.Articulos.Rows.Add(nuevoArticulo) Me.ArticulosTableAdapter.Update(Me.ActiveDataSet.Articulos) ' informamos Fabricantes.Text = Fabricantes.Text & "Añadido: " & artCodigo & " - " & artDescripcion & vbCrLf Else If artTable.Rows(0)("precio") <> artPrecio Then artTable.Rows(0)("precio") = artPrecio artTable.Rows(0)("precio1") = artPrecio1 artTable.Rows(0)("precio2") = ArtPrecio2 frase = frase & " - Precios (0): " & artPrecio & " (1): " & artPrecio1 & " (2): " & ArtPrecio2 artcambios = True End If If artTable.Rows(0)("reciclaje") <> artReciclaje Then artTable.Rows(0)("reciclaje") = artReciclaje frase = frase & " - Reciclaje: " & artReciclaje artcambios = True End If If artcambios = True Then 'guardamos los cambios del articulo nModificados = nModificados + 1 Me.Articulos.EndEdit() Me.ArticulosTableAdapter.Update(Me.ActiveDataSet.Articulos) End If Fabricantes.Text = Fabricantes.Text & "Articulo " & artCodigo & " modificado: " & vbCrLf End If End If Contador.Text = linea Application.DoEvents() linea = linea + 1 Loop Until strArti Is Nothing
Un saludo.