DLookUp

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

Συντονιστές: WebDev Moderators, Super-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 επισκέπτες