güncelle

Katılım
2 Nisan 2006
Mesajlar
230
form_form1.Requery komutuyla form1 i güncelliyorum fakat benim istediğim aynı anda açık olan bütün formların tek komutla güncellenmesi
aynı anda açık olan formlar duruma göre değişiyor o yüzden
form_form1.Requery
form_form2.Requery
form_form3.Requery gibi bir komut denediğimde form 3 açık değil se hata mesajı veriyor
yardımlanırınızı bekliyorum
teşekürler
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın hedefkaya,

Aşağıdaki kodları deneyin. Ben deneyemedim henüz.

Kod:
Public Sub UpdateAllOpenForms(ByVal strFormName As String)
    Const cstrProcName As String = mcstrModuleName & "UpdateAllOpenForms"
    Dim frm As Form
    Dim rs As Recordset
    Dim fld As Field
    Dim lngFormcount As Long
    Dim i As Long
    Dim strCriteria As String
    Dim varr() As Variant
    Const conDesignView As Long = 0
    
    ' Ignore any errors...
    On Error Resume Next
    
    ReDim varr(Forms.Count, 2)
    
    ' Update any open forms...
    i = 0
    lngFormcount = 0
    For Each frm In Forms
        With frm
            If .FormName <> strFormName And .CurrentView <> conDesignView Then
                strCriteria = vbNullString
                Set rs = .RecordsetClone
                ' Ignore non-data bound forms...
                If Not (rs Is Nothing) Then
                    rs.Bookmark = .Bookmark
                    
                    ' First look for Identity field...
                    For Each fld In rs.Fields
                        If (fld.Attributes And dbAutoIncrField) = dbAutoIncrField Then
                            strCriteria = "[" & fld.Name & "]=" & fld.Value
                            ' Found identity (autonumber) field, so exit...
                            Exit For
                        End If
                    Next
                    
                    ' If Identity field not found, generate criteria that will locate the current record...
                    If Len(strCriteria) = 0 Then
                        For Each fld In rs.Fields
                            If IsNull(fld.Value) = False Then
                                ' Just use numeric fields (you could alter this to include string and date)...
                                If fld.Type = dbLong Then
                                    strCriteria = strCriteria & "(" & "[" & fld.Name & "]=" & fld.Value & ") AND "
                                End If
                            End If
                        Next
                        If Len(strCriteria) > 0 Then strCriteria = Left$(strCriteria, Len(strCriteria) - 5)
                    End If
                    Set rs = Nothing
                    
                    ' If we have criteria, add this form to the list...
                    If Len(strCriteria) > 0 Then
                        lngFormcount = lngFormcount + 1
                        varr(lngFormcount, 1) = .FormName
                        varr(lngFormcount, 2) = strCriteria
                    End If
                End If
            End If
        End With
    Next
    
    ' Close all open forms and reopen at same record...
    For i = 1 To lngFormcount
        DoCmd.Close acForm, varr(i, 1)
        DoCmd.OpenForm varr(i, 1)
        With Forms(varr(i, 1))
            Set rs = .RecordsetClone
            rs.FindFirst varr(i, 2)
            If Not rs.NoMatch Then
                .Bookmark = rs.Bookmark
            End If
            Set rs = Nothing
        End With
    Next
    
    Forms(strFormName).SetFocus
    Erase varr
    
End Sub
'************* Code End **************
 
Katılım
2 Nisan 2006
Mesajlar
230
say&#305;n modal&#305; ilgilendi&#287;in i&#231;in te&#351;ek&#252;rler fakat kodun kullan&#305;m&#305; hak&#305;nda da yard&#305;m edermisin ben ba&#351;aramad&#305;m..
 
Üst