AccessTr.neT

Tam Versiyon: Kaydetmeden kapatma işlemini nasıl gerçekleştirebilirim?
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Sayfalar: 1 2 3 4 5
Merhaba,

İnceleyip olumlu/olumsuz bildirimde bulununuz.
Merhaba ozanakkaya ve atoz112 hocalarım.

Ellerinize sağlık. Süper oldu. Bunu diğer formlarım da da kullanacağım inşallah. Süper olmuş. Allah ilminizi artırsın.
Merhaba hocalarım.

Biliyorum cevaplanmış sorulara aktarıldı ancak. Bu kodları diğer formlarım da kullandığımda geri alma işlemi yapmıyor. aşağıdaki kodda kırmızı olan yerleri değişiklik yapacağım formların ismi ile değiştirdim. Örnek teki gibi alt formlara da gerekli ekleri yaptım. Ancak yeni formda gerekli geri almaları yapmadı.

Çalışan kod
Dim ctl As Access.Control
For Each ctl In Me.Controls
If ctl.ControlType = acTextBox And ctl.Tag = 1 Then
ctl.Value = EskiVeriler.Item(ctl.Name)
End If
Next
Set ctl = Nothing
Call Me.FATURADETAY.Form.EskiVeri
DoCmd.Close acForm, "alısfatura"

Cancel = True
DoCmd.Close
Else
Cancel = True
DoCmd.Close
End If


Yeni forma eklediğim kod

Dim ctl As Access.Control
For Each ctl In Me.Controls
If ctl.ControlType = acTextBox And ctl.Tag = 1 Then
ctl.Value = EskiVeriler.Item(ctl.Name)
End If
Next
Set ctl = Nothing
Call Me.HAREKETDETAY.Form.EskiVeri
DoCmd.Close acForm, "HAREKETLER"

Cancel = True
DoCmd.Close
Else
Cancel = True
DoCmd.Close
End If
End If
'Hata:
End Sub
mdl_gerial isminde modül eklendi.

Option Compare Database
Option Explicit

Global EskiVeriler As VBA.Collection
'www.accesstr.net

Public Function EskiVerileriSakla(GFormadi As String)
On Error Resume Next
Dim GKontrol As Access.Control
Dim GAltformKontrol As Access.Control
Dim GForm As Access.Form

Set EskiVeriler = New VBA.Collection

Set GForm = Forms(GFormadi)

   For Each GKontrol In GForm.Controls

       If TypeName(GKontrol) = "SubForm" Then
           For Each GAltformKontrol In GKontrol.Form.Controls
               If GAltformKontrol.ControlType = acTextBox And GAltformKontrol.Tag = 1 Then
                   EskiVeriler.Add GAltformKontrol.Value & "", GAltformKontrol.Name
               End If
           Next
       Else
           If GKontrol.ControlType = acTextBox And GKontrol.Tag = 1 Then
               EskiVeriler.Add GKontrol.Value & "", GKontrol.Name
           End If
       End If
   Next

Set GKontrol = Nothing
End Function

Public Function EskiVeriAktar(GFormadi As String)
On Error Resume Next
Dim GKontrol As Access.Control
Dim GAltformKontrol As Access.Control
Dim GForm As Access.Form

Set GForm = Forms(GFormadi)

For Each GKontrol In GForm.Controls
   If TypeName(GKontrol) = "SubForm" Then
       For Each GAltformKontrol In GKontrol.Form.Controls
           If GAltformKontrol.ControlType = acTextBox And GAltformKontrol.Tag = 1 Then
               GAltformKontrol.Value = EskiVeriler.Item(GAltformKontrol.Name)
           End If
       Next
   Else
       If GKontrol.ControlType = acTextBox And GKontrol.Tag = 1 Then
           GKontrol.Value = EskiVeriler.Item(GKontrol.Name)
       End If
   End If
Next
End Function

Veri değiştiğinde geri alınacak metin kutularının im özelliğine 1 yazıldı.

Formun geçerli olduğunda olayına 

Call EskiVerileriSakla(Me.Name)

Kodu eklendi.

Geri Al veya kapat butonunun tıklandığında olayına

Call EskiVeriAktar(Me.Name)

Kodu eklendi.
Sayın raburabu,

Sadece bilgilendirme amacı olması adına;
Örneği inceleme imkanım olmamakta fakat kodlara göre yorumlamak üzere,

Eğer önceki formlardaki denetimlerin özelliklerinde IM (TAG) satırı 1 olak yazıldıysa,yeni formlarda da aynı şekilde 1 olarak yazmanız gerekir.kodlarda gördüğüm ayrıntı bu olduğu için buna dikkat çekmek istedim.

Blginize...iyi çalışmalar,saygılar.
Son durum nedir @raburabu
Sayfalar: 1 2 3 4 5