Προς το περιεχόμενο

Access time check


Kontos_Harry

Προτεινόμενες αναρτήσεις

Δημοσ.

Οποιος ξέρει ας βοηθήσει στο παρακάτω πρόβλημα.

Έχω ένα πίνακα με 4 πεδία όπως πχ παρακάτω:

 

Ημερομηνία - Υπάλληλος - Έναρξη - Λήξη

01/01/2005 Υπάλληλος1 10:00:00 12:00:00

01/01/2005 Υπάλληλος1 14:00:00 15:00:00

01/01/2005 Υπάλληλος1 11:00:00 14:30:00

02/01/2005 Υπάλληλος1 14:00:00 15:00:00

02/01/2005 Υπάλληλος1 06:00:00 06:30:00

01/01/2005 Υπάλληλος2 14:00:00 15:00:00

01/01/2005 Υπάλληλος2 06:00:00 06:30:00

02/01/2005 Υπάλληλος2 14:00:00 15:00:00

02/01/2005 Υπάλληλος2 06:00:00 06:30:00

 

Πρωτεύον κλειδί είναι Ημερομηνία, Υπάλληλος, Έναρξη

Μεταφέροντάς τα αυτά σε μιά φόρμα θέλω να μη μου επιτρέπει να καταχωρήσω συγκρουόμενο διάστημα ωρών για τον ίδιο υπάλληλο την ίδια μέρα...πχ (εγγραφή 3). Το κώδικα με τη λούπα και λογικά If κλπ ξέρω τι πρέπει να γράψω. Αυτό που δεν ξέρω είναι να πηγαίνω σε ένα πίνακα η ερώτημα να μου επιστρέφει μια τιμή πχ (Έναρξη) να κάνω τη σύγκριση μετά στην επόμενη εγγραφή σύγκριση μέχρι να τελειώσει η λούπα...

Ας βοηθήσει κανείς.......ευχαριστώ...

Δημοσ.

μαλλον ερωτηση προγραμματισμού, παρα σοφτγουερ.

Αυτο μπορει να γινει σε επιπεδο φόρμας ή σε επιπεδο βάσης.

 

η φορμα πρεπει να εχει καποιο event (pre-insert ή pre-save , pre-update, ή οπως μπορει να λεγεται)

που θα τρεχει πριν το save.

Αν μπορεις να το κανεις σε επιπεδο βασης/πινακα, θα εμποδιζεις να βαζουν τέτοια values ακομα και με sql insert, και imports -δεν ξερω αν γινεται σε access..

Aπο access δεν ξερω να σου γραψω VB, σου το γραφω σε oracle, αλλα το sql εχει ιδια λογικη.

 

>FUNCTION CHECK_NEA_EISODO( Newemp IN VARCHAR2, Newdate_in DATE, Newtime_In DATE) RETURN BOOLEAN
/* parameters: then new values truing to insert-update */
/* return: allow or deny save of data */
/* do not forget to handle Newdate_in as DDMMYYYY, and Newtime_in as HHMISS */
 last_out DATE;
BEGIN  
 
SELECT MAX( EXODOS ) INTO last_out
	FROM TIMELOG 
	WHERE EMP = Newemp
	AND HMERA_EISODOY = Newdate_in;

if last_out IS NULL THEN 
/* den exei ksanabgei thn idia mera. an den valeis to MAX, prepei na provlepseis to DATA_NOT_FOUND */
RETURN TRUE; /* EPITREPW INSERT-UPDATE */
END IF;

IF last_out > Newtime_In THEN /* prospa8ei na ksanampei prin bgei. Apagoreyetai */
RETURN FALSE; /* APAGOREYW INSERT-UPDATE */
END IF;

RETURN TRUE; /* else EPITREPW INSERT-UPDATE */
END;

 

Ενας τετοιος ελεγχος πρεπει να γινεται πριν αποθηκευτει αλλαγη ή δημιουργηθει νέα εγγραφή.

  • 1 μήνα μετά...

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...