• DİKKAT

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

Veritabanına veri ekleme güncelleme hk.

  • Konbuyu başlatan Konbuyu başlatan acar6783
  • Başlangıç tarihi Başlangıç tarihi
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ğıdakş kodlardan da anlaşılacağı üzre access veri tabanına verileri varsa güncelliyorum yoksa ekleme yaptırıyorum .
Fakat veriler fazla olduğunda işlem çok yavaşlayacak diye düşünüyorum?

Altenatif kodlar çözüm önerisi olanlarla fikir alışverişi yapmak istiyorum.

Kod:
Sub ekle_güncelle()


 Application.ScreenUpdating = False
Set egt = Sheets("EĞİTİM")
    Set Con = CreateObject("Adodb.Connection")
    Set rs = CreateObject("Adodb.RecordSet")
   For a = 3 To egt.Cells(Rows.Count, "A").End(3).Row
Con.Open "provider=microsoft.ace.oledb.12.0;data source=" & ThisWorkbook.Path & "\" & "EğitimFaturaVeriTabanı.mdb" & ""


 sorgu = "SELECT *  FROM  [EğitimFaturaVeriTabanı] WHERE Evrakno = '" & egt.Cells(a, "B").Value & "' "
        
rs.Open sorgu, Con, 1, 3

 If rs.RecordCount <> 0 Then
 
       rs(0).Value = Format(egt.Cells(a, "A"), "dd,mm,yyyy")
       
       rs(1).Value = egt.Cells(a, "B").Value
       rs(2).Value = egt.Cells(a, "C").Value
       rs(3).Value = egt.Cells(a, "D").Value
       rs(4).Value = egt.Cells(a, "E").Value
     
      
          rs.Update

      Con.Close
      Else
      rs.addnew
         rs(0).Value = Format(egt.Cells(a, "A"), "dd,mm,yyyy")
       
       rs(1).Value = egt.Cells(a, "B").Value
       rs(2).Value = egt.Cells(a, "C").Value
       rs(3).Value = egt.Cells(a, "D").Value
       rs(4).Value = egt.Cells(a, "E").Value
     
      
          rs.Update

      Con.Close
    End If
     Next
   
    Set Con = Nothing: Set rs = Nothing: sorgu = ""
Application.ScreenUpdating = True
End Sub
 
"EvrakNo" alanı indexli ise, endişe edilecek durum yok. MS Access indexli alanlarda çok hızlıdır.

.
 
"EvrakNo" alanı indexli ise, endişe edilecek durum yok. MS Access indexli alanlarda çok hızlıdır.

.

İndexli den kastınız ?

Yavaşlama sanırım öpen -close olayı sürekli olduğu için olabilir diye düşündüm.
Bağlantıyı bir kez açıp ekleme yada güncelleme yaptıramazmiyim?
 
Where koşuluna girecek alanları tablo tasarımında "Sıralı" yapın. İndex budur.
Kod içinde "For" döngüsünü farketmemiştim. Bağlantıyı döngüden önce açın, döngüden sonra ise kapatın.

Kolay gelsin.

.
 
For döngüsünü sonrasında kurduğumda hata alıyorum

Kod:
rs.Open sorgu, Con, 1, 3

Bu bölümü nasıl değiştirmem gerekir?
"Nesne açık olduğundan" hatası veriyor

Ya da döngü kurmadan farklı bir yöntemle yapabilirmiyiz?
 
Geri
Üst