Hola, vereis, he creado un programa que creo que hace lo que quiero, pero me va bastante lento.
La idea es que tengo un conjunto de archivos en DBF que todos ellos tienen 2 campos en comun.
Y necesito hacer un listado donde me diga para cada fecha cuantos archivos hay de cada tipo.
Los pasos que hago es:
*De la lista de archivos seleccionados, la recorro:
+Por cada archivo, me lo recorro:
y por cada linea de archivo hago un insert a una base de datos de acces, que posteriormente consultare.
Tiene que trabajar con cantidades que rondan el millon de registros y va bastante lento la verdad.
Os dejo el codigo que es bastante simple:
Private Sub BuscaPaginas()
Dim tempX As String
Dim Excels As String()
Dim ruta As String
Dim Paginas As Integer()
Dim i, j As Integer
Dim STR As String
Dim T As DataTable
'VACIAMOS LA TABLA TEMPORAL
STR = "DELETE * FROM Temp1"
EJECUTA_EN_BD(STR)
'------
'A) Guardamos la ruta completa de los archivos a seleccionar
ruta = LArchivos.Path
ruta &= "\"
For i = 0 To LArchivos.SelectedItems.Count - 1
'Consulto La DBF ZZFECHABAT y ZZCODDOCUM
T = ConsultaDBF(ruta, LArchivos.SelectedItems.Item(i))
'Me devuelve UNA tabla
'Por cada Fila de la tabla
For j = 0 To T.Rows.Count - 1
'Insertamos en la BD
STR = "INSERT INTO Temp1 (ZZFECHABAT,ZZCODDOCUM) VALUES ('"
STR &= T.Rows(j).Item(0) & "','"
STR &= T.Rows(j).Item(1) & "')"
EJECUTA_EN_BD(STR)
Next
Next
Me.Close()
End Sub
Private Function ConsultaDBF(ByVal ruta As String, ByVal archivo As String) As DataTable
Dim ConString As String
Dim objDataSet As New DataSet
Dim tabli As New DataTable
Dim query As String
query = "SELECT ZZFECHABAT,ZZCODDOCUM FROM " & archivo
' de www.connectionstrings.com: 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\folder;Extended Properties=dBASE IV;User ID=Admin;Password=;
'ConString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Ruta & "\" & archivo & ";Extended Properties=dBASE IV;User ID=Admin;Password=;"
'ConString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Ruta & ";Extended Properties=dBASE IV;User ID=Admin;Password=;"
'del guille: "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" & System.IO.Path.GetDirectoryName(sBase) & ";"
ConString = "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" & ruta & ";"
Using dbConn As New System.Data.Odbc.OdbcConnection(ConString)
Try
dbConn.Open()
Dim da As New System.Data.Odbc.OdbcDataAdapter(query, dbConn)
'Dim dt As New DataTable
da.Fill(tabli)
dbConn.Close()
Catch ex As Exception
MessageBox.Show("Error al abrir la base de datos" & vbCrLf & ex.Message)
Exit Function
End Try
End Using
Return tabli
End Function
Public Function EjecutarQuery(ByVal Query As String) As DataSet
Dim ConString As String
Dim objDataSet As New DataSet
ConString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DATOS.dirbasededatos & ";User Id=admin;Password=;"
Try
Dim objConnection As New System.Data.OleDb.OleDbConnection(ConString)
objConne