Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Μήνυμα λάθους: sub or function not defined

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

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 25-08-11, 14:42
Όνομα: Μιχάλης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 02-08-2011
Μηνύματα: 10
Προεπιλογή Μήνυμα λάθους: sub or function not defined

Καλησπέρα,

έχω γράψει ένα μικρό κομμάτι κώδικα, με σκοπό να αντιγράφεται η τιμή του πεδίου AFM από τον πίνακα Α στο πεδίο AFM_FOR του πίνακα FOROLOGIKA_STOIXEIA.

Ο κώδικας είναι ο εξής:

Κώδικας:
Private Sub AFM_AfterUpdate()

INSERT INTO(FOROLOGIKA_STOIXEIA(["AFM_FOR"]))
VALUES [("AFM")]

End Sub
Ο κώδικας εκτελείται με το after_update event. Το θέμα είναι ότι δεν τρέχει. Κατά τη σύνταξη του κώδικα δεν μου βγάζει κάποιο σφάλμα, κατά την εκτέλεση όμως βγάζει:

sub or function not defined

Μήπως έχω κάνει κάποιο λάθος στη σύνταξη; ¨Η είναι κάτι άλλο;
Απάντηση με παράθεση
  #2  
Παλιά 25-08-11, 14:57
Όνομα: Στέλιος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-05-2009
Περιοχή: Αθήνα
Μηνύματα: 169
Προεπιλογή

Καλησπέρα
Δεν διευκρινίζεις ποια μέθοδο θέλεις να ακολουθήσεις αν και αυτό που γράφεις παραπέμπει σε εντολή SQL.
Έτσι αν και τα δύο πεδία βρίσκονται στην φόρμα σου μπορείς να γράψεις:

Private Sub AFM_AfterUpdate()
me.AFM_FOR=me.AFM
End Sub

Αν τώρα θέλεις να γράψεις εντολή SQL θα πρέπει να γράψεις:

Private Sub AFM_AfterUpdate()
docmd.runsql "INSERT INTO [FOROLOGIKA_STOIXEIA] ([AFM_FOR]) VALUES ([AFM])"
End Sub

Αν δεν σε καλύπτουν αυτά δώσε μας περισσότερες πληροφορίες
Απάντηση με παράθεση
  #3  
Παλιά 25-08-11, 15:13
Όνομα: Μιχάλης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 02-08-2011
Μηνύματα: 10
Προεπιλογή

Παράθεση:
Αν τώρα θέλεις να γράψεις εντολή SQL θα πρέπει να γράψεις:

Private Sub AFM_AfterUpdate()
docmd.runsql "INSERT INTO [FOROLOGIKA_STOIXEIA] ([AFM_FOR]) VALUES ([AFM])"
End Sub

Σε ευχαριστώ. Δούλεψε μία χαρά.
Απάντηση με παράθεση
  #4  
Παλιά 25-08-11, 21:23
Όνομα: Μιχάλης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 02-08-2011
Μηνύματα: 10
Προεπιλογή

Καλησπέρα ξανά,

η πρόταση που έγινε πριν δούλεψε μία χαρά, όμως τώρα έχω ένα νέο θέμα.

Ουσιαστικά αυτό που γίνεται είναι να αντιγράφεται το ΑΦΜ αυτόματα στον άλλο πίνακα, για να μην υπάρχει ο φόβος λανθασμένης εισαγωγής. Τα πεδία AFM και AFM_FOR είναι και τα 2 πεδία κλειδιού.

Το πρόβλημα που έχω τώρα είναι ότι όταν πάει να γίνει η αντιγραφή του AFM στο AFM_FOR, η access μου βγάζει μήνυμα ότι "....δεν προσέθεσε 1 εγγραφή λόγω παραβιάσεων κλειδιών..."

Γνωρίζει κανείς τι πρέπει να γίνει για να διορθωθεί;
Απάντηση με παράθεση
  #5  
Παλιά 25-08-11, 22:49
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Καλησπέρα!
Μιχάλη το σύμπτωμα είναι ένα αλλά οι αιτίες που το προκαλούν πολλές.

Από το μήνυμα σφάλματος που σου εμφανίζεται καταλαβαίνω ότι τουλάχιστον ένα από τα πεδία AFM και AFM_FOR είναι κλειδωμένο ώστε να μην παραβιαστούν κανόνες ακεραιότητας της βάσης δεδοµένων.

Θα πρέπει να μετατρέψεις τη δομή των δεδομένων σου (σχέσεις πινάκων κτλ.) έτσι που να μπορείς να γράψεις στο πεδίο AFM_FOR κάτω από τις συνθήκες που.. εσύ ξέρεις ή να αναθεωρήσεις τη μέθοδο αντιγραφής της τιμής του πεδίου AFM.

Πως ακριβώς πρέπει να γίνει αυτό, μπορείς μόνο εσύ να το γνωρίζεις.

Οι υπόλοιποι φίλοι δεν γνωρίζουν απολύτως τίποτα για τη βάση σου για να μπορέσουν να σε βοηθήσουν.

Για να βοηθηθείς θα πρέπει να επισυνάψεις ένα αρχείο μέσα από το οποίο θα μπορεί κανείς να αναπαράγει το πρόβλημα που αντιμετωπίζεις.

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 25-08-11 στις 22:59.
Απάντηση με παράθεση
  #6  
Παλιά 26-08-11, 14:07
Όνομα: Μιχάλης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 02-08-2011
Μηνύματα: 10
Προεπιλογή

Καλησπέρα,

Το πρόβλημα είναι όντως η ενεργοποίηση της αναφορικής ακεραιότητας στη σχέση μεταξύ των πινάκων. Αν τη καταργήσω η αντιγραφή γίνεται.

Υπάρχει λύση χωρίς να χρειαστεί να καταργήσω τον έλεγχο για την αναφορική ακεραιότητα; Ή θα πρέπει να το κάνω και μετά να γίνονται οι έλεγχοι με SQL ή με κάποιο άλλο τρόπο;

Σημειώνω ότι το ζήτημα της διαγραφής θα το κάνω με ανάλογο τρόπο με την ενημέρωση.

Επισυνάπτω το αρχείο λοιπόν για να είναι πιο καθαρά τα πράγματα:
Συνημμένα Αρχεία
Τύπος Αρχείου: zip AfmTest.zip (127,7 KB, 24 εμφανίσεις)
Απάντηση με παράθεση
  #7  
Παλιά 26-08-11, 16:38
Το avatar του χρήστη Meteora
Συντονιστής
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 28-12-2008
Περιοχή: Θεσσαλονίκη
Μηνύματα: 1.033
Προεπιλογή

Καλημέρα

Για να βοηθήσω τον διάλογο. Στους πίνακες εμφανίζεις μια σχέση ΕΝΑ προς ΕΝΑ καί αυτό σημαίνει : Σε κάθε εγγραφή του πίνακα 'BASIKA STOIXEIA' θέλεις να αντιστοιχίζεται ΜΙΑ εγγραφή του πίνακα 'FOROLOGIKA_STOIXEIA'. Αυτό είπες στην Access οτι θέλεις. Επιπλέον με την 'ακεραιότητα αναφοράς' λες ότι : Δεν επιτρέπω να υπάρχει εγγραφή στον πίνακα 'FOROLOGIKA_STOIXEIA',αν δεν προυπάρχει αντίστοιχη στον πίνακα 'BASIKA STOIXEIA'.
Αυτά φίλτατε Μιχάλη σε ότι αφορά την βάση σου!
Παράδειγμα:
Αν ανοίξεις τον πίνακα 'FOROLOGIKA_STOIXEIA' και προσπαθήσεις να προσθέσεις εγγραφή, η Access δεν θα σε αφήσει και καλά κάνει, αφού εσύ της το είπες!
Φυσικά δεν ξέρω τι θες να κάνεις και δεν έχω κάποια άλλη πρόταση. Η συμμετοχή μου στον διάλογο έχει να κάνει με την εξήγηση του τι σημαίνει η σχέση ΕΝΑ προς ΕΝΑ και του τι σημαίνει ακεραιότητα αναφοράς.

Με εκτίμηση
Νίκος Δ.
Απάντηση με παράθεση
  #8  
Παλιά 27-08-11, 17:54
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Καλησπέρα σε όλους!

Συμφωνώ απόλυτα με το Νίκο.

Μιχάλη, κάτι άλλο όμως: Γιατί χρησιμοποιείς δύο πίνακες για δεδομένα που θα μπορούσαν να βρίσκονται σε ένα;

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #9  
Παλιά 27-08-11, 19:05
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα

Μιχάλη, θα είμαι λίγο πιο αναλυτικός, από τον Νίκο και τον Τάσο, με τους οποίους συμφωνώ.
Τα προβλήματα οφείλονται στο μη σωστό σχεδιασμό της ΒΔ.
Θα αναφέρω κάποιες λεπτομέρειες, αλλά για να γίνουν κατανοητές απαιτείται κάποια υποδομή γνώσεων.
Αν δεν υπάρχει προτείνω τη μελέτη του παρακάτω άρθρου.
Βασικές αρχές σχεδίασης βάσης δεδομένων - Access - Office.com
1. Επειδή η σχέση των πινάκων είναι 1 προς 1 (σε κάθε εγγραφή του ενός αντιστοιχεί σε μία μόνο εγγραφή του άλλου) δεν υπάρχει λόγος να έχουμε δύο πίνακες.
Είναι πολύ πιο απλό να έχουμε ένα πίνακα με τα πεδία και των δύο. Ίσως θα μπορούσε να αναρωτηθεί κάποιος πως θα βολέψω τόσα πεδία σε μία φόρμα;
Κανένα πρόβλημα, υπάρχει το χειριστήριο των καρτελών. Μπορούμε να δημιουργήσουμε ομάδες συγγενών πεδίων και κάθε μία να την τοποθετήσουμε σε μία καρτέλα.
2. Στον πίνακα «ΦΟΡΟΛΟΓΙΚΑ_ΣΤΟΙΧΕΙΑ, υπάρχουν πολλά πεδία, που και άχρηστα είναι και περιορίζουν την ευελιξία της ΒΔ.
Για παράδειγμα όλα τα πεδία [ΑΤΟΜΙΚΗ], [ΟΕ], [ΕΕ], [ΚΟΙΝΟΠΡΑΞΙΑ], [ΕΠΕ], [ΑΕ], [ΛΟΙΠΕΣ], θα πρέπει να αντικατασταθούν από ένα Πχ το [ΕΙΔΟΣ], το οποίο με τη βοήθεια ενός πτυσσόμενου σύνθετου πλαισίου και ενός βοηθητικού πίνακα θα έπαιρνε τις τιμές [ΑΤΟΜΙΚΗ], [ΟΕ], [ΕΕ] ... και οποιαδήποτε άλλη εμφανιζόταν στο μέλλον.
Πριν συνεπώς ασχοληθείς με οτιδήποτε άλλο θα πρέπει να αφιερώσεις χρόνο στη βελτίωση της σχεδίασης της ΒΔ.

Φιλικά/Γιώργος
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[ Φόρμες ] Εμφάνιση λάθους xristos0718 Access - Ερωτήσεις / Απαντήσεις 13 03-06-15 21:56
[VBA] Application-defined or object-defined error devcon Excel - Ερωτήσεις / Απαντήσεις 10 05-10-12 22:17
Μήνυμα Λάθους. foxone Access - Ερωτήσεις / Απαντήσεις 2 03-02-11 21:01
[ Συναρτήσεις ] Προγραμματιζόμενα πλήκτρα FUNCTION pdhmos Access - Ερωτήσεις / Απαντήσεις 5 24-10-10 20:07
Function IIF Deminio Access - Ερωτήσεις / Απαντήσεις 1 04-03-09 18:39


Η ώρα είναι 21:03.