sonrdan eklenen sorgu hata (13:Type mismatch) veriyor. Ama sizin gönderdiğiniz örnek hata vermiyor. Çözemedim.
Burada for next gibi bir döngü kullansak nasıl olur. Hata veren sorgudan kurtulmak için
tblMallar tablosunda KonuID değeri form üzerindeki txtKonu ID ne eşit olanları bulup döngü ile 1 den başlayarak numaralandırsa
bunun kodunu nasıl yazabilirim.
Teşekkürler. İyi çalışmalar.
Yeniden Sıra Numarası Verme
aşağıdaki kodu silme butonuna -en sona- ekleyip dener misiniz?
CurrentDb.Execute "UPDATE tblMallar SET tblMallar.Malno = DCount(""*"",""[tblMallar]"",""[Ihaleno]='" & Me.akNo & "' and [MalID]<= "" & [tblMallar]![MalID]);"
Not: örneğiniz gerekli referanslar eklenmemiş olduğundan ben de çalışmadı, dosyanız sizde çalışıyor mu?
Kodu ekledim.Çalışmıyor.
Aşağıdaki gibi bir kod yazsam. Verilecek numarayı i olarak tanımlasam.
KonuID si formdaki KonuID ye eşit olan MalID ye eşit olanları bulsa ve i değerini yazsa. Yazdıktan sonra i değerini 1 artırsa.
Mantık doğru olur mu?
Mantık doğruysa koddaki hataları düzeltebilrimisiniz.
Dim strSQL1 As String
Dim rsSQL1 As ADODB.Recordset
Dim Varmi As Integer
Dim i As String
i = 1
strSQL1 = "SELECT * FROM tblKonu WHERE ((Ihaleno='" & Me.akNo & "') AND (Yil='" & Me.txtYil & "'));"
Set rsSQL1 = New ADODB.Recordset
rsSQL1.Open strSQL1, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
DoCmd.SetWarnings False
Do While Not rsSQL1.EOF
Varmi = Nz(DLookup("MalID", "tblMallar", "[KonuID] = " & rsSQL1.Fields("KonuID") & " And [Yil] = '" & Me.txtYil & "' And [Ihaleno] = '" & Me.akMalno & "'"), 0)
If Varmi = 0 Then
DoCmd.RunSQL "INSERT INTO tblMallar (Malno) VALUES ('" & i & "')"
i = i + 1
Else
Exit Sub
End If
rsSQL1.MoveNext
Loop
DoCmd.SetWarnings True
rsSQL1.Close
Set rsSQL1 = Nothing
KonuID si formdaki KonuID ye eşit olan MalID ye eşit olanları bulsa ve i değerini yazsa. Yazdıktan sonra i değerini 1 artırsa.
Mantık doğru olur mu?
Mantık doğruysa koddaki hataları düzeltebilrimisiniz.
Dim strSQL1 As String
Dim rsSQL1 As ADODB.Recordset
Dim Varmi As Integer
Dim i As String
i = 1
strSQL1 = "SELECT * FROM tblKonu WHERE ((Ihaleno='" & Me.akNo & "') AND (Yil='" & Me.txtYil & "'));"
Set rsSQL1 = New ADODB.Recordset
rsSQL1.Open strSQL1, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
DoCmd.SetWarnings False
Do While Not rsSQL1.EOF
Varmi = Nz(DLookup("MalID", "tblMallar", "[KonuID] = " & rsSQL1.Fields("KonuID") & " And [Yil] = '" & Me.txtYil & "' And [Ihaleno] = '" & Me.akMalno & "'"), 0)
If Varmi = 0 Then
DoCmd.RunSQL "INSERT INTO tblMallar (Malno) VALUES ('" & i & "')"
i = i + 1
Else
Exit Sub
End If
rsSQL1.MoveNext
Loop
DoCmd.SetWarnings True
rsSQL1.Close
Set rsSQL1 = Nothing
hata mı veriyor değişiklik mi yapmıyor?
çünkü tblMallar tablonuzda MalNo alanının hepsine rasgele numara verdim
silmek istediğimde hata verdiği için tüm silme kodlarını iptal ettim sadece o kodu kullandım hepsini düzenledi
çünkü tblMallar tablonuzda MalNo alanının hepsine rasgele numara verdim
silmek istediğimde hata verdiği için tüm silme kodlarını iptal ettim sadece o kodu kullandım hepsini düzenledi
Tabloda Malno alanını silip Formun kayıt kaynağı olan sorguda Malno alanı oluşturup
Malno=DCount("*","tblMallar","[MalId]<=" & [MalId])
yapsanız işinizi görür mü?
Böylece komutlara (kodlara) gerek te kalmaz diye düşünüyorum.
Malno=DCount("*","tblMallar","[MalId]<=" & [MalId])
yapsanız işinizi görür mü?
Böylece komutlara (kodlara) gerek te kalmaz diye düşünüyorum.
Konuyu Okuyanlar: 1 Ziyaretçi