help! για προγραμματιστές ΑΝΑΠΤΥΞΗ Β.Δ ΣΕ ACCESS

Ξεκίνησε από xaidi, 28 Απρ 2004, 02:22:25 ΜΜ

« προηγούμενο - επόμενο »

xaidi

έχω στα χέρια μου μια βάση δεδομένων η οποία ενεργοποιήθηκε τώρα, μετά από 8 χρόνια από την κατασκευή της. δημιουργηθηκε να ελέγξει ελληνικά ζώα τα οποία βρισκόταν διάσπαρτα σε διάφορους νομούς. όταν έτρεχε σε access 97 κανείς δεν είχε σκεφτεί την μελοντική της χρήση σε δίκτυο  :furious3: εν πάσι περιπτώσι αυτή τη στιγμή πρέπει να γίνει. το θέμα είναι ότι ήδη έχει μέσα της περί των 50000 αλληλοσισχετισμένων εγραφών.
το primary key των εγγραφών και ολης τησ βάσης είναι ένα πεδίο τύπου long integer το οποίο για κάθε αντίγραφο τησ βάσης ξεκινούσε από 1 συνήθως. είναι κατανοητό πως αυτές οιεγγραφές δεν μπορούν εύκολα να γίνουν ένα αρχείο.
 ???σκέφτηκα να κάνω update το πεδίο χρησιμοποιώντας κάποιο αλλο μοναδικό χαρακτηριστικό των ζώων όμως είναι 14ψήφιο και δεν χωρά.
 ???σκέφτηκα να αλλάξω το πεδίο σε κείμενο (ψάχνω για τον κώδικα ) χωρίς να πειραχτούν οι εγγραφές και να ανοιχτούν οι σχέσεις
τ ???έλος σχέφτηκα να δημιουργήσω ένα number generator για να μπορώ να ελέγχω το πεδίο πάντα αλλά δεν μπορώ να αρχικοποιήσω το πεδίο στον αριθμό που θέλω (όχι στον κώδικα στην access)
μπορεί κάποιος να βοηθήσει?  :)
που μπορώ να πάρω πληροφορίες έστω
για όποιον θέλει να ασχοληθεί ώστε να βγωαπό τα δύσκολα μπορώ να του στείλω και το αρχείο
ευχαριστώ εκ των προτέρων
Ευχαριστώ,

Βρακόπουλος Λ. Αθανάσιος


Κατερίνη 5-6-2004
Καλησπερα σας

Ονομάζομαι Βρακόπουλος Αθανάσιος είμαι εκπαιδευτικός στο 2ο Ε.Λ. Κατερίνης

Δεν ξέρω αν έχεις επιλύση το πρόβλημά σου. Μια λύση που σας προτείνω είναι η ακόλουθη.

Κάνουμε ένα αντίγραφο της βάσης δεδομένων
Αφού καταγράψουμε τις σχέσεις των πινάκων, διαγράφουμε αυτές.
Έστω το πρωτεύον κλειδί του πίνακα είναι το Old_pri_key
Δημιουργούμε ένα νέο πεδίο New_pri_key 10 χαρακτήρων σε κάθε πίνακα
 
Στο πεδίο μορφή ορίζουμε τον τύπο: @@@-@@@@@@@ και στην μάσκα εισαγωγής ορίζουμε τον τύπο: 999-9999999

Με ερώτημα ενημέρωσης σε κάθε πίνακα των βάσεων δεδομένων ενημερώνουμε αυτό το πεδίο. Το «σε κάθε πίνακα» αναφέρεται και σε κάθε πίνακα της βάσης που είναι συσχετισμένος με τον πίνακα που έχει το πρωτεύον κλειδί Old_pri_key

Το πεδίο αυτό θα έχει περιεχόμενο τον αύξοντα αριθμό της βάσης δεδομένων με τρία ψηφία πχ 001 και στην συνέχεια το περιεχόμενο του πρωτεύοντος κλειδιού σε  κείμενο right(“000000000”+trim(str(pra key));7)
Δηλαδή σε SQL
UPDATE Πίνακας1 SET Πίνακας1.new_pri_key = "001"+Right("00000000000"+Trim(Str([Old_pri_key])),7);


Σε κάθε πίνακα που είναι ορισμένο σαν πρωτεύων κλειδί το Old_pri_key το διαγράφουμε αυτό το πεδίο και ορίζουμε σαν πρωτεύον πεδίο το New_pri_key

Δημιουργούμε εκ νέου τις σχέσεις των πινάκων με τα νέα κλειδιά
Αν θέλεις να έχεις στα νέα πεδία τα ονόματα των παλαιών πεδίων τότε πρέπει να κάνεις αλλαγή των ονομάτων πριν δημιουργήσεις τις νέες σχέσεις
Κλείνουμε τον πίνακα και αποθηκεύουμε.

Αυτό θα γίνει σε κάθε βάση δεδομένων ξεχωριστά
Μετά την εκτέλεση των παραπάνω εργασιών μπορούμε πλέον να ενώσουμε τους πίνακες των διαφορετικών βάσεων δεδομένων. Στην συνέχεια πρέπει να διαγράψουμε τις διπλές εγγραφές.
Αν θέλεις μπορείς να μου στείλεις μια βάση δεδομένων και να σου την κάνω.
Καλή επιτυχία
Με εκτίμηση
Βρακόπουλος Αθανάσιος