| Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
![]() |
| | Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
| |
|
#1
| |||
| |||
|
Γεια σε όλους τους συνομιλητές του θέματος, Αν και δεν έχω καμία σχέση με διαχείριση αδειών, παρακολουθώ το θέμα από ενδιαφέρον. Αγαπητέ Χρήστο (Free_Ghost) στο τελευταίο σου μήνυμα διατυπώνεις τους κανόνες του μοντέλου. Παράθεση:
Πως είναι οι κανόνες για τη βάρδια; Επιπλέον έχω τις ακόλουθες ερωτήσεις:
Πίνακας Ρυθμίσεις Προσωπικού : «μητρώο», «από», «έως», «ημερήσιος/βάρδια», «δικαιούται(μέρες)»; Έτσι θα μπορούσες για τον ίδιο αριθμό μητρώου να διατυπώνεις περισσότερα χρονικά διαστήματα (από/έως), για τα οποία κάθε φορά μπορείς ρυθμίσεις τυχόν αλλαγές στις δυο τελευταίες στήλες. Για να είναι α βάση δεδομένων ανεξάρτητη ως προς τη χρονιά, οι στήλες (από/ έως) θα πρέπει να είναι τύπου DateTime. Όταν αναφέρεσαι π.χ. για ολόκληρο το 2010, τότε βάζεις από:1/1/2010 έως:31/12/2010.Όμως δε σε εμποδίζει τίποτα να θέσεις και από:1/6/2010 έως:1/2/2011 !! Μια ιδέα είναι. Φιλικά Ανδρέας |
|
#2
| |||
| |||
|
Καλησπέρα στην παρέα Χρήστο, αν κατάλαβα καλά, θα ήθελες μία συνάρτηση που θα υπολογίζει τις μέρες των ημιαργιών, που δε θα μετρούν σα μέρες κανονικής άδειας. Αν υποθέσουμε ότι ένας εργαζόμενος απουσιάζει, λόγω κανονικής άδειας, από την ημερομηνία D1 μέχρι τη D2, συμπεριλαμβανομένων, για τον υπολογισμό των ημερών που θα χρεωθούν ως κανονική άδεια θα έχουμε:
Κώδικας: Public Function ArgiesApoHmiargies(D1 As Variant, _
D2 As Variant) As Integer
Dim dte(3) As Date
Dim i As Integer, x As Integer
'Αν υπάρχουν τιμές null
If IsNull(D1) Or IsNull(D2) Then Exit Function
'Αρχική τιμή συνάρτησης
ArgiesApoHmiargies= 0
'Ημερομηνίες ημιαργιών. Αν τα έτη έναρξης και λήξης της απουσίας
'δεν είναι ίδια (πχ 2010, 2011) και στο διάστημα απουσίας που εμπίπτει
'στο μεγαλύτερο έτος (2011) υπάρχουν ημιαργίες τα αποτελέσματα δεν είναι
'σωστά. Την περίπτωση αυτή, για τις κανονικές αδειες, τη θεώρησα αδύνατη.
dte(0) = DateSerial(Year(D1), 3, 24)
dte(1) = DateSerial(Year(D1), 10, 27)
dte(2) = DateSerial(Year(D1), 12, 24)
dte(3) = DateSerial(Year(D1), 12, 31)
'1. Η άδεια είναι μικρότερη από 3 μέρες
If D2 - D1 + 1 < 3 Then Exit Function
'2. Περιέχονται δύο ημιαργίες (περιλαμβάνονται και τα όρια του διαστήματος απουσίας)
x = 0
For i = 0 To 3
If D1 <= dte(i) And dte(i) <= D2 Then x = x + 1
Next
If x > 1 Then
ArgiesApoHmiargies= 1
Exit Function
End If
'3. Η ημιαργία περιέχεται στα όρια του διαστήματος της απουσίας (χωρίς να περιλαμβάνονται)
For i = 0 To 3
If D1 < dte(i) And dte(i) < D2 Then
ArgiesApoHmiargies= 1
Exit For
End If
Next
End Function
Φυσικά θα πρέπει να λάβεις υπόψη σου και τις εύστοχες επισημάνσεις του Ανδρέα. Φιλικά/Γιώργος ΥΓ Φίλε Ανδρέα καλωσόρισες στο φόρουμ . Τελευταία επεξεργασία από το χρήστη kapetang : 10-12-10 στις 16:53. Αιτία: διόρθωση ονόματος συνάρτησης σε ArgiesApoHmiargies |
|
#3
| |||||||||
| |||||||||
| Παράθεση:
Στην βάρδια δεν ισχύει τίποτα από όλα αυτά διότι κάθε μέρα άσχετα το τη είναι (Αργία ημιαργία, Κυριακή) την χρεώνεσαι.. (εάν ήταν όλοι βάρδια θα ήταν εύκολη περίπτωση ακόμη και για εμένα...) Παράθεση:
Παράθεση:
Παράθεση:
Δηλαδή δεν μπορεί να έχει αφήσει όλη του την άδεια για το τέλος.. Παράθεση:
Παράθεση:
Σε ένα απλό ερώτημα θέλω να μου εμφανίζει μια (Eκφρ1) εικονικό πεδίο το οποίο θέλω να παίρνει τιμή ανάλογα με το τη περιέχει το πεδίο ΑΛΦΑ… Π.χ. Eφόσον το πεδίο ΑΛΦΑ έχει τιμή Α τότε το εικονικό πεδίο να εμφανίζει την τιμή που έχει το πεδίο ΒΗΤΑ διαφορετικά να μου εμφανίζει την τιμή του πεδίου ΓΑΜΑ.. Η ακόμη και να μπεί Stop ανάλογα το υπόλοιπο της αδείας του, αλλά δυστυχώς οι γνώσεις μου δεν επαρκουν για κάτι τέτοιο.. Παράθεση:
Ακριβώς αυτό που λές Γιώργο.. Παράθεση:
Παράθεση:
…
|
|
#4
| |||
| |||
|
Αγαπτέ Χρήστο, έχεις τη δυνατότητα να ανοίξεις αρχεία PowerPoint; Ανδρέας |
|
#5
| |||
| |||
|
Καλησπέρα στην παρέα Χρήστο, στη ΒΔ που ανέβασες πρόσθεσα μία φόρμα στην οποία μπορείς να δοκιμάσεις τις συναρτήσεις. Συγκεκριμένα συμπληρώνεις την ημερομηνία έναρξης της απουσίας και την ημερομηνία τέλους και πατάς το «tab», για να πάρεις τα αποτελέσματα. Έτσι θα μπορέσεις να σχηματίσεις μια ιδέα για τον τρόπο που χρησιμοποιούνται οι συναρτήσεις και να τις δοκιμάσεις. Τα αποτελέσματα που θα πάρεις πολύ πιθανόν να μη είναι αυτά που ακριβώς θέλεις. Ο Τάσος έβαλε κάποιες αργίες που μπορεί στη επιχείρηση που δουλεύεις να μη είναι ή να είναι ημιαργίες. Επίσης τι γίνεται με τα Σάββατα. Τροποποίησα λίγο τον κώδικα για να μη λαμβάνονται υπόψη οι ημιαργίες όταν συμπίπτουν με Κυριακή. Τα παραπάνω αντιμετωπίζουν αποσπασματικά το πρόβλημά σου και απλά διευκολύνουν την κατανόησή του. Το βασικό είναι η σωστή δόμηση της βάσης, σύμφωνα και με τις επισημάνσεις του Ανδρέα. Φιλικά/Γιώργος |
|
#6
| |||
| |||
| Παράθεση:
Παράδειγμα : Eκφρ1: IIf([¨Όνομα Πίνακα]![ΑΛΦΑ]="Α";[Όνομα Πίνακα]![ ΒΗΤΑ];[ Όνομα Πίνακα]![ ΓΑΜΑ]) Όσο για το δεύτερο προβλημα το Stop θα μεγαλώσω που θα πάει... ![]() Υ.Γ._1 Γιώργο αυτό ακόμη δεν μπόρεσα να το ελέγξω μια και με προβληματίζει η επικόλληση και από την άλλη με παίδευε το πρόβλημα που ανέφερα παραπάνω αλλά το έλυσα.. Y.Γ._2 Φυσικά και μπορώ να τα ανοίξω Ανδρέα.. Τά λέμε αύριο φίλοι μου... Υ.Γ._3 Γιώργο ενώ έγραψα το μήνυμα μου, κατόπιν από πάνω ξεφύτρωσε το δικό σου το οποίο δεν είχα ειδή.. (συγγνώμη) αλλά Θα το ειδώ αύριο διότι ήπια και ένα μπουκαλάκι κρασί τώρα... |
|
#7
| |||
| |||
|
Καλημέρα σε όλους τους φίλους.. Γιώργο δούλεψα αρκετά το τέστ που εφάρμοσες και μου έβγαλε λάθος μόνο ένα σημείο .. Έβαλα άδεια από 22/09/2009 έως 28/09/2009 και μου εμφανίζει 3 ημέρες. Eδώ είναι ένα από τα παράλογα (που ακόμη και πολλοί συνάδελφοι δεν μπορούν να καταλάβουν) δεν υπάρχει περίπτωση η άδεια να τελειώνει 28/12/2009 .. Διότι εάν ξεκινάει 22/12/2009 και είναι 3 ημέρες το τέλος της θα συμπίπτει με την 24/12/2010 και αυτό διότι για να κερδίζει την ημιαργία είπαμε δεν πρέπει να αρχίζει και να τελειώνει σε αυτήν με 3 μέρες έχουμε λοιπόν 22,23,24 και τελείωσε… Εάν όμως ξεκινήσει 23 τότε κερδίζει 24 κατόπιν πάει 28 και 29… Δεδομένου πώς 25,26,27 είναι Κυριακή και αργία.. Λόγω αυτού του προβλήματος κατήργησα την μία καρτέλα του τάσου όπου έβαζες απο ημερομηνία και κατόπιν τον αριθμό των ημερών , τελικά μήπως ήταν προτιμότερο… Σε όλες τις άλλες περιπτώσεις δούλεψε σωστά. Τού λείπη η σύνδεση η πρέπει να εφαρμοστή στην κυρίως Φόρμα.. Τελικά μήπως θα διευκόλυνε η έκδοση με τις δύο καρτέλες του Τάσου.. Που έλεγς απο Ημερομηνία και τέλος Ημέρες.. Την Επισυνάπτω.. Υ.Γ. πάντως γιώργο ακόμη και με αυτό το μοναδικό λάθος προτιμώ την έκδοση σου απο την δικιά μου (Του Τάσου δηλαδή) αρκεί να δουλέψει απο την κυρίως φόρμα.. |
|
#8
| |||
| |||
|
Καλημέρα στην παρέα Χρήστο, γράφεις 22/9/2009 έως 28/9/2009, αλλά μάλλον εννοείς 22/12/2009 έως 28/12/2009. Το αποτέλεσμα που πήρες είναι σύμφωνο με τη λογική, που χρησιμοποίησα για τη δόμηση της συνάρτησης. Για το παράδειγμά σου είναι η εξής: Ο εργαζόμενος ζητάει από την υπηρεσία του να λείψει με κανονική άδεια από τις 22/12/2009 έως 28/12/2009 (συμπεριλαμβάνονται οι 22 και 28), δηλαδή για 7 μέρες.
Πιθανόν να θέλεις διαφορετικό τρόπο υπολογισμού. Υπάρχει και ένα ερώτημα τι γίνεται με τις ημιαργίες που μπορεί να συμπέσουν με Σάββατο ή Κυριακή; Φιλικά/Γιώργος |
|
#9
| |||
| |||
| Παράθεση:
Παράθεση:
Για αυτό είπα μήπως πρέπει να χρησιμοποιήσω την έκδοση όπου βάζεις ημερομηνία εκκίνησης και κατόπιν ημέρες.. Γιατί έτσι θα έβαζα 22/12/2009 – 3 ημέρες και θα το πήγαινε εώς 24/12/2009 Η θα έβαζα 22/12/2009 – 4 ημέρες και θα το πήγαινε εώς 29/12/2009 Παράθεση:
Υ.Γ. Υπάρχει κάτι μαζεμένο να διαβάσω για module και Συναρτήσεις, γιατι μου φαίνεται πώς είναι η καρδιά σε δύσκολες καταστάσεις.. |
|
#10
| |||
| |||
|
Καλησπέρα στην παρέα Χρήστο, το πρόβλημα των αδειών μπορεί να διατυπωθεί με δύο τρόπους: 1. Ο εργαζόμενος ζητάει να λείψει από την ημερομηνία D1 έως την D2, δηλαδή D2-D1+1 μέρες. Εδώ το ζητούμενο είναι ο προσδιορισμός των ημερών (M) που θα χρεωθούν ως κανονική άδεια (M=μέρες απουσίας - σαββατοκύριακα - αργίες - ημιαργίες). 2. Ο εργαζόμενος ζητάει να χρεωθεί (Μ) μέρες κανονική άδεια που θα αρχίσει από την ημερομηνία D1. Εδώ το ζητούμενο είναι ο προσδιορισμός της ημερομηνίας D2 που θα λήξει η απουσία του (D2=D1-1 + σαββατοκύριακα + αργίες + ημιαργίες). Από τα γραφόμενά σου κατάλαβα ότι η υπηρεσία σου (επιχείρηση) εφαρμόζει τον δεύτερο τρόπο. Στην περίπτωση αυτή θα πρέπει:
Πάντως, κατά τη γνώμη μου, προηγείται η γνώση της σωστής σχεδίασης της βάσης δεδομένων (πίνακες, πρωτεύοντα κλειδιά, σχέσεις, ευρετήρια), των ερωτημάτων, των φορμών και των εκθέσεων. Για να δεις κάπως τη σημασία τους επισυνάπτω ένα πρόχειρο δείγμα ΒΔ, το οποίο στηρίζεται στον πρώτο τρόπο χειρισμού των κανονικών αδειών, που μάλλον δεν είναι συμβατός με τον τρόπο χειρισμού των αδειών από την υπηρεσία σου. Φιλικά/Γιώργος |
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
| Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
| [Γενικά] Πρόγραμμα για Υπηρεσίες Στρατού | tasoslamprinos | Excel - Ερωτήσεις / Απαντήσεις | 2 | 10-11-15 11:57 |
| Προβολή access σαν εφαρμογή | teo1976 | Access - Ερωτήσεις / Απαντήσεις | 3 | 24-04-14 12:08 |
| Εφαρμογή (Ι) για όσους ξεκινούν Access & VBA | Meteora | Access - Ερωτήσεις / Απαντήσεις | 2 | 14-12-09 01:30 |
| Εφαρμογή Ημερολογίου σε Access | Ms-Office-Development Team | Access samples - Χρήσιμα αρχεία & παραδείγματα | 0 | 11-11-09 09:33 |
| Εφαρμογή Ημερολογίου σε Access | kon73 | Access - Ερωτήσεις / Απαντήσεις | 0 | 15-01-09 12:18 |
Η ώρα είναι 15:58.



…

Υβριδικός τρόπος

