Ανανέωση ιστοσελίδας

Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια!

 

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
Prev Προηγούμενο μήνυμα   Επόμενο Μήνυμα Next
  #1  
Παλιά 16-03-17, 16:25
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2013
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 01-10-2014
Μηνύματα: 13
Προεπιλογή VBA - Class Interface

Γεια σας παιδιά! Καταρχάς θα ήθελα να σας πω ένα μεγάλο μπράβο για την έργο που κάνετε μέσα από αυτό το Forum! Μπορεί να είναι η πρώτη μου δημοσίευση αλλά σας παρακολουθώ αρκετό καιρό.

Η επαφή μου τόσο με την Access όσο και την VBA έγινε πριν μερικούς μήνες. Επίσης δεν γνωρίζω καμία άλλη γλώσσα προγραμματισμού ούτε κάποιο άλλο πρόγραμμα βάσεις δεδομένων. Έτσι ζητώ συγγνώμη για την ορολογία που θα χρησιμοποιήσω, η οποία ξέρω ότι με κάνει δύσκολα κατανοητό.

Στο θέμα τώρα. Προσπαθώντας να υλοποιήσω το interface μιας κλάσης έχω το εξής πρόβλημα:
Όταν η interface Class περιλαμβάνει μέθοδο που έχει για παράμετρο, μεταβλητή τύπου access.Form, τότε όταν πάω να υλοποιήσω το interface σε μια άλλη Κλάση λαμβάνω μήνυμα λάθους ”User-defined type not defined”. Το μήνυμα εμφανίζεται μέσα στον VBA Editor αμέσως μόλις επιλέξω από τον Object drop-down list την interface Class και παράλληλα από-επιλέγεται από τον Object drop-down list η κλάση που μόλις είχα επιλέξει. Στην ουσία δεν με αφήνει να επιλέξω την interface Class από τον Object drop-down list, ώστε έπειτα να εισάγω τις μεθόδους και τις ιδιότητες που την υλοποιούν.

Παράδειγμα
Class Module: clsIMyObject - Interface Class
Κώδικας:
'----------------------------------------
' clsIMyObject - Interface Class
'----------------------------------------
Option Compare Database
Option Explicit

Public Sub method1(frm As Access.Form)
End Sub
Class Module: clsMyObject1 - Η κλάση που υλοποιεί την clsIMyObject
Κώδικας:
'----------------------------------------
' clsMyObject1 - Implements clsIMyObject
'----------------------------------------
Option Compare Database
Option Explicit

Implements clsIMyObject

'1) Mόλις επιλέξω από τον Object drop-down list την clsIMyObject λαμβάνω το Error  ”User-defined type not defined”
'2) Αν όμως με το πληκτρολόγιο γράψω:
'        Private Sub clsIMyObject_method1(frm As Form)
'           'some code'
'        End Sub
'  τότε δεν έχω κανένα πρόβλημα, αναγνωρίζεται κανονικά ως υλοποίηση της Interface Class!!!!!! 
Τέλος να προσθέσω ότι αν η παράμετρος τις μεθόδου ήταν μεταβλητή άλλου τύπου πχ ctl as Control δεν μου παρουσιάζετε κανένα πρόβλημα, δηλαδή :
Κώδικας:
'----------------------------------------
' clsIMyObject - Interface Class
'----------------------------------------

Public Sub method1(frm As Access.Form) ' <-- Error!!!!!! Giati????
End Sub

Public Sub method2() ' <-- No Error!
End Sub

Public Sub method3(ctl As Control) ' <-- No Error!
End Sub

Public Sub method4(sb As SubForm, str As String) ' <-- No  Error!
End Sub
Μπορείτε να με βοηθήσετε να καταλάβω τον λόγο του συγκεκριμένου σφάλματος? Ελπίζω να έγινα κατανοητός!
Συνημμένα Αρχεία
Τύπος Αρχείου: accdb Implements Interface.accdb (388,0 KB, 17 εμφανίσεις)
Απάντηση με παράθεση
 


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας



Η ώρα είναι 08:00.