Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
Αντιστοίχιση πεδίων και τσεκάρισμα
Γεια σε όλους τους λάτρεις της Access Θέλω να αντιστοιχίσω 2 στήλες σε 2 διαφορετικούς πίνακες και να γίνει update σε μια τρίτη στήλη. Πρώτα θέλω να βρει τα VoucherId και αφού κάνει την αντιστοίχιση να τσεκάρει αν είναι ίδια τα ποσά στα Deposit των 2 πινάκων. Τέλος να πάει να τσεκάρει (UPDATE) αν είναι σωστό να βάλει check αλλιώς να μην το πειράξει. Αναλυτικά έχω Table1 και Table 2. Οι στήλες (Table1.VoucherId, Table2.VoucherId, Table1.Deposit, Table1.Deposit) έχουν το ίδιο όνομα, εκτός από την στήλη που θα γίνει το τσεκάρισμα. Έτσι λοιπόν έγραψα το ακόλουθο, αλλά κάπου υπάρχει σφάλμα. Ζητώ την βοήθειά σας λοιπόν διότι έχω "κολλήσει". Τα πεδία των VoucherId τα έχω θέσει ως πρωτεύοντα κλειδιά. Το Table1.Status το έχω δηλώσει ως Ναι/Όχι (μήπως δεν μπορεί να δουλέψει έτσι το Trus=False?) UPDATE Table1 SET Table1.Status = True, Table1.DateUpdated = Date() FROM Table1 INNER JOIN Table2 ON Table1.VoucherID = Table2.VoucherID WHERE Table2.Date>= #06/10/2015# and Table2.Date<=#07/10/2015# AND Table2.Deposit = Table1.Deposit AND Table1.Status = False |
#2
| |||
| |||
Καλημέρα Βασίλη, δοκίμασε (σε προβολή SQL) το ερώτημα: Κώδικας: UPDATE Table1 INNER JOIN Table2 ON (Table1.Deposit = Table2.Deposit) AND (Table1.VoucherID = Table2.VoucherID) SET Table1.Status = -1, Table1.DateUpdated = Date() WHERE (((Table2.fDate) Between #10/6/2015# And #10/7/2015#) AND ((Table1.Status)=False)); Αν ο πίνακας Table1 συνδέεται με τον Table2 με σχέση 1 προς πολλά το πεδίο VoucherID, στο δεύτερο πίνακα, δεν πρέπει να είναι πρωτεύον κλειδί, αλλά ξένο (εξωτερικό). Επίσης αν η σχέση είναι 1 προς 1, γιατί δε συγχωνεύεις τους πίνακες σε ένα; Φιλικά/Γιώργος Τελευταία επεξεργασία από το χρήστη kapetang : 09-10-15 στις 09:23. |
#3
| |||
| |||
Γιώργο σε ευχαριστώ πολύ που ασχολήθηκες. Ήμουν μακρυά πολύ από αυτό που έγραψες. Πού θα μου πάει, θα τα καταφέρω. Γιώργο ο τύπος σχέσης που έχω ανάμεσα στους πίνακες είναι ένα προς ένα. Ο πίνακας 2 (table2) είναι σε μορφή excel και λαμβάνω το αρχείο καθημερινά. Δεν μπορώ να το συγχωνεύσω καθώς οι στήλες είναι τελείως διαφορετικές. Γι αυτό και το κρατάω χώρια. Ο κώδικας ενημερώνει τον πρώτο πίνακα.Αυτό που παρατήρησα είναι πως ενώ κάνει σωστά την αντιστοίχιση των VoucherΙd δεν τσεκάρει την νομισματική μονάδα. π.χ. στο ποσό του πίνακα 2, άλλαξα το ποσό που αντιστοιχεί στο ίδιο voucher και το έκανε update ως True (μου τσέκαρε τον πίνακα ενώ δεν θα έπρεπε). Τί γίνεται στην περίπτωση που θα έχω αναντιστοιχία στα ποσά; Δεν κατάλαβα απόλυτα την fDate! Γιατί θα πρέπει να δίνω ημερομηνία; Δεν φτάνει το BETWEEN; Μπορείς να με διαφωτίσεις σε αυτό. Κάτι έχεις σκεφτεί, είμαι σίγουρος. Τί λες; Βασίλης |
#4
| |||
| |||
Βασίλη, το ερώτημα ψάχνει για κάθε εγγραφή του πίνακα Table1 να βρει μια εγγραφή του πίνακα Table2, που να έχει ίδια τιμή στα αντίστοιχα πεδία VoucherID και Deposit. Εφόσον βρεθεί τέτοια η εγγραφή στο πίνακα Table2, αν η ημερομηνία (Table2.fDate) στην εγγραφή είναι μεταξύ των ημερομηνιών που θέλουμε και το πεδίο Table2.Status έχει τιμή False, γίνεται η ενημέρωση. Αυτό ήταν το ζητούμενο. Επειδή το πεδίο Date έχει όνομα ίδιο με τη συνάρτηση Date ενδέχεται να υπάρξει πρόβλημα γι’ αυτό το άλλαξα σε fDate. Θα πρέπει να αλλάξεις στον πίνακα Table2 το όνομα του πεδίου από Date σε fDate |
#5
| |||
| |||
Γιώργο σε ευχαριστώ για τις διευκρινίσεις. Κατά τα τεσταρίσματα παρατήρησα τα εξής. Στο table2 εάν προσπαθήσω να εισάγω ένα voucher που δεν υπάρχει στο table1, δεν με αφήνει να το εισάγω, επειδή δεν υπάρχει αντιστοίχιση στο table1. Στην περίπτωση που δεν έχει καταχωρηθεί στο table1 το συγκεκριμένο voucher αλλά υπάρχει στο table2 υπάρχει πρόβλημα. Τί θα γίνει σε περίπτωση που ξεχαστεί να περαστεί κάποιο voucher στο table1 αλλά η κούριερ μου το περιλαμβάνει στο table2? Τί κάνω εκεί ρε Γιώργο; Ο κώδικας είναι σούπερ. Τα σπάει. |
#6
| |||
| |||
Αυτή η συμπεριφορά οφείλεται στη σχεδίαση της ΒΔ. Θα σε συμβούλευα να μελετήσεις το παρακάτω άρθρο: https://support.office.com/el-gr/art...4-bd4f9c9ca1f5 και να ξαναδείς τη σχεδίαση. |
#7
| |||
| |||
Ευχαριστώ Γιώργο. Θα το μελετήσω αμέσως. |
#8
| |||
| |||
Καλημέρα Λαμβάνω το ακόλουθο μήνυμα... "Δεν είναι δυνατή η προσθήκη ή η αλλαγή εγγραφής γιατί απαιτείται σχετική εγγραφή στον πίνακα Table1" Προσπαθώ να περάσεω τις νέες εγγραφές στον Table2 αλλά δεν με αφήνει. Προσπαθώ να καταλάβω γιατί. Καμιά ιδέα; |
#9
| |||
| |||
Καλημέρα Η σχέση που υπάρχει ανάμεσα στους πίνακες, δεν επιτρέπει να δημιουργήσουμε στο πίνακα Table2 κάποια εγγραφή, εάν δεν υπάρχει εγγραφή στον πίνακα Table1, με την ίδια τιμή στο πεδίο σύνδεσης. Η σωστή σχεδίαση της ΒΔ είναι βασική εργασία και δεν μπορεί να γίνει χωρίς κάποια υποδομή γνώσεων. Για το λόγο αυτό, στο προηγούμενο μήνυμα, σου πρότεινα να μελετήσεις το σχετικό άρθρο. Φιλικά/Γιώργος |
#10
| |||
| |||
Γιώργο απόλυτα κατανοητό αυτό που αναφέρεις. Διάβασα πολύ προσεκτικά το άρθρο για το σχεδιασμό της ΒΔ. Οι εγγραφές στον πίνακα 1 δεν ακολουθούν τις εγγραφές στον πίνακα 2 ή και το αντίθετο, διότι οι εγγραφές στον πίνακα 1 τηρούνται κανονικά. Αυτό δεν σημαίνει πως γίνεται και στον πίνακα 2, καθώς έχει να κάνει με εξωτερικό παράγοντα. Γι αυτό και θέλω να κάνω την αντιστοίχιση ώστε να τσεκάρω ποιές εγγραφές από τον πίνακα 1 δεν έχουν γίνει από τον πελάτη. Ο πίνακας 1 αντιπροσωπεύει την καταχώρηση των αποστολών μου. Ο πίνακας 2 αντιπροσωπεύει την πληρωμή των αποστολών μου. Οι εγγραφές στον πίνακα 2 γίνονται πολλές μέρες αργότερα λόγω καθυστέρησης των πληρωμών. Εισάγω τις πληρωμές από το excel στο access για να γίνει το τσεκάρισμα αυτόματα. Ειδάλλως θα πρέπει ημερησίως να κάνω εκατοντάδες εγγραφές τσεκάρισμα μια-μια. Πως μπορώ πλέον να λύσω αυτό το πρόβλημα Γιώργο; θα μπορούσα να καταργήσω τα πρωτεύοντα κλειδιά; εκεί δεν δημιουργείται πρόβλημα; η σχέση που έχουν τώρα οι 2 πίνακες είναι id=id. Πως θα μπορούσα να συνεχίσω το τσεκάρισμα; Σε ευχαριστώ εκ των προτέρων. Βασίλης |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
Αντιστοίχιση επιλογης συνθ. πλαισιου με κειμενο αλλου πινακα | iliast | Access - Ερωτήσεις / Απαντήσεις | 13 | 13-02-16 18:25 |
[ Φόρμες ] Αυτόματη ημερομηνία ή τσεκάρισμα σε κουμπί | Νιόνιος | Access - Ερωτήσεις / Απαντήσεις | 0 | 29-05-13 12:46 |
[Excel07] Αντιστοίχιση ημερομηνιών με ημέρες | Celicamomo | Excel - Ερωτήσεις / Απαντήσεις | 5 | 09-01-12 00:02 |
[Συναρτήσεις] Αντιστοίχιση περιγραφής με κωδικό. | gr8styl | Excel - Ερωτήσεις / Απαντήσεις | 7 | 16-07-11 21:27 |
[Γενικά] Αντιστοίχιση κελιών | Iceland | Excel - Ερωτήσεις / Απαντήσεις | 4 | 22-08-10 17:26 |
Η ώρα είναι 09:48.