• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

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
 
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 **************
 
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..
 
Geri
Üst