Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   [ Φόρμες ] Αυτοματη ενημέρωση πεδίου με την τελευταια καταχωρηση (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/353-aytomati-enimerosi-pedioy-me-tin-teleytaia-kataxorisi.html)

athigb 28-01-10 00:35

Αυτοματη ενημέρωση πεδίου με την τελευταια καταχωρηση
 
Γεια σας

Εχω εναν πινακα οπου καταχωρω καποιες μετρησεις που γινονται καθημερινα
Μετραω λιτρα απο id1=Βενζίνη, id2=Πετρελαιο και id3=Super

Σε μια φόρμα φερνω 5 πεδία
το 1ο ειναι ενα combo box οπου επιλεγω το ειδος καυσίμου
το 2ο ειναι η ημερομηνια μετρησης
το 3ο ειναι τα λιτρα της προηγουμενης μετρησης
το 4ο ειναι τα λιτρα της τελευταιας μετρησης
το 5ο ειναι η διαφορά λιτρων

Θα ήθελα το 3ο πεδίο να γινεται η ενημερωση αυτόματα
βασει της τελευταιας προηγούμενης μετρησης του συγκεκριμμένου id καυσίμου

Προσπαθω αρκετο καιρο αλλα εχω μπλεξει...
Σας ευχαριστώ

Meteora 28-01-10 11:41

Καλημέρα
Χρειάστηκε σε κάποια εφαρμογή -ενώ βρισκόμουν σε περιβάλλον προσθήκης νέας εγγραφής- να ανακαλώ την τιμή ενός πεδίου απο την τελευταία εισερχόμενη εγγραφή. Υπάρχουν 2-3 λύσεις :
Παράδειγμα (Ι)
Βάλε στο after Update του comboBox κάτι σαν αυτό εδώ
Dim fla As Integer
fla = [ID1] - 1
[Πεδιο2] = DLookup("[Πεδιο2]", "ΟΝΟΜΑπινακα", "[ID1] = " & fla)

όπου [ID1] ειναι το πεδίο αυτόματης αρίθμησης.

Η παραπάνω εντολή λέει : Βάλε στο [Πεδίο2] την τιμή που υπάρχει στο ίδιο πεδίο, αλλά της ...προηγούμενης εγγραφής. Με μια εντολή select case ....end select μπορεί να καθορίζεται σε ποιο πεδίο -απο τα τρία διαφορετικά θα γίνεται η επιλογή....
Την ημερομηνία που την αποθηκεύεις ; Δεν πολυκατάλαβα την δομή της βάσης σου...
Τα ξαναλέμε φίλε
Νίκος

athigb 02-02-10 21:32

Φιλε Νικο σ'ευχαριστω που προθυμοποιήθηκες
Εχω εναν πινακα οπου υπαρχουν τα εξής
IdCount Αυτοματη αριθμιση ( ο κωδικός εγγραφής)
idPump αριθμός (Φερνω απο αλλον πίνακα την αντλία που καταχωρώ)
Date Date ( ημερομηνία καταχωρησης)
CountBeforeUpd αριθμός ( προηγούμενη μέτρηση)
CountAfterUpd αριθμος ( νέα μέτρηση)

Εκανα τα παρακατω
Private Sub Combo10_AfterUpdate()
Dim fla As Integer
fla = [idCount] - 1
[CounterBeforeUpd] = DLookup("[CounterAfterUpd]", "tblCountPump", "[idCount] = " & fla)
End Sub

Δουλευει μεν, αλλα οταν επιλεγω μετρηση π.χ. απο την αντλια 1, μου φερνει την προηγουμενη μετρηση οποιασδηποτε αντλιας εχω βάλει

το selectcase δεν ξερω πως να το βαλω

Meteora 03-02-10 06:17

Καλημέρα
Διόρθωση !!!!!!!!!!!
Διάβασε το προσωπικό μήνυμα που απέστειλα

Φιλικά / Νίκος

Meteora 05-02-10 19:50

1 Συνημμένο(α)
Αθηνόδωρε καλησπέρα...
Δες συνημμένο. Αναμένω απάντηση...
Φιλικά / Νίκος

nisgia 07-02-10 02:03

1 Συνημμένο(α)
Φίλε Αθηνόδωρε, δεν χρειάζεται να κρατάς σε κάθε εγγραφή μέτρησης την τιμή της προηγούμενης.

Το μυστικό στο να βρεις τις δυο τελευταίες εγγραφές (μετρήσεις), είναι στον όρο TOP ενός ερωτήματος επιλογής
που βασίζεται στον πίνακα εγγραφών, στο οποίο έχει εφαρμοστεί φίλτρο με βάση το ID της αντλίας
και φθίνουσα ταξινόμηση στο πεδίο ημερομηνίας.

Από την στιγμή που έχεις ένα σύνολο εγγραφών για μια συγκεκριμένη αντλία με φθίνουσα ταξινόμηση
ως προς την ημερομηνία, τότε μπορείς με τη χρήση του όρου TOP να πάρεις τις δυο "πάνω-πάνω" (TOP 2)
και με μια DΜΑΧ() να πάρεις την τελευταία ενώ με μια DMIN() την προηγούμενη και να τις περάσεις
στα αντίστοιχα πεδία της φόρμας σου.

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

Τα λέμε!
Γιάννης


Η ώρα είναι 07:24.

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


Search Engine Optimization by vBSEO 3.3.2