![]() |
Πρόβλημα με συνδεδεμένη ΒΔ 2 Συνημμένο(α) Γεια σας. Είμαι νέο μέλος και ζητάω βοήθεια πρώτη φορά. Έχω μία συνδεδεμένη ΒΔ στην οποία πρέπει να τσεκάρω με VBA την ενεργοποίηση ακεραιότητας αναφορών, αλλά και την διαδοχική ενημέρωση και την διαδοχική διαγραφή. Ο παρακάτω κώδικας το κάνει αυτό, αλλά μόνο όταν είναι στην ίδια ΒΔ με τους πίνακες. Option Compare Database Option Explicit Public Const dbRelationCascadeNull As Long = &H2000 'DAO bit for the Attributes of the Relation. 'DDL example Function MakeRelJetADO1() 'Purpose: Create a Cascade-to-Null relation using DDL. Dim strSql As String strSql = "ALTER TABLE tblProduct ADD CONSTRAINT tblCategorytblProduct " & _ "FOREIGN KEY (CategoryID) REFERENCES " & _ "tblCategory (CategoryID) ON update cascade on DELETE cascade" CurrentProject.Connection.Execute strSql Debug.Print "Constraint created" End Function Function RelationExists(strRelName As String) As Boolean 'Purpose: Return True if the relation already exists. On Error Resume Next Debug.Print CurrentDb.Relations(strRelName).Attributes RelationExists = (Err.Number = 0&) End Function Δεν το κάνει όταν τον εκτελώ από φόρμα συνδεδεμένης βάσης. Παρακαλώ αν είναι δυνατόν για τη βοήθεά σας. Σας ευχαριστώ, Λευτέρης. Συνημμένα ανέβασα τις 2 ΒΔ |
Καλημέρα Λευτέρη καλωσόρισες στην παρέα του φόρουμ. Δοκίμασε τον παρακάτω κώδικα. Κώδικας: Function MakeRelJetADO()Αν είναι σε διαφορετικό θα πρέπει να αλλάξεις στον κώδικα το πλήρες όνομα της εξωτερικής βάσης. Φιλικά/Γιώργος |
Καλημέρα σε όλους! Λευτέρη καλωσόρισες στο φόρουμ! Ο κώδικας που παρουσιάζεις μπορεί να λειτουργήσει μόνο σε τοπικούς πίνακες μιας βάσης που είναι ανοιχτή και μόνο όταν αυτοί δεν χρησιμοποιούνται από κάποιο άλλο πρόγραμμα (συμπεριλαμβανομένης και της ίδιας της βάσης που περιέχει τον κώδικα). Αν πρέπει η διαδικασία τροποποίησης να γίνει προγραμματιστικά τότε θα πρέπει:
Φιλικά Τάσος |
Γιώργο και Τάσο σας ευχαριστώ πάρα πολύ για την πολύτιμη βοήθειά σας. Γιώργο, αντικατέστησα το όνομα της εξωτερικής βάσης όπως μου είπες και δούλεψε τέλεια. Πραγματικά, χίλια ευχαριστώ, γιατί παιδεύτηκα πολύ χωρίς επιτυχία, πριν σας ζητήσω βοήθεια. Τώρα θα προσπαθήσω την παρακάτω διαδρομή να τη βρίσκει αυτόματα, όπου και αν μετακινώ τον φάκελο. Mycnn = "c:\cascade\CascadeToNull_παρ.mdb" Αν αντιμετωπίσω πρόβλημα, θα ζητήσω και πάλι βοήθεια. Και πάλι πολύ μεγάλο ευχαριστώ, Λευτέρης. |
Καλημέρα σε όλους! Αγαπητέ Λευτέρη, Έστω ότι η βάση παρασκηνίου ονομάζεται BackEnd και η βάση με τις φόρμες, ερωτήματα κλπ. FrondEnd. Ο παρακάτω κώδικας μπορεί να αντιστοιχηθεί σε ένα κουμπί κάνει τα εξής:
Κώδικας: Option Compare DatabaseΚαλή συνέχεια! Φιλικά Τάσος |
2 Συνημμένο(α) Τάσο, καλημέρα. Σ' ευχαριστώ πάρα πολύ που ασχολείσε με το πρόβλημά μου. Έβαλα τον κώδικα σε ενα κουμπί και φόρμα είναι κενή, σύμφωνα με τις οδηγίες σου. Όταν εκτελεί την εντολή, μου βγάζει το μήνυμα : Can not Find the Sourse Database! Και τις δύο ΒΔ τις έχω στον ίδιο φάκελο. Έχω Win 7 & office 2003. Σε παρακαλώ, όταν μπορέσεις, δες τις ΒΔ που ανέβασα με το κώδικά σου. Σε ευχαριστώ και πάλι, Λευτέρης. |
Καλημέρα Λευτέρη! Ο κώδικας παίρνει την πληροφορία για τη διαδρομή της βάσης παρασκηνίου από τον πίνακα "MSysObjects" (στο παράδειγμα σου: C:\Users\Lefteris\Desktop\CascadeToNull_παρ.mdb) Κατόπιν κάνει έλεγχο αν η βάση παρασκηνίου υπάρχει στη διαδρομή αυτή. Αν δεν βρεθεί το αρχείο (όπως γίνεται στην περίπτωση σου) τότε η εκτέλεση του κώδικα διακόπτεται και ο χρήστης παίρνει το μήνυμα. "Can not Find the Sourse Database!" Αυτό σημαίνει ότι οι αναφορές των πινάκων της FrondEnd.mdb του παραδείγματος σου (C:\Users\Lefteris\Desktop\CascadeToNull_παρ.mdb) δεν είναι οι σωστές. Μπορείς να το διαπιστώσεις και χειροκίνητα αν προσπαθήσεις να ανοίξεις ένα από τους συνδεδεμένους πίνακες στην FrondEnd.mdb. Θα πρέπει με τη βοήθεια του οδηγού διαχείρισης πινάκων να επανασυνδέσεις τους πίνακες με το κατάλληλο αρχείο (στο παράδειγμα σου το BackEnd.mdb). ΥΓ. Δες το μήνυμα: http://www.ms-office.gr/forum/access...in-access.html Δοκίμασε το παραπάνω και τα λέμε. Φιλικά Τάσος |
Τάσο και πάλι καλημέρα. Είχες δίκιο σχετικά με την επανασύνδεση πινάκων. Προσάρμοσα τον κώδικα στην κανονική μου ΒΔ η οποία κάνει αυτόματα επανασύνδεση πινάκων και δούλεψε τέλεια. Να είσαι πάντα καλά, σε ευχαριστώ πάρα πάρα πολύ. Λευτέρης. |
| Η ώρα είναι 01:28. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.