• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

excelden access veri tabanına bağlantı

Katılım
10 Şubat 2007
Mesajlar
100
Excel Vers. ve Dili
microsoft 2003
Arkdaşlar benim yapmış olduğum excel vb programımda 10000' e yakın bir veri deposu var, sorun şu ki artık excel kaldırmıyor, veri girdiğimde ve tarih aralığı verip rapor aldığımda felaket şekilde kasılmalar meydana geliyor .
Benim aklıma gelen şey access veri tabanını kullanmak; bana bu konu hakkında yardımcı olmanızı istiyorum.
- mdb. dosyasına kayıt ekleme,
- tarih arası sorgulama yapmak istiyorum

Dosyamı ekte gönderiyorum.
 

Ekli dosyalar

Son düzenleme:
Arkdaşlar benim yapmış olduğum excel vb programımda 10000' e yakın bir veri deposu var, sorun şu ki artık excel kaldırmıyor, veri girdiğimde ve tarih aralığı verip rapor aldığımda felaket şekilde kasılmalar meydana geliyor .
Benim aklıma gelen şey access veri tabanını kullanmak; bana bu konu hakkında yardımcı olmanızı istiyorum.
- mdb. dosyasına kayıt ekleme,
- tarih arası sorgulama yapmak istiyorum

Dosyamı ekte gönderiyorum.
Kasılma yazdığınız kodlardanda kaynaklanıyor olabilir.
Normal bir döngüye girdiğinizde yavaşlayabilir.
Bana sorgulama kodlarınızın bulunduğu prosedürün içindeki kodları yollayın.
Belkide gerek yoktuer.
Çok kısa bir sürede yapılabilir.10 satır için pek fazla kasılacağını sanmam.en fazla 10 sn ye alır içindeki sütun sayısına göre .:cool:
 
HOCAM ARAMA YAPTIRDIĞIM KODLAR



Dim myarr(), a As Long
On Error Resume Next
Sheets("Faaliyet").Select
Set sge = Sheets("Faaliyet")
ReDim myarr(1 To 11, 1 To Cells(65536, "A").End(xlUp).Row)
İLK_TARİH = UserForm3.TextBox1.Value
SON_TARİH = UserForm3.TextBox2.Value
ListBox1.Clear
If İLK_TARİH <> "" And SON_TARİH <> "" Then
UserForm3.ListBox1.ColumnCount = 11 'listboxta listelenecek satır sayısı
UserForm3.ListBox1.ColumnWidths = "50;50;90;120;55;55;55;50;140;100;50" 'FORMDA HÜCRE UZAKLIKLARINI GÖSTERİYOR
For Each hücre In sge.Range("A3: A" & sge.[A65536].End(xlUp).Row) '50;50;90;120;60;50;55;50;140;100;5 SÜZMEYE HANGİ HÜCREDEN BAŞLANACAĞINI GÖSTERİYOR

If UserForm3.TextBox3.Text = "" Then
deg = hücre.Offset(0, 2).Text 'bu kodlarda ikinci aramayı C hücresinde yaptırıyor. (DEFTER NO ile arama)
Else
deg = TextBox3.Text
End If

If UserForm3.TextBox4.Text = "" Then
deg1 = hücre.Offset(0, 3).Text ' (TC. NO ile arama)
Else
deg1 = TextBox4.Text
End If

If UserForm3.TextBox5.Text = "" Then
deg2 = hücre.Offset(0, 4).Text ' (AD SOYAD ile arama)
Else
deg2 = TextBox5.Text
End If


If UserForm3.ComboBox1.Text = "" Then
deg3 = hücre.Offset(0, 8).Text
Else
deg3 = ComboBox1.Text
End If

If UserForm3.ComboBox2.Text = "" Then
deg4 = hücre.Offset(0, 9).Text '
Else
deg4 = ComboBox2.Text
End If

If UserForm3.ComboBox3.Text = "" Then
deg5 = hücre.Offset(0, 10).Text
Else
deg5 = ComboBox3.Text
End If

If UserForm3.ComboBox4.Text = "" Then
deg6 = hücre.Offset(0, 11).Text
Else
deg6 = ComboBox4.Text
End If

If UserForm3.ComboBox5.Text = "" Then
deg7 = hücre.Offset(0, 7).Text
Else
deg7 = ComboBox5.Text
End If


'If CDate(hücre.Value) >= CDate(İLK_TARİH) And CDate(hücre.Value) <= CDate(SON_TARİH) Then
If CDate(hücre.Value) >= CDate(İLK_TARİH) And CDate(hücre.Value) <= CDate(SON_TARİH) And deg = hücre.Offset(0, 2).Text And deg1 = hücre.Offset(0, 3).Text And deg2 = hücre.Offset(0, 4).Text And deg3 = hücre.Offset(0, 8).Text And deg4 = hücre.Offset(0, 9).Text And deg5 = hücre.Offset(0, 10).Text And deg6 = hücre.Offset(0, 11).Text And deg7 = hücre.Offset(0, 7).Text Then
a = a + 1
myarr(1, a) = Format(hücre.Offset(0, 1).Text, "dd.mm.yyyy") 'HÜCRELERİ LİSTBOX'A GETİRİYOR.
'myarr(2, a) = hücre.Offset(0, 1).Text
myarr(2, a) = hücre.Offset(0, 2).Text
myarr(3, a) = hücre.Offset(0, 3).Text
myarr(4, a) = hücre.Offset(0, 4).Text
myarr(5, a) = hücre.Offset(0, 5).Text
myarr(6, a) = hücre.Offset(0, 6).Text
myarr(7, a) = hücre.Offset(0, 7).Text
myarr(8, a) = hücre.Offset(0, 8).Text
myarr(9, a) = hücre.Offset(0, 9).Text
myarr(10, a) = hücre.Offset(0, 10).Text
myarr(11, a) = hücre.Offset(0, 11).Text
End If
Next
If a > 0 Then
ReDim Preserve myarr(1 To 11, 1 To a)
ListBox1.Column = myarr
End If
End If
Erase myarr
 
Yaklaşık 10 sorgu yapıyorsunuz.Bu sorgu elbette çok.
Bunu accesstede yapsanız yani vt olarak accesste kullansnız ado ile verileri aldığınızda sql sorgusu yapsanız yine ağır olur.
Belki bir miktar daha hızlanır.Ama yine yavaş çalışır.Çok farketmez.
Şöyle yaparak deneyin.Oda excelde ado -sql karşılığı sayılır.
Verielri autofilter kullanarak alın.Bu bir miktar daha hızlandırı.Birde formül kullanılmışsa ,Ve başka sayfalardan formüllerde bu sayfaya refrans veriyorlarsa bu çok yavaşlatır çalışmayı.
Eğe öyle bir şey varsa kodunuzun başına
Kod:
Application.Calculation = xlCalculationManual
sonuna
Kod:
Application.Calculation = xlCalculationAutomatic
koyun.Çok farkeder.:cool:
 
TEŞEKKÜRLER HOCAM bilgilerinizden dolayı dediklerinizi uyguladım biraz değişme oldu gibi. Saygılarımla
 
Geri
Üst