Kayıt Çoğalt

1 2
21/10/2024, 14:54

edacan19

Arkadaşlar merhaba
Dtemin formuna kayıt çoğalt düğmesi ekliyorum alt formu çoğaltmıyor ve hata veriyor.
21/10/2024, 20:35

onur_can

Merhaba,
Alt formdaki kaydı çoğaltmanız için ilgili butonu alt forma ekleyiniz. siz ana forma eklemişsiniz.
22/10/2024, 08:22

edacan19

Sayın onur_can ana formumuz ve ana forma bağlı alt form ikisinide çoğaltmak istiyorum düğmeyi ana forma koysam sadece ana form çğaltılıyor ve uyarı veriyor alt forma koysam bu seferde sadece alt form çoğalıyor.
22/10/2024, 13:08

atoykan

Bu durumda çoğaltmak istediğiniz kayıt verilerini aşağıdaki örnek koda benzer şekilde recordsete alıp ilgili değerleri formunuzdaki denetimlere atamalısınız duplicate record veya kopyala yapıştır ile yapamazsınız.

    Dim rs_SubForm As DAO.Recordset
    Dim fld As DAO.Field
    Dim ctl_SubForm As Form
   
    Set ctl_SubForm = Me!AltformAdı.Form    'Alt forma erişim
    Set rs_SubForm = ctl_SubForm.RecordsetClone    ' Alt formun Recordset'ini koplayalım
   
    rs_SubForm.Bookmark = ctl_SubForm.Bookmark    'Kayıt bookmarkını belirleme
    ctl_SubForm.Recordset.AddNew    'Yeni kayıt oluşturma
   
    'Alt formdaki her alanı kopyalama işlemleri
    'ID gibi alanları, hesaplama yapılan alanlar vs. hariç tutabilirsiniz
    For Each fld In rs_SubForm.Fields
        If fld.Name <> "ID" Then    'Örneğin ID alanını çoğaltmıyoruz
            ctl_SubForm(fld.Name) = rs_SubForm(fld.Name)
        End If
    Next fld
   
    ctl_SubForm.Recordset.Update    'Yeni kaydı güncelleyip kaydediyoruz
   
    rs_SubForm.Close
    Set rs_SubForm = Nothing
    Set ctl_SubForm = Nothing
22/10/2024, 14:11

berduş

@atoykan hocamın da belirttiği gibi kopyala yapıştır yerine kodlarla yapmak daha uygun olur, en azından altformdaki kayıtların kopyala yapıştır yöntemiyle yapılması kimlik ilişkisi nedeniyle sorun çıkarır.
aşağıdaki gibi bir kod belki işinize yarayabilir?
On Error GoTo Err_Komut118_Click
Dim strSQL As String, ilkKimlik
ilkKimlik = Me.Kimlik

    DoCmd.RunCommand acCmdSelectRecord
    DoCmd.RunCommand acCmdCopy
    DoCmd.RunCommand acCmdRecordsGoToNew
    DoCmd.RunCommand acCmdSelectRecord
    DoCmd.RunCommand acCmdPaste
    DoCmd.RunCommand acCmdSave '|<-----kaydetme işlemi için eklendi bu olmadan alt tabloya veri eklenmiyor

strSQL = ""
strSQL = "SELECT * FROM Malzeme where [Kimlik]=" & ilkKimlik
    Set rs1 = CurrentDb.OpenRecordset(strSQL)
    Set rs2 = CurrentDb.OpenRecordset("Malzeme")
   
        With rs1
            If Not .BOF And Not .EOF Then
                .MoveFirst
                While (Not .EOF)
                    rs2.AddNew
                        For x = 1 To .Fields.Count - 1
                            If rs1(x).Type <> 7 Then rs2(x) = rs1(x)
                        Next x
                    rs2(0) = Me.Kimlik
                    rs2.Update
                .MoveNext
                Wend
            End If
        End With


Exit_Komut118_Click:
    Exit Sub

Err_Komut118_Click:
    MsgBox Err.Description
    Resume Exit_Komut118_Click

bu arada aklıma gelmişken ilgili kayda gitmek için kullandığınız makro da bence sorunlu
öncelikle güncellenme olayına eklemişsiniz ki eğer amaç sadece ilgili kayda gitmekse tıklama olayına eklenmeliydi.
ikinci olarak da makro yerine kod ile gitmek daha uygun olurdu, bende kaydı çoğaltma olayında sorun çıkarıp durdu
22/10/2024, 14:56

edacan19

Çok teşekkür ediyorum emeğinize sağlık tam istediğim gibi oldu.
1 2