Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > [ Ερωτήματα ] Αυτόματη συμπλήρωση εγγραφών

Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια!

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 26-10-11, 14:37
Όνομα: Μάρω
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 09-03-2010
Περιοχή: Αθήνα
Μηνύματα: 287
Προεπιλογή Αυτόματη συμπλήρωση εγγραφών

Καλησπέρα σε όλους, και χρόνια πολλά στους Δημήτρηδες.
Έχω σε ένα πίνακα τα εξής πεδία:
Ημ/νία Έναρξης - Ημ/νία Λήξης - Χρονική περίοδος
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  
Παλιά 26-10-11, 19:13
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Μάρω, καλησπέρα!

Στη ΒΔ, που επισυνάπτω, προσπάθησα να προσεγγίσω το ζητούμενο.
Αποτελείται:

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
Ελπίζω να είναι αυτό που ζητάς

Φιλικά/Γιώργος
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb CreatePeiod.mdb (244,0 KB, 51 εμφανίσεις)
Απάντηση με παράθεση
  #3  
Παλιά 27-10-11, 10:30
Όνομα: Μάρω
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 09-03-2010
Περιοχή: Αθήνα
Μηνύματα: 287
Προεπιλογή

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




Φιλικά,
Μάρω
Απάντηση με παράθεση
  #4  
Παλιά 27-10-11, 12:11
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Μάρω, Καλημέρα

1. Όπως μεταφέρονται ημερομηνίες θα μπορούσαν να μεταφερθούν κείμενα και αριθμοί.
Υπάρχει όμως ένα πρόβλημα.
Αν υποθέσουμε ότι έχουμε ένα πίνακα «Πηγή» με πεδία «Ημερομηνία Έναρξης», «Ημερομηνία Λήξης», «Κείμενο», «Αριθμός».

Η εγγραφή του: 1/1/2011, 31/8/2011, 2, «Πατάτες», 100, σύμφωνα με το ζητούμενο, θα δημιουργήσει 4 εγγραφές στον πίνακα «Προορισμός».
Τι τιμές θα έχουν οι εγγραφές αυτές στα αντίστοιχα πεδία των «Κείμενο» και «Αριθμός»;

2. Για να μη ξαναμεταφερθούν τα δεδομένα μπορούν να ληφθούν κάποια μέτρα, όπως:

2α. Αν τα πεδία του πίνακα «Προορισμός» έχουν μοναδικές τιμές θα μπορούσαμε να ορίσουμε ευρετήρια, που δε θα επιτρέπουν διπλότυπες τιμές.

2β. Να ορίσουμε ένα πεδίο τύπου «Ναι/Όχι» στον πίνακα «Πηγή», που να τσεκάρεται όταν η εγγραφή έχει μεταφερθεί.

Μάρω, έχω τη γνώμη, ότι θα πρέπει να ξεκαθαρίσεις καλύτερα το ζητούμενο ανεβάζοντας και ένα δείγμα ΒΔ.

Φιλικά/Γιώργος
Απάντηση με παράθεση
  #5  
Παλιά 27-10-11, 12:56
Όνομα: Μάρω
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 09-03-2010
Περιοχή: Αθήνα
Μηνύματα: 287
Προεπιλογή

Γιώργο καλημέρα,
Επειδή τον πίνακα <<Προορισμό>> τον έχω βάλει σαν δευτερεύουσα φόρμα, όταν ενημερώνονται οι ημερομηνίες δεν ενημερώνονται οι Σύνδεσμοι πρωτευόντων πεδίων.
Κάθε γνώμη δεκτή

Το σκέφτηκα να χρησιμοποιήσω μοναδικές τιμές αλλά δεν γίνεται. Άρα καταλήγουμε σε αυτό:
Παράθεση:
2β. Να ορίσουμε ένα πεδίο τύπου «Ναι/Όχι» στον πίνακα «Πηγή», που να τσεκάρεται όταν η εγγραφή έχει μεταφερθεί.

Φιλικά,
Μάρω
Συνημμένα Αρχεία
Τύπος Αρχείου: zip Συμπλήρωση εγγραφών.zip (419,1 KB, 33 εμφανίσεις)
Απάντηση με παράθεση
  #6  
Παλιά 27-10-11, 19:17
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Μάρω, Καλησπέρα!

Έκανα κάποιες τροποποιήσεις στη σχεδίαση της βάσης σου:

1. Πρόσθεσα στον πίνακα «PROMITHEIES» το εξωτερικό κλειδί «idEgguitikis» και έτσι η σύνδεση με τον πίνακα «EGGYHTIKES» γίνεται με το πεδίο αυτό, που είναι σίγουρα μοναδικό στον πίνακα «EGGYHTIKES».

2. Πρόσθεσα στον πίνακα «EGGYHTIKES» το πεδίο «Moved», τύπου Ναι/Όχι.
Έτσι αν είναι τσεκαρισμένο έχουν μεταφερθεί τα στοιχεία.

3. Η σύνδεση της δευτερεύουσας φόρμας με την κύρια γίνεται με το πεδίο «idEgguitikis».

4. Αν και κάποια στοιχεία υπάρχουν στον κύριο πίνακα (Axiografa, MiniaiaPeriodos, κλπ), οπότε θα μπορούσαν να ληφθούν από κει (πχ με ερώτημα), επειδή τα έχεις και στις «PROMITHEIES» τα μεταφέρω και εκεί.

5. Τροποποίησα τον κώδικα, ώστε τα στοιχεία όλων των εγγραφών , που δεν είναι τσεκαρισμένες, να περνούν στον πίνακα «PROMITHEIES» και να εμφανίζονται στη δευτερεύσουσα φόρμα.

Μάρω, δοκίμασε τη ΒΔ που επισυνάπτω καλύτερα και, αν υπάρχει κάποιο πρόβλημα, εδώ είμαστε.

Φιλικά/Γιώργος
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb Συμπλήρωση εγγραφών2.mdb (740,0 KB, 50 εμφανίσεις)
Απάντηση με παράθεση
  #7  
Παλιά 29-10-11, 16:03
Όνομα: Μάρω
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 09-03-2010
Περιοχή: Αθήνα
Μηνύματα: 287
Προεπιλογή

Γιώργο μου για άλλη μια φορά σε ευχαριστώ.
Θα μελετήσω την πρότασή σου και θα επανέλθω!!!




Φιλικά,
Μάρω
Απάντηση με παράθεση
  #8  
Παλιά 29-10-11, 19:08
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Μάρω, Καλησπέρα!

1. Επειδή σκέφτηκα, ένα πιο απλό και περισσότερο ασφαλή τρόπο, για να μη μεταφέρονται δεδομένα που ήδη έχουν μεταφερθεί, τον υλοποίησα στη ΒΔ που επισυνάπτω.
Ο τρόπος αυτός βασίζεται στο ότι κάθε εγγυητική επιστολή χαρακτηρίζεται από τον κωδικό της (idEgguitikis), οπότε αν αυτός υπάρχει στον πίνακα «PROMITHEIES» σημαίνει ότι η εγγραφή έχει μεταφερθεί και αντίστροφα.

Για την υλοποίηση της μεθόδου πρόσθεσα ένα ερώτημα «qryNoMoved» το οποίο εμφανίζει τις εγγραφές, που δεν έχουν μεταφερθεί και με βάση αυτό γίνεται η μεταφορά με τον κώδικα.

2. Επειδή, σύμφωνα με τις αρχές σχεδιασμού των βάσεων δεδομένων, δεν είναι σωστό τα ίδια δεδομένα να αποθηκεύονται σε πολλούς πίνακες, αφαίρεσα από τον πίνακα «PROMITHEIES» τα πεδία «Axiografa» και «MiniaiaPeriodos».

Δεν ξέρω τι αποθηκεύει το πεδία «Promitheia». Αν είναι υπολογιζόμενο θα πρέπει να αφαιρεθεί.
Επίσης δεν είναι γνωστό τι αποθηκεύει το πεδίο «Poso». Αν είναι το ποσό της εγγυητικής θα πρέπει να μεταφερθεί στον πίνακα «EGGUITIKES».

Ίσως να χρειαζόταν να προστεθεί η ημερομηνία πληρωμής και το καταβληθέν ποσό και να αφαιρεθεί το πεδίο τύπου Ναι/Όχι «Pliromi».

3. Βλέποντας τις σχέσεις στη βάση σου παρατήρησα ότι ενώ ορίζεις πρωτεύοντα κλειδιά στους πίνακες, στις σχέσεις χρησιμοποιείς άλλα πεδία πχ (kodErgu, KodTrp, KodKentru, κλπ).
Αν τα πεδία αυτά έχουν μοναδικές τιμές, θα πρέπει να διαγραφούν τα πρωτεύοντα (αυτόματη αρίθμηση) και να οριστούν αυτά ως πρωτεύοντα.

Σε κάθε περίπτωση στις σχέσεις πρέπει να χρησιμοποιείται το πρωτεύον κλειδί του κύριου πίνακα και το αντίστοιχο ξένο (εξωτερικό) του δευτερεύοντα (πίνακα στην πλευρά των πολλών).

4. Δεν ξέρω λεπτομέρειες για τις εγγυητικές επιστολές, τα αξιόγραφα και τις προμήθειες.
Έτσι δεν μπόρεσα να αντιληφθώ αν τα κέντρα κόστους ταυτίζονται με τις τράπεζες, τι εκφράζουν τα ποσοστά, πως υπολογίζεται η προμήθεια, κλπ .

Στη ΒΔ πρόσθεσα ένα ερώτημα «Promithies2» παρόμοιο με το «Promithies», που βρίσκει το ποσοστό χρησιμοποιώντας τη συνάρτηση «MesoPososto», που δημιούργησα με VBA.
Στη συνάρτηση υποθέτω ότι τα ποσοστά (προμήθειας;) για κάθε κέντρο κόστους ισχύουν από την ημερομηνία καθιέρωσης μέχρι την προηγούμενη μέρα της ημερομηνίας ορισμού νέου.
Έτσι ,αν μέσα στο διάστημα [Από, Έως], έχουμε πολλές μεταβολές του ποσοστού η συνάρτηση «MesoPososto» επιστρέφει ένα μέσο.

Μάρω μου, ελπίζω να μη σε μπερδεύω.
Δες τις παραπάνω ιδέες με την άνεσή σου. Σε κάθε περίπτωση εσύ γνωρίζεις καλύτερα το θέμα και εσύ αποφασίζεις.

Φιλικά/Γιώργος
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb Συμπλήρωση εγγραφών3.mdb (864,0 KB, 71 εμφανίσεις)
Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός 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.