21/10/2024, 14:54
Kayıt Çoğalt
1 2
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.
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?
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
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