Η σελίδα μας αναβαθμίστηκε, γι' αυτό τον λόγο τα μέλη μας θα πρέπει να ζητήσουν νέο κωδικό πρόσβασης από την υπηρεσία "Αποστολή κωδικού πρόσβασης".
Εάν το email με τον νέο κωδικό δεν έρθει στο inbox κοιτάξτε και στο spam folder. Ο server είναι φρέσκος και δεν έχει το reputation που του αξίζει.

DLookUp

Συζητήσεις για την τοπική βάση δεδομένων Access της Microsoft

Συντονιστές: Super-Moderators, WebDev Moderators

Απάντηση
geodeb
Δημοσιεύσεις: 1
Εγγραφή: 08 Σεπ 2008 23:22

DLookUp

Δημοσίευση από geodeb » 08 Σεπ 2008 23:48

Γειά σας. Νέος εδώ, και θα ήθελα τα φώτα σας:

Φτιάχνω ένα πρόγραμμα για μισθοδοσία.

Έχω φτιάξει πίνακα με την κλίμακα του 2008 (ανάλογα με την προϋπηρεσία). Βάση του νόμου θα προστεθεί ένα % τον Σεπτέμβριο κι άλλο ένα το 2009.

Αν πχ βγάλω μισθό την 28/2/09, θέλω να υπολογίσει τον μισθό της κλίμακας + %Σεπτεμβρίου 2008, (το οποίο θα βγάλει ένα άθροισμα) και μετά τον προσαυξημένο μισθό +% Ιανουαρίου 2009.

Προσπάθησα με loop (for i = 1 to dcount.... 'μέτρησα πόσες προσαυξήσεις υπάρχουν τον Φεβρουάριο του 2002' και μέσα στο loop έβαλα Dlookup αλλά φυσικά βγάζει πάντα την πρώτη εγγραφή..

Θά'θελα δηλαδή σε κάθε loop να έβγαζε το % της i εγγραφής του πίνακα.

Ευχαριστώ.

Άβαταρ μέλους
kon73
Script Master
Δημοσιεύσεις: 224
Εγγραφή: 13 Απρ 2008 23:47
Επικοινωνία:

DLookUp

Δημοσίευση από kon73 » 10 Σεπ 2008 13:47

Φίλε μου Geodeb Σε καλωσορίζω στο Forum μας.
geodeb έγραψε:Φτιάχνω ένα πρόγραμμα για μισθοδοσία.
Έχω φτιάξει πίνακα με την κλίμακα του 2008 (ανάλογα με την προϋπηρεσία). Βάση του νόμου θα προστεθεί ένα % τον Σεπτέμβριο κι άλλο ένα το 2009.
Για τον εντοπισμό της κλίμακας ανάλογα με την προϋπηρεσία θα χρειαστείς την πληροφορία του υπαλλήλου που είναι ημερομηνία πρόσληψης και θα υπολογίζεται η διαφορά με το τέλος του μήνα που υπολογίζεται η μισθοδοσία. Δηλαδή : Υπάλληλος Α ημερομηνία πρόσληψης 10.02.06 και υπολογίζεις τον μήνα Αύγουστο επομένως θα χρησιμοποιήσεις την συνάρτηση datediff("m","10/02/06","31/08/2008") για να επιστρέψει τους μήνες ή αν είναι η προϋπηρεσία με έτη datediff("yyyy","10/02/06","31/08/08").

geodeb έγραψε:Αν πχ βγάλω μισθό την 28/2/09, θέλω να υπολογίσει τον μισθό της κλίμακας + %Σεπτεμβρίου 2008, (το οποίο θα βγάλει ένα άθροισμα) και μετά τον προσαυξημένο μισθό +% Ιανουαρίου 2009.
Αυτό που ζητάς εδώ είναι : Να υπολογίσει πχ μηνιάτικο 1.000 € αύξηση Σεπτεμβρίου 2,5 % δηλαδή 1025 € και αύξηση Ιανουαρίου 2,4 % = 24,60 € δηλαδή 1049,60 €.
Επομένως ένας Πίνακας με όνομα TblRise που θα έχει :
3 Πεδία : ID, RiseDate, PercRise
1, 01/09/2008, 2,5 %
2, 01/01/2009, 2,4 %
Μία συνθήκη η οποία θα ελέγχει αν η Ημερομηνία υπολογισμού είναι μεγαλύτερη του Σεπτεμβρίου και μικρότερη του 01/01/2009 τότε για να εξάγουμε την τιμή 1 που θέλουμε δίνουμε Dlookup("PercRise","TblRise","ID=1")
Ενώ αντίστοιχα για ημερομηνία μεγαλύτερη του 01/01/2009 υπολογίζεται ξανά ο παραπάνω κώδικας και δίνουμε και σ'αυτόν το Dlookup("PercRise",TblRise","ID=2")


geodeb έγραψε:Προσπάθησα με loop (for i = 1 to dcount.... 'μέτρησα πόσες προσαυξήσεις υπάρχουν τον Φεβρουάριο του 2002' και μέσα στο loop έβαλα Dlookup αλλά φυσικά βγάζει πάντα την πρώτη εγγραφή..

Θά'θελα δηλαδή σε κάθε loop να έβγαζε το % της i εγγραφής του πίνακα.

Ευχαριστώ.
Για πολλές προσαυξήσεις παραπάνω του 2 θέλεις ένα RercordSet το οποίο θα διαβάζει τον πίνακα χρησιμοποιώντας τον παρακάτω κώδικα : (Πρέπει να εισάγεις πατώντας ALT+F11 στο μενού Tools-References και επιλέγεις Microsoft DAO 3.6 Object Library)

Κώδικας: Επιλογή όλων

' DateSalary Η ημερομηνία μισθοδοσίας
' CurrSum τρέχων άθροισμα που αυξάνεται
Dim RcdSet as DAO.Recordset, DateSalary as date, CurrSum as double

set Rcdset=currentdb.openrecordset("SELECT TblRise.* FROM TblRise")
if not Rcdset.EOF and not RcdSet.BOF then
   Rcdset.movefirst
   Do 
       if Rcdset.fields&#40;"RiseDate"&#41;<= DateSalary then 
         ' Υπολογισμός της μισθοδοσίας 
           ' Παίρνει τη τιμή % και υπολογίζουμε με τιμή από κλίμακα κλπ 
          CurrSum=CurrSum+Rcdset.fields&#40;"PercRise"&#41;  ' επί Τίμή από κλίμακα κλπ
       End if
   Rcdset.MoveNext
   Loop until Rcdset.EOF
end if
Εδώ αυτά που σου αναφέρω στον κώδικα είναι απλά ένα Hint δεν είναι πλήρης ο κώδικας.
Για πλήρη κώδικα στείλε το mdb να στο προσαρμόσω στην βάση σου.

Φιλικά

kon73
My New Site http://www.MsAccess.gr
Free Access (VBA Code,Tutorials, Mdbs, Eclass, Eshop)
Εικόνα

Απάντηση

Επιστροφή στο “MS Access”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες