Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
Μήνυμα λάθους: sub or function not defined
Καλησπέρα, έχω γράψει ένα μικρό κομμάτι κώδικα, με σκοπό να αντιγράφεται η τιμή του πεδίου AFM από τον πίνακα Α στο πεδίο AFM_FOR του πίνακα FOROLOGIKA_STOIXEIA. Ο κώδικας είναι ο εξής: Κώδικας: Private Sub AFM_AfterUpdate() INSERT INTO(FOROLOGIKA_STOIXEIA(["AFM_FOR"])) VALUES [("AFM")] End Sub sub or function not defined Μήπως έχω κάνει κάποιο λάθος στη σύνταξη; ¨Η είναι κάτι άλλο; |
#2
| |||
| |||
Καλησπέρα Δεν διευκρινίζεις ποια μέθοδο θέλεις να ακολουθήσεις αν και αυτό που γράφεις παραπέμπει σε εντολή 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
| |||
| |||
Παράθεση:
Σε ευχαριστώ. Δούλεψε μία χαρά. |
#4
| |||
| |||
Καλησπέρα ξανά, η πρόταση που έγινε πριν δούλεψε μία χαρά, όμως τώρα έχω ένα νέο θέμα. Ουσιαστικά αυτό που γίνεται είναι να αντιγράφεται το ΑΦΜ αυτόματα στον άλλο πίνακα, για να μην υπάρχει ο φόβος λανθασμένης εισαγωγής. Τα πεδία AFM και AFM_FOR είναι και τα 2 πεδία κλειδιού. Το πρόβλημα που έχω τώρα είναι ότι όταν πάει να γίνει η αντιγραφή του AFM στο AFM_FOR, η access μου βγάζει μήνυμα ότι "....δεν προσέθεσε 1 εγγραφή λόγω παραβιάσεων κλειδιών..." Γνωρίζει κανείς τι πρέπει να γίνει για να διορθωθεί; |
#5
| ||||
| ||||
Καλησπέρα! Μιχάλη το σύμπτωμα είναι ένα αλλά οι αιτίες που το προκαλούν πολλές. Από το μήνυμα σφάλματος που σου εμφανίζεται καταλαβαίνω ότι τουλάχιστον ένα από τα πεδία AFM και AFM_FOR είναι κλειδωμένο ώστε να μην παραβιαστούν κανόνες ακεραιότητας της βάσης δεδοµένων. Θα πρέπει να μετατρέψεις τη δομή των δεδομένων σου (σχέσεις πινάκων κτλ.) έτσι που να μπορείς να γράψεις στο πεδίο AFM_FOR κάτω από τις συνθήκες που.. εσύ ξέρεις ή να αναθεωρήσεις τη μέθοδο αντιγραφής της τιμής του πεδίου AFM. Πως ακριβώς πρέπει να γίνει αυτό, μπορείς μόνο εσύ να το γνωρίζεις. Οι υπόλοιποι φίλοι δεν γνωρίζουν απολύτως τίποτα για τη βάση σου για να μπορέσουν να σε βοηθήσουν. Για να βοηθηθείς θα πρέπει να επισυνάψεις ένα αρχείο μέσα από το οποίο θα μπορεί κανείς να αναπαράγει το πρόβλημα που αντιμετωπίζεις. Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών Τελευταία επεξεργασία από το χρήστη Tasos : 25-08-11 στις 22:59. |
#6
| |||
| |||
Καλησπέρα, Το πρόβλημα είναι όντως η ενεργοποίηση της αναφορικής ακεραιότητας στη σχέση μεταξύ των πινάκων. Αν τη καταργήσω η αντιγραφή γίνεται. Υπάρχει λύση χωρίς να χρειαστεί να καταργήσω τον έλεγχο για την αναφορική ακεραιότητα; Ή θα πρέπει να το κάνω και μετά να γίνονται οι έλεγχοι με SQL ή με κάποιο άλλο τρόπο; Σημειώνω ότι το ζήτημα της διαγραφής θα το κάνω με ανάλογο τρόπο με την ενημέρωση. Επισυνάπτω το αρχείο λοιπόν για να είναι πιο καθαρά τα πράγματα: |
#7
| ||||
| ||||
Καλημέρα Για να βοηθήσω τον διάλογο. Στους πίνακες εμφανίζεις μια σχέση ΕΝΑ προς ΕΝΑ καί αυτό σημαίνει : Σε κάθε εγγραφή του πίνακα 'BASIKA STOIXEIA' θέλεις να αντιστοιχίζεται ΜΙΑ εγγραφή του πίνακα 'FOROLOGIKA_STOIXEIA'. Αυτό είπες στην Access οτι θέλεις. Επιπλέον με την 'ακεραιότητα αναφοράς' λες ότι : Δεν επιτρέπω να υπάρχει εγγραφή στον πίνακα 'FOROLOGIKA_STOIXEIA',αν δεν προυπάρχει αντίστοιχη στον πίνακα 'BASIKA STOIXEIA'. Αυτά φίλτατε Μιχάλη σε ότι αφορά την βάση σου! Παράδειγμα: Αν ανοίξεις τον πίνακα 'FOROLOGIKA_STOIXEIA' και προσπαθήσεις να προσθέσεις εγγραφή, η Access δεν θα σε αφήσει και καλά κάνει, αφού εσύ της το είπες! Φυσικά δεν ξέρω τι θες να κάνεις και δεν έχω κάποια άλλη πρόταση. Η συμμετοχή μου στον διάλογο έχει να κάνει με την εξήγηση του τι σημαίνει η σχέση ΕΝΑ προς ΕΝΑ και του τι σημαίνει ακεραιότητα αναφοράς. Με εκτίμηση Νίκος Δ. |
#8
| ||||
| ||||
Καλησπέρα σε όλους! Συμφωνώ απόλυτα με το Νίκο. Μιχάλη, κάτι άλλο όμως: Γιατί χρησιμοποιείς δύο πίνακες για δεδομένα που θα μπορούσαν να βρίσκονται σε ένα; Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
#9
| |||
| |||
Καλησπέρα Μιχάλη, θα είμαι λίγο πιο αναλυτικός, από τον Νίκο και τον Τάσο, με τους οποίους συμφωνώ. Τα προβλήματα οφείλονται στο μη σωστό σχεδιασμό της ΒΔ. Θα αναφέρω κάποιες λεπτομέρειες, αλλά για να γίνουν κατανοητές απαιτείται κάποια υποδομή γνώσεων. Αν δεν υπάρχει προτείνω τη μελέτη του παρακάτω άρθρου. Βασικές αρχές σχεδίασης βάσης δεδομένων - Access - Office.com 1. Επειδή η σχέση των πινάκων είναι 1 προς 1 (σε κάθε εγγραφή του ενός αντιστοιχεί σε μία μόνο εγγραφή του άλλου) δεν υπάρχει λόγος να έχουμε δύο πίνακες. Είναι πολύ πιο απλό να έχουμε ένα πίνακα με τα πεδία και των δύο. Ίσως θα μπορούσε να αναρωτηθεί κάποιος πως θα βολέψω τόσα πεδία σε μία φόρμα; Κανένα πρόβλημα, υπάρχει το χειριστήριο των καρτελών. Μπορούμε να δημιουργήσουμε ομάδες συγγενών πεδίων και κάθε μία να την τοποθετήσουμε σε μία καρτέλα. 2. Στον πίνακα «ΦΟΡΟΛΟΓΙΚΑ_ΣΤΟΙΧΕΙΑ, υπάρχουν πολλά πεδία, που και άχρηστα είναι και περιορίζουν την ευελιξία της ΒΔ. Για παράδειγμα όλα τα πεδία [ΑΤΟΜΙΚΗ], [ΟΕ], [ΕΕ], [ΚΟΙΝΟΠΡΑΞΙΑ], [ΕΠΕ], [ΑΕ], [ΛΟΙΠΕΣ], θα πρέπει να αντικατασταθούν από ένα Πχ το [ΕΙΔΟΣ], το οποίο με τη βοήθεια ενός πτυσσόμενου σύνθετου πλαισίου και ενός βοηθητικού πίνακα θα έπαιρνε τις τιμές [ΑΤΟΜΙΚΗ], [ΟΕ], [ΕΕ] ... και οποιαδήποτε άλλη εμφανιζόταν στο μέλλον. Πριν συνεπώς ασχοληθείς με οτιδήποτε άλλο θα πρέπει να αφιερώσεις χρόνο στη βελτίωση της σχεδίασης της ΒΔ. Φιλικά/Γιώργος |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | 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.