Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Κλείσιμο όλων των ανοιχτών φορμών εκτός απο την MainForm και την LoginForm (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/3458-kleisimo-olon-ton-anoixton-formon-ektos-apo-tin-mainform-kai-tin-loginform.html)

γιώργοςΚ 10-12-14 11:27

Κλείσιμο όλων των ανοιχτών φορμών εκτός απο την MainForm και την LoginForm
 
Καλημερα σε όλους τους φίλους του φορουμ,

Εύχομαι κατά αρχάς Καλές Γιορτές - με υγεία πάνω απο όλα..!!

Αντιμετωπίζω ένα μικρό πρόβημα το οποίο δεν μπορώ να επιλύσω καθώς δεν διαθέτω τις απαιτούμενες γνώσεις προγραμματισμού Vba.

Με την βοήθεια του φίλου Γιώργου (Kapetang) κάποια στιγμή μου είχε γράψει έναν κώδικα έτσι ώστε όταν καλείται να βρίσκει και να κλείνει όλες τις ανοιχτές φόρμες που υπάρχουν στην βάση μου. Το πρόβλημα όμως τώρα ειναι ότι δεν θέλω να κλείνει δύο συγκεκριμμένες φόρμες (την frmStartupScreen και την frmLogon).

Παραθέτω λοιπόν τον κώδικα πιο κάτω και θα εκτιμήσω εάν κάποιος φίλος θα μπορούσε να τον μετατρέψει έτσι ώστε αφενώς να βρίσκει και να κλείνει όλες τις ανοιχτές φόρμες αλλά αυτήν την φορά να μήν μου κλείνει και τις πιο πάνω που έχω αναφέρει οι οποίες είναι σημαντικό να παραμένουν πάντοτε ανοιχτές.

Function CloseAllForms()

Dim obj As AccessObject, dbs As Object
Set dbs = Application.CurrentProject
' Search for open AccessObject objects in AllForms collection.
For Each obj In dbs.AllForms
If obj.IsLoaded = True Then
DoCmd.Close acForm, obj.Name, acSaveYes
' Print name of obj.
Debug.Print obj.Name
End If
Next obj
'έχω δώσει αυτήν την εντολή εφόσον θέλω να παραμένουν ανοιχτές αυτές οι δύο φόρμες όμως μου δημιουργεί πρόβλημα εφόσον ανοίξουν εκ νέου....

DoCmd.OpenForm "frmLogon"
DoCmd.OpenForm "frmStartupScreen"

End Function

kapetang 11-12-14 10:37

Καλημέρα

Γιώργο, δοκίμασε τον παρακάτω κώδικα:

Κώδικας:

Public Sub CloseAllForms()
    Dim j As Long
    For j = Forms.Count - 1 To 0 Step -1
        If Not (Forms(j).Name = "frmLogon" Or _
            Forms(j).Name = "frmStartupScreen") Then
            DoCmd.Close acForm, Forms(j).Name, acSaveYes
        End If
    Next
End Sub

Φιλικά/Γιώργος

γιώργοςΚ 11-12-14 19:44

Καλησπέρα φίλε Γιώργο και εύχομαι να είσαι καλά,

Και φυσικά δουλεύει φίλε μου ο κώδκας εφόσον προέρχεται απο εσένα..!!!!:thumbup1: :thumbup1:
Γιώργο σε υπέρ-ευχαριστώ και εύχομαι ο θεός να σου δίνει πάνω απο όλα υγεία αλλά και δύναμη και κουράγιο να μπορείς να ανέχεσαι εμάς τους αρχάριους που σας κουράζουμε με τις αδεξιότητες μας στο θέμα vba και φυσικά βάζω τον εαυτό μου πρώτα απο όλους..

Σε ευχαριστώ Γιώργο νάσαι καλά.


Η ώρα είναι 10:13.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2