13/08/11 10:55
vankraster
Io avrei la necessità di esportare dati da un db Paradox a un file Excel versione 2003, il problema è che ci sono riuscito ma siccome il db paradox ne ha 50.000 records e 15 campi per l'esportazione ci vogliono 3 ore. Tutto risolto tramite codice da vb 2010. Prima spiego il concetto che ho usato poi mettero il codice:
Apro il db Paradox lo interrogo con la query, apro il file excel e poi dal risultato per ogni riga inserisco nel file excel i vari campi. Quello che vi chiedo a voi e se posso migliorare il programma in modo che l'esportazione mi duri al massimo 1 ora.
Apro il db Paradox lo interrogo con la query, apro il file excel e poi dal risultato per ogni riga inserisco nel file excel i vari campi. Quello che vi chiedo a voi e se posso migliorare il programma in modo che l'esportazione mi duri al massimo 1 ora.
Dim sExcelPath, sdbPath, sLog As String sExcelPath = System.IO.Path.GetDirectoryName(Application.ExecutablePath) sdbPath = "C:\db_From" sLog = sExcelPath & "\logs" Dim sFIle As System.IO.StreamWriter sFIle = System.IO.File.CreateText(sLog & "\" & Date.Now.DayOfYear & ".txt") ' Add some information to the file. sFIle.WriteLine(DateTime.Now.TimeOfDay.ToString & "Creazione del db") Dim tblmy As DataTable Dim oledbParadoxconn As New OleDb.OleDbConnection 'EXCEL###################################### Dim xlApp As Excel.Application Dim xlWorkBook As Excel.Workbook Dim xlWorkSheet As Excel.Worksheet 'variabili memmorizazione dalla query############################################# Dim ShopCOde, DelDate, StockCode, ShrtDesc, WEBDESC, BRAND, VarDesc, Varcode, VarAltCode, PurchCost, Purchvat, UnitPrice, PriceVat, Desc As String Dim DescFrom, DescTo, AdoCOst1, AdoCost2, InvtryDate, Stock, Gruppo, sGruppo, TMisura, GMisura, Misura, Stagione, Anno, Sesso, Colore, Materiale, Box, PICFile As String 'COSTANTI##################################### ShopCOde = "011" DelDate = DateTime.Now.Date Try sFIle.WriteLine(DateTime.Now.TimeOfDay.ToString & "Inizio query db paradox") lblProc.Text = "Query database Paradox" Dim Sqltext As String = "SELECT A.[Articolo Fornitore], A.Descrizione, A.MARCA, A.[ARTICOLO ETICHETTA], A.[CATEGORIA MERCEOLOGICA], A.[TIPO ARTICOLO], V.[DENOMINAZIONE VARIANTE 1], L.[PREZZO IVATO E], G.[DATA ULTIMO MOVIMENTO], G.[QTA INIZIALE]-G.[QTA SCARICO]+G.[QTA CARICO] AS TOT,U.UBICAZIONE, V.[VARIANTE 2], V.[VARIANTE 1] FROM ARTICOLI A, ARTBASE V, UBICAZIONE U, GIACENZA G,LISTINO L WHERE V.[ARTICOLO INTERNO]=A.[ARTICOLO] AND A.[UBICAZIONE]=U.[CODICE] AND G.[ARTICOLO]=V.[ARTICOLO ETICHETTA] AND L.[ARTICOLO]=A.[ARTICOLO]" Dim oledbconnstr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sdbPath & ";Extended Properties=Paradox 5.x;" oledbParadoxconn.ConnectionString = oledbconnstr oledbParadoxconn.Open() Dim myDataAdapter As New OleDb.OleDbDataAdapter(Sqltext, oledbParadoxconn) Dim dtgetdata As New DataSet myDataAdapter.Fill(dtgetdata, "aaaa") ' Me.dataGrid1.DataSource = dtgetdata ' Me.dataGrid1.DataMember = "aaaa" tblmy = dtgetdata.Tables("aaaa") '#####COPIARE DALLA COPIA AL NUOVO 'backupXLS.xls -copia 'fogl.xls = nuovo 'cancella file se esiste già MsgBox("fine query") sFIle.WriteLine(DateTime.Now.TimeOfDay.ToString & "fine della query") If System.IO.File.Exists(sExcelPath & "\fogl.xls") Then System.IO.File.Delete(sExcelPath & "\fogl.xls") System.IO.File.Copy(sExcelPath & "\backupXLS.xls", sExcelPath & "\fogl.xls") 'EXCEL ################## xlApp = New Excel.Application xlWorkBook = xlApp.Workbooks.Open(sExcelPath & "\fogl.xls") xlWorkSheet = xlWorkBook.Worksheets("Foglio1") MsgBox("fine copia xls") 'Progress bar########################################### Progress.Maximum = tblmy.Rows.Count Dim i As Integer = 0 lblProc.Text = "Inserimento nel file di EXCEL i dati" sFIle.WriteLine(DateTime.Now.TimeOfDay.ToString & "fine della copia del file excel - inizio della scrittura nel file excel") WEBDESC = "" PurchCost = "0" Purchvat = "0" PriceVat = "20" Desc = "0" DescFrom = "" DescTo = "" AdoCOst1 = "0" AdoCost2 = "0" Materiale = "" Box = "" PICFile = "" MsgBox(tblmy.Rows.Count) For Each x In tblmy.Rows StockCode = x("Articolo Fornitore") ShrtDesc = x("Descrizione") BRAND = x("Marca") VarDesc = ShrtDesc & " " & x("Variante 2") Varcode = StockCode & "." & x("Variante 2") VarAltCode = x("Articolo etichetta") UnitPrice = x("PREZZO IVATO E") InvtryDate = x("DATA ULTIMO MOVIMENTO") Stock = x("TOT") Gruppo = x("CATEGORIA MERCEOLOGICA") sGruppo = x("Tipo Articolo") If IsDBNull(x("Denominazione Variante 1")) Then TMisura = "" Else TMisura = x("Denominazione Variante 1") End If GMisura = x("TIPO ARTICOLO") If IsDBNull(x("Variante 1")) Then Misura = "UNICA" Else Misura = x("Variante 1") End If Stagione = x("UBICAZIONE") Anno = Stagione Sesso = Gruppo If IsDBNull(x("Variante 2")) Then Colore = "." Else Colore = x("Variante 2").ToString End If 'SCrivi sul foglio Excel xlWorkSheet.Cells(i + 2, 1).value = ShopCOde xlWorkSheet.Cells(i + 2, 2).value = DelDate xlWorkSheet.Cells(i + 2, 3).value = StockCode xlWorkSheet.Cells(i + 2, 4).value = ShrtDesc xlWorkSheet.Cells(i + 2, 5).value = WEBDESC xlWorkSheet.Cells(i + 2, 6).value = BRAND xlWorkSheet.Cells(i + 2, 7).value = VarDesc xlWorkSheet.Cells(i + 2, 8).value = Varcode xlWorkSheet.Cells(i + 2, 9).value = VarAltCode xlWorkSheet.Cells(i + 2, 10).value = PurchCost xlWorkSheet.Cells(i + 2, 11).value = Purchvat xlWorkSheet.Cells(i + 2, 12).value = UnitPrice xlWorkSheet.Cells(i + 2, 13).value = PriceVat xlWorkSheet.Cells(i + 2, 14).value = Desc xlWorkSheet.Cells(i + 2, 15).value = DescFrom xlWorkSheet.Cells(i + 2, 16).value = DescTo xlWorkSheet.Cells(i + 2, 17).value = AdoCOst1 xlWorkSheet.Cells(i + 2, 18).value = AdoCost2 xlWorkSheet.Cells(i + 2, 19).value = InvtryDate xlWorkSheet.Cells(i + 2, 20).value = Stock xlWorkSheet.Cells(i + 2, 21).value = Gruppo xlWorkSheet.Cells(i + 2, 22).value = sGruppo xlWorkSheet.Cells(i + 2, 23).value = TMisura xlWorkSheet.Cells(i + 2, 24).value = GMisura xlWorkSheet.Cells(i + 2, 25).value = Misura xlWorkSheet.Cells(i + 2, 26).value = Stagione xlWorkSheet.Cells(i + 2, 27).value = Anno xlWorkSheet.Cells(i + 2, 28).value = Sesso xlWorkSheet.Cells(i + 2, 29).value = Colore xlWorkSheet.Cells(i + 2, 30).value = Materiale xlWorkSheet.Cells(i + 2, 31).value = Box xlWorkSheet.Cells(i + 2, 32).value = PICFile 'indicazione Progress.Value = i i += 1 Next sFIle.WriteLine(DateTime.Now.TimeOfDay.ToString & "fine della scrittura file excel") 'chiudi foglio EXCEL##################################### xlWorkBook.Close() xlApp.Quit() releaseObject(xlApp) releaseObject(xlWorkBook) releaseObject(xlWorkSheet) lblProc.Text = "Fine Inserimento - Inizion trasfero dati FTP"
Ultima modifica effettuata da Il Totem 14/08/11 10:07
aaa