Veri tekrarı

30/10/2012, 17:50

mehcengiz

Ekteki veritabanımdaki Tablo1 de Kimlik, İl, İlçe ve SeminerTarihi alanları var. İstediğim şu: Aynı il, ilçe ve tarihte ikinci bir seminer eklenmesin tabloya. Örneğin: Aydın ili Nazilli İlçesi 01/02/2012 tarihli iki tane veri olmasın.
Aynı ilçede farklı tarihte seminer düzenleyebiliriz.
veya;
aynı tarihte farklı bir ilçede de seminer düzenleyebiliriz.
bu sınırlamayı nasıl yapabilirim acaba?
ilginize teşekkür ederim.
30/10/2012, 18:38

Kur@l

En basit yöntem Tablonun tasarım görünümünde açarak il,ilçe,tarih alanlarını seçip Primary key yapmandır.
Araç çubuğundaki sarı anahtar komutu ile.
Kolay Gelsin.
31/10/2012, 09:59

mehcengiz

Teşekkür ederim
05/11/2012, 17:32

esrefigit

primary key yapılırsa tekrara izin verilse bile aynı ilçede seminer olabileceği için farklı tarihte sorun yaratır
05/11/2012, 17:46

Kur@l

Abi tarihide primary key yaptığımızdan farklı tarihlerde yapılmasına izin verecektir.
06/11/2012, 09:37

esrefigit

kod



Option Compare Database
Public rstkayit As ADODB.Recordset
Dim strSQL As String
Const tarfor = "\#mm\/dd\/yyyy\#"
Private Sub Komut16_Click()
Call arakaydet
End Sub
Function arakaydet()
Dim strWhere As String
' kriter alanlarını kontrol ediyoruz
If Len(Me.tarih & vbNullString) > 0 Then
strWhere = strWhere & "Tablo2.tarih= " & Format(Me.tarih, tarfor) & "AND "
End If
If Len(Me.ilce & vbNullString) > 0 Then
strWhere = strWhere & "Tablo2.ilce='" & Me.ilce & "' AND "
End If
If Len(Me.semineradi & vbNullString) > 0 Then
strWhere = strWhere & "Tablo2.semineradi='" & Me.semineradi & "' AND "
End If
' where ekleme ve fazla and leri kaldırma
If Len(strWhere) > 0 Then
strWhere = " WHERE " & Left(strWhere, Len(strWhere) - 4)
End If

strSQL = "SELECT * FROM Tablo2 " & strWhere & ";"
Set rstkayit = New ADODB.Recordset
rstkayit.Open strSQL, CurrentProject.Connection, adOpenStatic, adLockReadOnly

If Not rstkayit.BOF And Not rstkayit.EOF Then
MsgBox "BU TARİH VE BU İLÇEDE YAZDIĞINIZ SEMİNER BULUNMAKTADIR."
Else
strSQL = "SELECT * FROM Tablo2 "
Set rstkayit = New ADODB.Recordset
rstkayit.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
With rstkayit
.AddNew
.Fields("tarih") = Me.tarih
.Fields("ilce") = Me.ilce
.Fields("semineradi") = Me.semineradi
.Update
End With
MsgBox "KAYDINIZ YAPILDI ALANLAR BOŞALTILDI"
Me.tarih = ""
Me.ilce = ""
Me.semineradi = ""
End If
End Function