Vb.net DataTable için otomatik sayı nasıl elde edilir?

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
aşağıdaki kodu kullanarak bir DataTable oluşturuyorum
Kod:
  Public Sub dsytablom()
        dsytablo.Columns.Add("id", GetType(Integer))
        dsytablo.Columns.Add("dosya", GetType(String))
        dsytablo.Columns.Add("konumu", GetType(String))
        dsytablo.Columns.Add("boyut", GetType(String))
        Dim primaryKey(0) As DataColumn
        primaryKey(0) = dsytablo.Columns("id")
        dsytablo.PrimaryKey = primaryKey
    End Sub
Bu tabloya bilgileri girerken otomatik sayıyı girmem gerek normalde sadece giriş yapılacaksa hiç silme olmayacaksa aşağıdaki kod işe yarıyor çünkü kaç satır varsa o satır adedini giriyor yani hep varolan id 'deki son rakamın bir üstü
Kod:
dsytablo.Rows.Add(dsytablo.Rows.Count, Path.GetFileName(File), File)
Ama benim tabloda silme işlemleride oluyor bu nedenle yukarıdaki kod işe yaramıyor aşağıdaki gibi bir fonksiyon hazırlamayı denedim ama olmadı
Kod:
 Public Function otomat() As Integer
        'OTOMATİK SAYI
        For i As Integer = 0 To 100000
            If dsytablo.Rows.Count > -1  Then

                If dsytablo.Rows(i).Item(0) = i Then
                Else
                    otomat = i
                    Exit Function
                End If
            End If
                   Next
    End Function
Bu fonksiyon için kodumda alttaki gibi
Kod:
dsytablo.Rows.Add(otomat, Path.GetFileName(File), File)
Bu fonksiyonu dsytablo içinde id sutununu okuyup 0varmı 1varmı 2varmı 3varmı diye kontrol etsin olmayan rakamı bulduğunda otomat = i şeklinde otomat'a atasın ve döngü devam etmeden çıkılsın ama başarılı olamadım yardım edermisiniz?
Yukarıdaki döngü çok hatalı biliyorum iki döngünün iç içe olması lazım alttaki gibi ama olmayan rakamı bulmayı başaramadım
Kod:
    Public Function otomat() As Integer
        'OTOMATİK SAYI
        For x As Integer = 0 To dsytablo.Rows.Count ' Var olan satır sayısından bir fazlası yeterli olur yani - 1 yok

            For i As Integer = 0 To dsytablo.Rows.Count - 1
            
            Next

        Next
       
    End Function
 

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
Neyse kolay bir yolu varmış yaptım datatable'dede otomatik sayı oluyormuş.
Kod:
        dsytablo.Columns.Add("id", GetType(Integer))
        dsytablo.Columns("id").AutoIncrement = True
        dsytablo.Columns("id").AutoIncrementSeed = 1
        dsytablo.Columns("id").AutoIncrementStep = 1
        dsytablo.Columns.Add("dosya", GetType(String))
        dsytablo.Columns.Add("konumu", GetType(String))
        dsytablo.Columns.Add("boyut", GetType(String))
        Dim primaryKey(0) As DataColumn
        primaryKey(0) = dsytablo.Columns("id")
        dsytablo.PrimaryKey = primaryKey
 
Üst