Access otomatik Sayıyı Sıfırlama

Katılım
7 Ağustos 2011
Mesajlar
319
Excel Vers. ve Dili
2003-2010 Türkçe
Altın Üyelik Bitiş Tarihi
25/05/2022
Merhaba Arkadaşlar,
Access dosyasındaki ornek adlı tablodaki verileri excelden aşağıdaki kodla silebiliyorum.
Sub tablo_sil()
accTablolar = Array("_ornek")
With CreateObject("ADODB.Connection")
.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\depo\aaa.mdb"
For i = LBound(accTablolar) To UBound(accTablolar)
.Execute "DELETE * FROM [" & accTablolar(i) & "]"
Next i
.Close
End With
End Sub
Örneğin tabloda 500 kayıt var sildikten sonra tekrar kayıt ekleyince otomatik sayı 501'den başlıyor. Acaba otomatik sayıyı sildikten sonra tekrar kayıt ekleyince 1'den başlatmak mümkün mü?
Yardımlarınız için şimdiden teşekkür ederim.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Access dosyasında "Compact and Repair" yapınca, otomatik sayı sıfırlanıyor....

Eğer VBA ile yapacaksanız, aşağıdaki kodu kullanın. Kodda aşağıdaki satırda kendi MDB dosyanızın yolunu girecekseniz, başka değişiklik yapmayacaksınız....

C#:
MyDb = ThisWorkbook.Path & "\TelefonDefteri.mdb"
satırını, aşağıdaki gibi yapacaksınız yani....

C#:
MyDb = "C:\depo\aaa.mdb "


Kod aşağıdadır;

C#:
Sub Test()
    'Haluk - 06/02/2021
    '
    Dim DB As Object
    Dim daoDBEngine As Object
    Dim MyDb As String, NewDb As String
    Dim Len1 As Long, Len2 As Long
   
    On Error Resume Next
        Set daoDBEngine = CreateObject("DAO.DBEngine")
        Set daoDBEngine = CreateObject("DAO.DBEngine.36")
        Set daoDBEngine = CreateObject("DAO.DBEngine.120")
    On Error GoTo 0
   
    MyDb = ThisWorkbook.Path & "\TelefonDefteri.mdb"
    NewDb = ThisWorkbook.Path & "\newDB.mdb"
   
    If Dir(MyDb) = Empty Then
        MsgBox MyDb & " bulunamadi, kodlar sonlandirilacak ...."
        Exit Sub
    End If
   
    Len1 = FileLen(MyDb)

    If Not Dir(NewDb) = Empty Then Kill NewDb
   
    daoDBEngine.CompactDatabase MyDb, NewDb
   
    Len2 = FileLen(NewDb)
   
    MsgBox "Orjinal dosya boyutu : " & Format(Len1, "#,##0.00") & " byte" & vbCrLf & vbCrLf _
           & "Yeni dosya boyutu  : " & Format(Len2, "#,##0.00") & " byte" & vbCrLf & vbCrLf _
           & "Fark : " & Format((Len2 - Len1), "#,##0.00") & " byte"
    Kill MyDb
    Name NewDb As MyDb
    Set daoDBEngine = Nothing
End Sub
.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,354
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Tabloyu boşaalltıktan sonra aşağıdaki metotta ilgili parametreleri vererek çağırın.

*** Tablonun o anda kullanımda olmadığından emin olun. ***

C#:
Public Sub ResetSeed(conn As ADODB.Connection, tableName As String, fieldName As String)
    Dim cat As Object
    Set cat = CreateObject("ADOX.Catalog")
    Set cat.ActiveConnection = conn
    cat.Tables(tableName).Columns(fieldName).Properties("Seed") = 0
    Set cat.ActiveConnection = Nothing
    Set cat = Nothing
End Sub
.
 
Katılım
7 Ağustos 2011
Mesajlar
319
Excel Vers. ve Dili
2003-2010 Türkçe
Altın Üyelik Bitiş Tarihi
25/05/2022
Haluk Hocam,
İlginiz için çok teşekkür ederim. Yalnız kodu çalıştırdığımda "Bad file name or number" hatası alıyorum.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Kod, bir Excel dosyasında çalıştırılmak üzere hazırlanmıştı ..... siz de öyle mi yaptınız?

.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Hangi satırda hata veriyor?

.
 
Katılım
7 Ağustos 2011
Mesajlar
319
Excel Vers. ve Dili
2003-2010 Türkçe
Altın Üyelik Bitiş Tarihi
25/05/2022
Haluk Hocam,
Aşağıdaki kodla silip sfırlayabiliyordum. Şimdi oda ldb uzantılı dosya oluşturuyor. Oturumu kapatıp açmayınca ldb uzantılı dosya da silinemiyor.

Function DeleteAllAndResetAutoNum(yol As String, dosya, strTable As String) As Boolean
Dim cat As New ADOX.Catalog
Dim tbl As ADOX.Table
Dim col As ADOX.Column
Dim bb As String
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
yol = "D:\depo\aaa\"
dosya = "bbb.mdb"
'conn.Open "PROVIDER=Microsoft.SQLSERVER.CE.OLEDB.3.5;" _
'& "Data Source=" & ThisWorkbook.Path & "\xyz.sdf;SSCE:Database Password='123456'"
conn.Open "PROVIDER=Microsoft.ace.oledb.12.0;" _
& "Data Source=" & yol & dosya
bb = "DELETE FROM [" & strTable & "];"
conn.Execute bb
cat.ActiveConnection = conn
Set tbl = cat.Tables(strTable)
For Each col In tbl.Columns
If col.Properties("Autoincrement") Then
col.Properties("Seed") = 1
DeleteAllAndResetAutoNum = True
End If
Next
End Function

Sub tbl_sil()
Dim sil
sil = DeleteAllAndResetAutoNum(ThisWorkbook.Path, "\bbb.mdb", "ccc") 'ccc tablo adı

End Sub
 
Üst