Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   [ Ερωτήματα ] Iff και επιπλέον ορίσματα (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/492-iff-kai-epipleon-orismata.html)

mdragon 11-03-10 11:44

Iff και επιπλέον ορίσματα
 
Καλήμέρα.... είπα να σας ταλαιπωρήσω λίγο..........
Θέλω να υπολογίσω τις αποζημιώσεις με βάση τον χρόνο υπηρεσίας και το αν είναι ημερομίσθιος ή μισθωτός.
Προσπάθησα με την iff αλλά τα ορίσματα που θέλω να βάλω είναι πολλά και δεν τη δέχεται.
Παράδειγμα:
IIf(([Έτη]=0) And ([Μήνες]<2);0;IIf(([Έτη]=0) And ([Μήνες]>=2 And [Η/Μ]="Η");5;IIf(([Έτη]=0) And ([Μήνες]>=2 And [Η/Μ]="Μ");1;IIf(([Έτη]>1<4 And [Η/Μ]="Μ");2;IIf(([Έτη]<2 And [Η/Μ]="Η");7;IIf(([Έτη]<5 And [Η/Μ]="Η");15;"???"))))))

Τι μου προτίνεται?

editolis 11-03-10 11:53

Εαν ειναι μπερδεμενο το σεναριο σου ισως θα
επρεπε να κοιταξεις την δημιουργια
μιας δικης σου Function μεσο κωδικα με
βαση το Select Case.

Tasos 11-03-10 14:39

Αγαπητή Μάρω, Η συνάρτηση συντακτικά είναι σωστή.

Πρόσεχε μόνο οι τιμές στο πεδίο [Η/Μ] ("Η" και "M") να είναι και εκεί με ελληνικούς χαρακτήρες.

Σου προτείνω τη συνάρτηση Switch (βλ. Βοήθεια Access) που ελέγχεται καλύτερα από την IIf():

Κώδικας:

=Switch([Έτη]=0 And [Μήνες]<2;0;[Έτη]=0 And [Μήνες]>1 And [Η/Μ]="Η";5;[Έτη]=0 And [Μήνες]>1
And [Η/Μ]="Μ";1
;[Έτη]>1<4 And [Η/Μ]="Μ";2;[Έτη]<2 And [Η/Μ]="Η";7;[Έτη]<5 And [Η/Μ]="Η";15;-1;"???")

Φιλικά

Τάσος


mdragon 11-03-10 15:42

Αγαπητέ Τάσο
ίσως σε έχω κουράσει αλλά πραγματικά δεν βρίσκω άκρη.
Οι εκδοχές που θέλω να χρησιμοποιήσω είναι 42. Όπως καταλαβαίνεις σε όλες τις συναρτήσεις μου βγάζει ότι η συνάρτηση είναι πολύ σύνθετη.
Το ίδιο με το switch.
Έχεις καμιά άλλη πρόταση?

Ευγνώμων
Μάρω

Tasos 11-03-10 17:04

Αν με κούραζε μια συνάρτηση θα έπρεπε να κάνω άλλη δουλειά:biggrin:

Μπορείς να "σπάσεις" τη φόρμα/κολοσσό σε 6 πεδία που θα τα αποκρύψεις.
Έτσι θα μπορέσει να τα επεξεργαστείς καλύτερα.
Πως;

Έστω ότι έχεις δημιουργήσει τα 6 αυτά πεδία με τα ονόματα:

Field1, Field2, Field3, Field4, Field5, Field6.

Στο Field1 βάλε το πρώτο τμήμα του αρχικού σου τύπου πχ:

=Switch([Έτη]=0 And [Μήνες]<2;0;[Έτη]=0 And [Μήνες]>1 And [Η/Μ]="Η";
5;[Έτη]=0 And [Μήνες]>1 And [Η/Μ]="Μ";1;[Έτη]>1<4 And [Η/Μ]="Μ";2)


Στο Field2 βάλε το δεύτερο τμήμα... κοκ.

Στο τελευταίο πεδίο (Field6) φρόντισε να αφαιρέσεις το τελευταίο όρισμα ;-1;"???"

Κατόπιν, στο πεδίο που θα εμφανίζει το αποτέλεσμα βάλε το παρακάτω:

=Switch(Not [Field1] Is Null;[Field1];Not [field2] Is Null;[Field2];Not [field3] Is
Null;[Field3];Not [field4] Is Null;[Field4];Not [field5] Is Null;[Field5];Not [field6] Is Null;[Field6];-1;"???")


Φιλικά

Τάσος

mdragon 11-03-10 22:03

Να ΄σαι καλά βρε Τάσο, νά ΄ξερες πόσο με βοήθησες.
Με κακομαθαίνεις :dft009: και λέω να σε εκμεταλευτώ!!!!

Και πάλι ευχαριστώ,
Μάρω


Η ώρα είναι 16:35.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2