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

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 21-07-21, 11:12
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 21-07-2021
Μηνύματα: 3
Προεπιλογή Δημιουργία εφαρμογής πρωτοκόλλου

Καλημέρα σε όλους, καλό καλοκαίρι, καλές διακοπές, με υγεία, ευτυχία, ευημερία.

Είμαι στη διαδικασία δημιουργίας μίας εφαρμογής πρωτοκόλλου σε Access. Η εφαμοργή κρατά αύξοντες αριθμούς πρωτοκόλλου, μοναδικούς για κάθε τμήμα, οι οποίοι αριθμοί, ξεκινάνε κάθε νέα χρονιά από ένα.

Η εφαμοργή θα είναι σε ένα περιβάλλον 10-15 χρηστών.

Έχω σκεφτεί 3 τρόπους για να αντλώ τον επόμενο διαθέσιμο αριθμό πρωτοκόλλου ανά τμήμα, οι οποίοι είναι οι κάτωθι:

1) Χρήση της Dmax συνάρτησης. Η ερώτησή μου είναι η εξής σε αυτόν τον τρόπο. Υπάρχει ενδεχόμενο, για χιλιοστά των δευτερολέπτων να επιστρέψει ίδια τιμή η Dmax για 2 διαφορετικούς χρήστες, οπότε να χτυπήσει run-time error? Η σύνταξη της Dmax που σκέφτομαι είναι η ακόλουθη: =DMax("[RefNumber]", "ReferenceT", "[DepID] = (κωδικός τμήματος ανάλογα για ποιο τμήμα ψάχνουμε τον αριθμό πρωτοκόλλου'")+1

2) Χρήση πίνακα που να κρατά τα IDs των τμημάτων, τον τρέχοντα αριθμό πρωτοκόλλου και το τρέχον έτος. Όταν κάποιος χρήστης ζητά αριθμό πρωτοκόλλου για το αντίστοιχο τμήμα, θα γίνεται κλείδωμα της αντίστοιχης εγγραφής του πίνακα, θα ελέγχεται το έτος (αν έχει αλλάξει η χρονιά ο αριθμός γίνεται 1 και αυτόματα ο πίνακας κρατά το νέο έτος αλλιώς ο αριθμός θα αυξάνεται κατά 1) και θα απελευθερώνεται η εγγραφή). Σε αυτό το τρόπο έχουμε έναν έξτρα πίνακα

3) Με χρήση select query όπου θα επιστρέφει τον μέγιστο αριθμό πρωτοκόλλου και το έτος για το Χ τμήμα, σε ένα recordset όπου πάλι θα αυξάνεται κατά ένα ο αριθμός, εκτός και αν έχει αλλάξει το έτος οπότε ο αριθμός ξεκινά από ένα.Το recordset θα κλειδώνει με Pessimistic τύπο κλειδώματος


Ποιος κατά τη γνώμη σας, είναι ο καλύτερος τρόπος για να αποδίδω τον επόμενο διαθέσιμο αριθμό πρωτοκόλλου σε ένα έγγραφο, σε multiuser περιβάλλον και να αποφεύγονται πιθανές διπλές τιμές;
Ευχαριστώ εκ των προτέρων. Και πάλι, καλές διακοπές σε όλους
Απάντηση με παράθεση
  #2  
Παλιά 25-07-21, 21:07
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 08-12-2020
Μηνύματα: 153
Προεπιλογή

To 2o έχει χρησιμοποιηθεί κατά κόρον απο επαγγελματική επιπέδου εφαρμογή...Απο εκεί και πέρα κάθε λύση είναι αποδεκτή εφόσον δουλεύει οπως θες
Απάντηση με παράθεση
  #3  
Παλιά 26-07-21, 20:17
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 21-07-2021
Μηνύματα: 3
Προεπιλογή

Ναι, η αλήθεια είναι πως την έχω δει αυτή τη τεχνική. Πιστεύω σε JET-ACE, θα δουλέψει μια χαρά. Μελλοντικά πιστεύεις πως αυτός ο τρόπος είναι ο ιδανικότερος, σε περίπτωση που η βάση μεταφερθεί σε κάποιο άλλο RDBMS πχ SQL Server; Ή μπορεί π.χ. να γίνει η όλη διαδικασία μέσω κάποιας Stored Procedure για παράδειγμα

Τελευταία επεξεργασία από το χρήστη niktsol : 26-07-21 στις 21:10.
Απάντηση με παράθεση
  #4  
Παλιά 27-07-21, 08:53
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 08-12-2020
Μηνύματα: 153
Προεπιλογή

Όπως έγραψα...όλα θα δουλέψουν..με τα συν τους και τα πλην τους.
Άμα ανησυχείς ότι κάποια στιγμή κάτω απο καποιες συνθήκες κάτι θα πάει στραβά κάνε το σύστημα όσο πιο προσαρμόσιμο μπορείς...του τύπου ολα θα δουλεύουν
Κώδικας:
protocolNo = getProtocolNo()
Η function getProtocolNo μπορεί να είναι οποιαδήποτε απο τις 3 περιπτώσεις....ξεκινάς δοκιμάζεις/τεστάρεις και άν όχι απλώς αλλάζεις την υλοποίηση
Απάντηση με παράθεση
  #5  
Παλιά 27-07-21, 20:28
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 21-07-2021
Μηνύματα: 3
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από tsgiannis Εμφάνιση μηνυμάτων
Όπως έγραψα...όλα θα δουλέψουν..με τα συν τους και τα πλην τους.
Άμα ανησυχείς ότι κάποια στιγμή κάτω απο καποιες συνθήκες κάτι θα πάει στραβά κάνε το σύστημα όσο πιο προσαρμόσιμο μπορείς...του τύπου ολα θα δουλεύουν
Κώδικας:
protocolNo = getProtocolNo()
Η function getProtocolNo μπορεί να είναι οποιαδήποτε απο τις 3 περιπτώσεις....ξεκινάς δοκιμάζεις/τεστάρεις και άν όχι απλώς αλλάζεις την υλοποίηση

Θα δοκιμάσω και τις τρεις λύσεις. Ήδη φτιάχνω κάποια batch με εικονικά δεδομένα κάνοντας μια εξομοίωση με εισαγωγή σε multi user περιβάλλον. Είναι μία καλή λύση για πειραματισμό και δημιουργία ενός mini project στην αρχή, λόγω του έχω να ασχοληθώ με προγραμματισμό από την εποχή της Access Basic, (1997 έκδοση Access αν θυμάμαι καλά).

Ευχαριστώ πολύ για την ανταπόκρισή σου στο μήνυμά μου
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[Γενικά] Αρίθμηση πρωτοκόλλου nsrentzos Excel - Ερωτήσεις / Απαντήσεις 5 18-12-20 21:12
[Μορφοποίηση] Αριθμός πρωτοκόλλου - για δυνατούς λύτες tilestora Excel - Ερωτήσεις / Απαντήσεις 4 11-02-14 12:14
[ Ερωτήματα ] Αριθμός πρωτοκόλλου & έτος xristos Access - Ερωτήσεις / Απαντήσεις 2 14-01-12 19:17


Η ώρα είναι 21:49.