- Katılım
- 6 Temmuz 2008
- Mesajlar
- 1,875
- Excel Vers. ve Dili
- OFFİCE 2010- TÜRKÇE
Hayırlı akşamlar,
Aşağıdaki kodlarla accese veri silip yüklüyorum
Aslında şu an için deneme amaçlı 5500 satır var ve hızlı diye düşünüyorum fakat veri sayısı yaklaşık 500.000adet olduğunda bu kadar hızlı olmayacağı kanaatindeyim.
Bu konuda nasıl hızlandırma yapabiliriz?
Aşağıdaki kodlarla accese veri silip yüklüyorum
Aslında şu an için deneme amaçlı 5500 satır var ve hızlı diye düşünüyorum fakat veri sayısı yaklaşık 500.000adet olduğunda bu kadar hızlı olmayacağı kanaatindeyim.
Bu konuda nasıl hızlandırma yapabiliriz?
Kod:
Sub accessil()
Dim con As Object, rs As Object, Sorgu As String
Set con = CreateObject("Adodb.Connection")
Set con2 = CreateObject("Adodb.Connection")
Set rs = CreateObject("Adodb.RecordSet")
Set rs2 = CreateObject("Adodb.RecordSet")
con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
ThisWorkbook.FullName & ";extended properties=""excel 12.0;hdr=NO"""
Sorgu = "Select distinct(f1),F2 from [OracleRapor$] where f1 " & _
"not in('" & "Gidkalem:<Tümü>" & "','" & "YIL" & "') AND not isnull(f1) "
rs.Open Sorgu, con, 1, 3
If rs.RecordCount > 0 Then
yol = Left(ThisWorkbook.Path, InStr(ThisWorkbook.Path, "\Kullanıcılar")) & "\VeriTabanı" & "\Veritabanı.mdb"
con2.Open "provider=microsoft.ace.oledb.12.0;data source=" & yol & ""
rs.movefirst
Do While Not rs.EOF
Sorgu2 = "SELECT * FROM GiderRaporu WHERE YIL = '" & rs(0) & "' and AY = '" & rs(1) & "' "
rs2.Open Sorgu2, con2, 1, 3
If rs2.RecordCount > 0 Then
rs2.movefirst
Do While Not rs2.EOF
rs2.Delete
rs2.Update
rs2.movenext
Loop
End If
SAY = rs2.RecordCount
rs2.Close
rs.movenext
Loop
End If
MsgBox SAY & Chr(13) & " Eski Veriler Silinmiştir!!!", vbInformation, "Bilgi"
rs.Close: con.Close
Set rs = Nothing: Set con = Nothing: i = Empty
Set rs2 = Nothing: Set con2 = Nothing: SAY = Empty
End Sub
Kod:
Sub accesegönder()
Set con = CreateObject("Adodb.Connection")
Set rs = CreateObject("Adodb.RecordSet")
Set Op = Sheets("OracleRapor")
SAY = 0
dosya_yolu = Left(ThisWorkbook.Path, InStr(ThisWorkbook.Path, "\Kullanıcılar")) & "\VeriTabanı"
yol = dosya_yolu & "\Veritabanı.mdb"
con.Open "provider=microsoft.ace.oledb.12.0;data source=" & yol & ""
Sorgu = "SELECT * FROM [GiderRaporu] "
'On Error GoTo uyarı
rs.Open Sorgu, con, 1, 3
If rs.RecordCount >= 0 Then
For i = 6 To Op.Cells(Rows.Count, "A").End(3).Row
If Op.Cells(i, "A") <> "YIL" And Op.Cells(i, "A") <> "Gidkalem:<Tümü>" Then
SAY = SAY + 1
rs.ADDNEW
For stn = 1 To 7
yenideğer = Op.Cells(i, stn)
If yenideğer = " " Then yenideğer = Null
rs(stn - 1).Value = yenideğer
rs(7).Value = Op.Cells(i, 9)
Next
rs.Update
End If
Next
rs.Close: con.Close
Set con = Nothing: Set rs = Nothing: Sorgu = ""
MsgBox SAY & " Adet BA Formu Aktarılmıştır !!!", vbInformation, "BA Form"
Else
MsgBox "Hata"
Exit Sub
End If
End Sub
