Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   [ Φόρμες ] Άνοιγμα και κλείσιμο φόρμας wait (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/3453-anoigma-kai-kleisimo-formas-wait.html)

anestaki 07-12-14 16:56

Άνοιγμα και κλείσιμο φόρμας wait
 
Καλησπέρα σε όλους
Όποια ιδέα δεκτή
Προσπαθώ στην επιλογή του treeview1 να τρέξω μόνο στον κενό χρόνο την φόρμα wait πριν το άνοιγμα της φόρμας που καλό με παρακάτω κώδικα:
Κώδικας:

Function IsLoaded(ByVal strFormName As String) As Boolean
' Returns True if the specified form is open in Form view or Datasheet view.
' Use form name according to Access, not VBA.
' Only works for Access
    Dim oAccessObject As AccessObject

    Set oAccessObject = CurrentProject.AllForms(strFormName)
    If oAccessObject.IsLoaded Then
        If oAccessObject.CurrentView <> acCurViewDesign Then
            IsLoaded = True
        End If
    End If

End Function

Κώδικας:

Private Sub TreeView1_DblClick()
'-------------------------------
  DoCmd.OpenForm "frm_wait"
    Do While Not IsLoaded("frm_wait")
        DoEvents
    Loop
  Dim strKey As String
  Dim strTag As String
 
  ' If key is greater than 2, then open form.
  ' My node keys less than length 3 have no tags.
  strKey = Me.TreeView1.SelectedItem.Key
  If Len(strKey) > 2 Then
      strTag = Nz(Me.TreeView1.Nodes(strKey).Tag, "")
      If Len(strTag) > 0 Then
   
        Select Case strTag
            Case Is = "FrmBiblia"
                DoCmd.OpenForm strTag, acFormDS
            Case Is = "FrmEidEl"
                DoCmd.OpenForm strTag, acFormDS
            Case Is = "FrmEidhEntyp"
                DoCmd.OpenForm strTag, acFormDS
            Case Is = "FrmKatHmer"
                DoCmd.OpenForm strTag, acFormDS
            Case Is = "FrmEidEpix"
                DoCmd.OpenForm strTag, acFormDS
            Case Is = "FrmIdMelon"
                DoCmd.OpenForm strTag, acFormDS
            Case Is = "FrmKin2"
                DoCmd.OpenForm strTag, , , , acFormAdd
                Form_FrmKin2.NeoParasrtatiko = 1
                Form_FrmKin2.Ektypose.Enabled = False
                Form_FrmKin2.PerPar.Caption = ""
            Case Is = "FrmBank"
                DoCmd.OpenForm strTag, acFormDS
            Case Is = "FrmTrpl"
                DoCmd.OpenForm strTag, acFormDS
            Case Is = "FrmSthles"
                DoCmd.OpenForm strTag, acFormDS
            Case Else
        DoCmd.OpenForm strTag
        End Select
      End If
  End If
 
End Sub


kapetang 08-12-14 15:58

Καλησπέρα

Γιώργο, θα πρέπει να γίνεις πιο σαφής.

Περιέγραψε αναλυτικότερο το ρόλο και τη χρησιμότητα της φόρμας frm_wait.

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

anestaki 08-12-14 18:00

Καλησπέρα Γιώργο
Στην εντολή CaseIs = "FrmKin2" ο χρόνος αναμονής είναι αρκετά μεγάλος και θα ήθελα σε αυτόν να εμφανίζετε η "frm_wait" και να κλείνει όταν ολοκληρωθεί η εντολή φυσικά θα το χρησιμοποιήσω και σε άλλες εντολές

kapetang 08-12-14 21:12

Καλησπέρα

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

Κώδικας:

Private Sub TreeView1_DblClick()
'-------------------------------
    Dim strKey As String
    Dim strTag As String

    If IsLoaded("frm_wait") Then
        Forms("frm_wait").Visible = True
    Else
        DoCmd.OpenForm "frm_wait"
    End If

    ' If key is greater than 2, then open form.
    ' My node keys less than length 3 have no tags.
    strKey = Me.TreeView1.SelectedItem.Key
    If Len(strKey) > 2 Then
        strTag = Nz(Me.TreeView1.Nodes(strKey).Tag, "")
        If Len(strTag) > 0 Then

            Select Case strTag
            Case Is = "FrmBiblia", "FrmEidEl", "FrmEidhEntyp", "FrmKatHmer", _
                "FrmEidEpix", "FrmIdMelon", "FrmBank", "FrmTrpl", "FrmSthles"
                DoCmd.OpenForm strTag, acFormDS
            Case Is = "FrmKin2"
                DoCmd.OpenForm strTag, , , , acFormAdd
                Form_FrmKin2.NeoParasrtatiko = 1
                Form_FrmKin2.Ektypose.Enabled = False
                Form_FrmKin2.PerPar.Caption = ""
            Case Else
                DoCmd.OpenForm strTag
            End Select
        End If
    End If
    Forms("frm_wait").Visible = False
End Sub

Δεν είχα τη δυνατότητα να τον ελέγξω. Πιθανόν να εξυπηρετεί.

anestaki 08-12-14 23:33

Γιώργο σε ευχαριστώ θα το ελένξω αύριο από μια μάτια μπορεί να λειτουργεί
Καληνύχτα

anestaki 09-12-14 18:36

Καλησπέρα σε όλους
Γιώργο ενώ φαίνετε να τρέχει μου εμφανίζει μόνο ένα μαύρο πλαίσιο ……..!

kapetang 09-12-14 22:37

Γιώργο, Καλησπέρα

Δοκίμασε και τα εξής:

1) Από το φύλλο ιδιοτήτων κάνε τη φόρμα frm_wait αναδυόμενη (pop up).

2) Αν δεν πετύχει, πριν από την εντολή κλεισίματος της φόρμας βάλε μια καθυστέρηση.

Δες το θέμα: http://www.ms-office.gr/forum/access...-diastima.html

anestaki 13-12-14 10:19

Καλημέρα σε όλους
Χρησιμοποιώντας των παρακάτω κώδικα:
Κώδικας:

Function IsLoaded(ByVal strFormName As String) As Boolean
' Returns True if the specified form is open in Form view or Datasheet view.
' Use form name according to Access, not VBA.
' Only works for Access
    Dim oAccessObject As AccessObject
    Set oAccessObject = CurrentProject.AllForms(strFormName)
    If oAccessObject.IsLoaded Then
        If oAccessObject.CurrentView <> acCurViewDesign Then
            IsLoaded = True
        End If
       
    End If
End Function
Sub frm_wait()
DoCmd.OpenForm "frm_wait"
Form_frm_wait.Repaint
    Do While Not IsLoaded("frm_wait")
      DoEvents
Loop

Στο παρακάτω μου εμφανίζει σφάλμα (Ambiguous name detected)
Κώδικας:

Private Sub Form_Close()
  On Error GoTo Form_Close_Error
If IsLoaded("Frmkin2") = True Then
    Form_FrmKin2.ΚΩΔΠΕΛΑΤΗ.Requery
End If
  On Error GoTo 0
  Exit Sub
Form_Close_Error:
    MsgBox "ΣΦΑΛΜΑ " & Err.Number & " (" & Err.Description & ")"
End Sub


Γιατί δεν ξέρω αγγλικά μήπως γνωρίζει κάνης τι είναι και πως διορθώνετε.

Meteora 13-12-14 15:09

Καλησπέρα
Προφανώς η Sub Form_Close() δεν "βλέπει" την Function IsLoaded(ByVal strFormName As String) As Boolean. Είτε έχεις λάθος όνομα, είτε την καλείς από φόρμα στη οποία δεν υπάρχει.
Φτιάξε μια module και τοποθέτησε εκεί την Function IsLoaded(ByVal strFormName As String) As Boolean για να είναι ορατή από παντού.

Με εκτίμηση
Νίκος

anestaki 13-12-14 18:51

Καλησπέρα Νίκο
Ευχαριστώ για την Βοήθεια τώρα πρόσεξα ότι μετά το Wait όλες η φόρμες μου εμφανίζονται πίσω από την ενεργή φόρμα.


Η ώρα είναι 02:26.

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


Search Engine Optimization by vBSEO 3.3.2