Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
Αυτόματη συμπλήρωση εγγραφών
Καλησπέρα σε όλους, και χρόνια πολλά στους Δημήτρηδες. Έχω σε ένα πίνακα τα εξής πεδία: Ημ/νία Έναρξης - Ημ/νία Λήξης - Χρονική περίοδος 01/01/2011 - 31/08/2011 - 2(μήνες) θα ήθελα λοιπόν να δημιουργήσω ένα ερώτημα που να μου δημιουργεί καινούργιες εγγραφές στα πεδία Από & Έως. Πρώτη εγγραφή να δίνεται ανάλογα με την Ημερομηνία Έναρξης και τελευταία ανάλογα με την Ημερομηνία Λήξης σύμφωνα με την Χρονική Περίοδο Δηλαδή. Από - Έως 01/01/2011 - 28/02/2011 01/03/2011 - 30/04/2011 01/05/2011 - 30/06/2011 01/07/2011 - 31/08/2011 Ευχαριστώ εκ των προτέρων, Μάρω Τελευταία επεξεργασία από το χρήστη mdragon : 26-10-11 στις 14:58. |
#2
| |||
| |||
Μάρω, καλησπέρα! Στη ΒΔ, που επισυνάπτω, προσπάθησα να προσεγγίσω το ζητούμενο. Αποτελείται: 1. Από τον πίνακα «Periods» στον οποίο αποθηκεύονται οι περίοδοι (πεδία Από, Έως). 2. Τη φόρμα «frmRunSQL», που χρησιμοποιείται για την καταχώρηση των στοιχείων ορισμού των χρονικών περιόδων και την εκτέλεση του αναγκαίου κώδικα. Ο κώδικας που δημιουργεί και αποθηκεύει τις χρονικές περιόδους είναι ο εξής: Κώδικας: Private Sub cmdRunSQL_Click() Dim strSQL As String, startDate As Date, endDate As Date If IsDate(Me.txtEnd) And IsDate(Me.txtStart) Then If Me.txtEnd <= Me.txtStart Then Exit Sub startDate = Me.txtStart Do endDate = DateAdd("m", Me.txtPeriod, startDate) - 1 If endDate > Me.txtEnd Then endDate = Me.txtEnd strSQL = "INSERT INTO Periods ( Από, Έως ) Values(#" & _ Format(startDate, "m/d/yyyy") & "#, #" & Format(endDate, "m/d/yyyy") & "# );" CurrentDb.Execute strSQL startDate = endDate + 1 Loop Until endDate >= Me.txtEnd End If End Sub Φιλικά/Γιώργος |
#3
| |||
| |||
Καλημέρα, Γιώργο σε ευχαριστώ για την βοήθεια. Μου προέκυψαν όμως κι άλλες απορίες. Τι γίνεται στην περίπτωση που εκτός από ημερομηνίες θέλω να μεταφέρω και αριθμούς ή κείμενα??? Και πως γίνεται να προστατέψω τα δεδομένα μου στην περίπτωση που τα έχω αντιγράψει ήδη μια φορά να μην ξαναμεταφέρονται???? Φιλικά, Μάρω |
#4
| |||
| |||
Μάρω, Καλημέρα 1. Όπως μεταφέρονται ημερομηνίες θα μπορούσαν να μεταφερθούν κείμενα και αριθμοί. Υπάρχει όμως ένα πρόβλημα. Αν υποθέσουμε ότι έχουμε ένα πίνακα «Πηγή» με πεδία «Ημερομηνία Έναρξης», «Ημερομηνία Λήξης», «Κείμενο», «Αριθμός». Η εγγραφή του: 1/1/2011, 31/8/2011, 2, «Πατάτες», 100, σύμφωνα με το ζητούμενο, θα δημιουργήσει 4 εγγραφές στον πίνακα «Προορισμός». Τι τιμές θα έχουν οι εγγραφές αυτές στα αντίστοιχα πεδία των «Κείμενο» και «Αριθμός»; 2. Για να μη ξαναμεταφερθούν τα δεδομένα μπορούν να ληφθούν κάποια μέτρα, όπως: 2α. Αν τα πεδία του πίνακα «Προορισμός» έχουν μοναδικές τιμές θα μπορούσαμε να ορίσουμε ευρετήρια, που δε θα επιτρέπουν διπλότυπες τιμές. 2β. Να ορίσουμε ένα πεδίο τύπου «Ναι/Όχι» στον πίνακα «Πηγή», που να τσεκάρεται όταν η εγγραφή έχει μεταφερθεί. Μάρω, έχω τη γνώμη, ότι θα πρέπει να ξεκαθαρίσεις καλύτερα το ζητούμενο ανεβάζοντας και ένα δείγμα ΒΔ. Φιλικά/Γιώργος |
#5
| |||
| |||
Γιώργο καλημέρα, Επειδή τον πίνακα <<Προορισμό>> τον έχω βάλει σαν δευτερεύουσα φόρμα, όταν ενημερώνονται οι ημερομηνίες δεν ενημερώνονται οι Σύνδεσμοι πρωτευόντων πεδίων. Κάθε γνώμη δεκτή Το σκέφτηκα να χρησιμοποιήσω μοναδικές τιμές αλλά δεν γίνεται. Άρα καταλήγουμε σε αυτό: Παράθεση:
Φιλικά, Μάρω |
#6
| |||
| |||
Μάρω, Καλησπέρα! Έκανα κάποιες τροποποιήσεις στη σχεδίαση της βάσης σου: 1. Πρόσθεσα στον πίνακα «PROMITHEIES» το εξωτερικό κλειδί «idEgguitikis» και έτσι η σύνδεση με τον πίνακα «EGGYHTIKES» γίνεται με το πεδίο αυτό, που είναι σίγουρα μοναδικό στον πίνακα «EGGYHTIKES». 2. Πρόσθεσα στον πίνακα «EGGYHTIKES» το πεδίο «Moved», τύπου Ναι/Όχι. Έτσι αν είναι τσεκαρισμένο έχουν μεταφερθεί τα στοιχεία. 3. Η σύνδεση της δευτερεύουσας φόρμας με την κύρια γίνεται με το πεδίο «idEgguitikis». 4. Αν και κάποια στοιχεία υπάρχουν στον κύριο πίνακα (Axiografa, MiniaiaPeriodos, κλπ), οπότε θα μπορούσαν να ληφθούν από κει (πχ με ερώτημα), επειδή τα έχεις και στις «PROMITHEIES» τα μεταφέρω και εκεί. 5. Τροποποίησα τον κώδικα, ώστε τα στοιχεία όλων των εγγραφών , που δεν είναι τσεκαρισμένες, να περνούν στον πίνακα «PROMITHEIES» και να εμφανίζονται στη δευτερεύσουσα φόρμα. Μάρω, δοκίμασε τη ΒΔ που επισυνάπτω καλύτερα και, αν υπάρχει κάποιο πρόβλημα, εδώ είμαστε. Φιλικά/Γιώργος |
#7
| |||
| |||
Γιώργο μου για άλλη μια φορά σε ευχαριστώ. Θα μελετήσω την πρότασή σου και θα επανέλθω!!! Φιλικά, Μάρω |
#8
| |||
| |||
Μάρω, Καλησπέρα! 1. Επειδή σκέφτηκα, ένα πιο απλό και περισσότερο ασφαλή τρόπο, για να μη μεταφέρονται δεδομένα που ήδη έχουν μεταφερθεί, τον υλοποίησα στη ΒΔ που επισυνάπτω. Ο τρόπος αυτός βασίζεται στο ότι κάθε εγγυητική επιστολή χαρακτηρίζεται από τον κωδικό της (idEgguitikis), οπότε αν αυτός υπάρχει στον πίνακα «PROMITHEIES» σημαίνει ότι η εγγραφή έχει μεταφερθεί και αντίστροφα. Για την υλοποίηση της μεθόδου πρόσθεσα ένα ερώτημα «qryNoMoved» το οποίο εμφανίζει τις εγγραφές, που δεν έχουν μεταφερθεί και με βάση αυτό γίνεται η μεταφορά με τον κώδικα. 2. Επειδή, σύμφωνα με τις αρχές σχεδιασμού των βάσεων δεδομένων, δεν είναι σωστό τα ίδια δεδομένα να αποθηκεύονται σε πολλούς πίνακες, αφαίρεσα από τον πίνακα «PROMITHEIES» τα πεδία «Axiografa» και «MiniaiaPeriodos». Δεν ξέρω τι αποθηκεύει το πεδία «Promitheia». Αν είναι υπολογιζόμενο θα πρέπει να αφαιρεθεί. Επίσης δεν είναι γνωστό τι αποθηκεύει το πεδίο «Poso». Αν είναι το ποσό της εγγυητικής θα πρέπει να μεταφερθεί στον πίνακα «EGGUITIKES». Ίσως να χρειαζόταν να προστεθεί η ημερομηνία πληρωμής και το καταβληθέν ποσό και να αφαιρεθεί το πεδίο τύπου Ναι/Όχι «Pliromi». 3. Βλέποντας τις σχέσεις στη βάση σου παρατήρησα ότι ενώ ορίζεις πρωτεύοντα κλειδιά στους πίνακες, στις σχέσεις χρησιμοποιείς άλλα πεδία πχ (kodErgu, KodTrp, KodKentru, κλπ). Αν τα πεδία αυτά έχουν μοναδικές τιμές, θα πρέπει να διαγραφούν τα πρωτεύοντα (αυτόματη αρίθμηση) και να οριστούν αυτά ως πρωτεύοντα. Σε κάθε περίπτωση στις σχέσεις πρέπει να χρησιμοποιείται το πρωτεύον κλειδί του κύριου πίνακα και το αντίστοιχο ξένο (εξωτερικό) του δευτερεύοντα (πίνακα στην πλευρά των πολλών). 4. Δεν ξέρω λεπτομέρειες για τις εγγυητικές επιστολές, τα αξιόγραφα και τις προμήθειες. Έτσι δεν μπόρεσα να αντιληφθώ αν τα κέντρα κόστους ταυτίζονται με τις τράπεζες, τι εκφράζουν τα ποσοστά, πως υπολογίζεται η προμήθεια, κλπ . Στη ΒΔ πρόσθεσα ένα ερώτημα «Promithies2» παρόμοιο με το «Promithies», που βρίσκει το ποσοστό χρησιμοποιώντας τη συνάρτηση «MesoPososto», που δημιούργησα με VBA. Στη συνάρτηση υποθέτω ότι τα ποσοστά (προμήθειας;) για κάθε κέντρο κόστους ισχύουν από την ημερομηνία καθιέρωσης μέχρι την προηγούμενη μέρα της ημερομηνίας ορισμού νέου. Έτσι ,αν μέσα στο διάστημα [Από, Έως], έχουμε πολλές μεταβολές του ποσοστού η συνάρτηση «MesoPososto» επιστρέφει ένα μέσο. Μάρω μου, ελπίζω να μη σε μπερδεύω. Δες τις παραπάνω ιδέες με την άνεσή σου. Σε κάθε περίπτωση εσύ γνωρίζεις καλύτερα το θέμα και εσύ αποφασίζεις. Φιλικά/Γιώργος |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[Συναρτήσεις] Αυτόματη συμπλήρωση κελιού | Παναγιώτης Χρ | Excel - Ερωτήσεις / Απαντήσεις | 0 | 25-03-16 14:38 |
[ Φόρμες ] αυτοματη συμπληρωση φορμας | shamano1982 | Access - Ερωτήσεις / Απαντήσεις | 7 | 24-03-16 08:20 |
[ Φόρμες ] αυτόματη συμπλήρωση | eparast | Access - Ερωτήσεις / Απαντήσεις | 0 | 04-04-14 00:19 |
[Excel07] Αυτόματη Συμπλήρωση ΑΦΜ | ippotis | Excel - Ερωτήσεις / Απαντήσεις | 2 | 10-02-11 21:14 |
Αυτόματη συμπλήρωση πεδίου | PanosPan | Access - Ερωτήσεις / Απαντήσεις | 6 | 16-02-10 23:44 |
Η ώρα είναι 09:40.