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/4550-kanonas-periorismoy-hmeromhnias-me-bash-parastatiko.html)

smasak 21-04-17 13:45

ΚΑΝΟΝΑΣ ΠΕΡΙΟΡΙΣΜΟΥ ΗΜΕΡΟΜΗΝΙΑΣ ΜΕ ΒΑΣΗ ΤΟ ΠΑΡΑΣΤΑΤΙΚΟ
 
Καλησπέρα, πως μπορώ να διαμορφώσω τον κώδικα,

dt1 = Nz(DMax("[ΗΜΕΡΟΜΗΝΙΑ ΧΡΕΩΣΗΣ]", "[tblEispraxi]", "[AP] <" & Me.[AP]), 0)
dt2 = Nz(DMin("[ΗΜΕΡΟΜΗΝΙΑ ΧΡΕΩΣΗΣ]", "[tblEispraxi]", "[AP] >" & Me.[AP]), #1/1/9999#)

If Me.[ΗΜΕΡΟΜΗΝΙΑ ΧΡΕΩΣΗΣ] < dt1 Or Me.[ΗΜΕΡΟΜΗΝΙΑ ΧΡΕΩΣΗΣ] > dt2 Then
MsgBox "ημερομηνια προγενέστερη της τελευταίας "

όπου [AP] η αρίθμηση,
ώστε να λαμβάνει υπόψη και τον τύπο του παρασταστικού [id_type];

Τώρα βλέπει μόνο την αρίθμηση. Αν έχω πχ ΤΠΥ & ΤΙΜ.ΠΩΛ. με διαφορετική αρίθμηση δεν δουλεύει σωστά.

Meteora 21-04-17 21:06

Καλησπέρα,

Διαβάζω τον κώδικα, τον καταλαβαίνω, αλλά αν δεν δοκιμάσω τις εντολές και τη δομή τους δεν μπορώ να σε δώσω απάντηση.
Οι ημερομηνίες θέλουν 'ευαίσθητους' χειρισμούς !

Υστερολόγιο : Ο φίλος μας ο Νάσος, έχει καλή εμπειρία, είναι προσεκτικός και αν αναρτήσεις μια μικρογραφία της σχεδίασης που κάνεις και στην οποία να φαίνεται το πρόβλημα, είναι βέβαιο ότι θα βρεις λύση.

καλή συνέχεια... / Νίκος

smasak 24-04-17 06:41

1 Συνημμένο(α)
Καλημέρα, ναι Νίκο μου έχει δώσει λύσεις στο παρελθόν όπως και εσύ και ο Γιώργος Καπ.
Ανεβάζω ένα δείγμα στο οποίο έχω δύο τύπους παραστατικών ΤΠΥ & ΤΙΥ.
Η τελευταία αρίθμηση στο ΤΠΥ είναι 3 με ημερομηνία 24/4/2017.
Η τελευταία αρίθμηση στο ΤΙΥ είναι 3 με ημερομηνία 31/3/2017.
Δοκιμάστε να επιλέξετε το ΤΙΥ με ημερομηνία 20/4/2017 η οποία είναι μεταγενέστερη του τύπου παραστατικού(ΤΙΥ).Δεν την παίρνει γιατί προφανώς βλέπει το ΤΠΥ με ημερομηνία 24/4/2017.

nasos23 24-04-17 16:15

1 Συνημμένο(α)
Καλησπέρα στην παρέα.
Σάκη δες μια δική μου προσέγγιση για το ζητούμενο.
Στην επισυναπτόμενη βάση για κάθε κάθε τύπο τιμολογίου γίνεται
διαφορετική αρίθμηση.
Με την αλλαγή του έτους ξεκινάει πάλι απ' την αρχή

Σημ.Για την πρώτη εγγραφή κάθε τιμολογίου και κάθε έτους έχουμε τη
δυνατότητα να ορίσουμεε τον αριθμό που θα ξεκινάει το κάθε τιμολόγιο

smasak 24-04-17 21:11

1 Συνημμένο(α)
Καλή η προσέγγισή σου Νάσο, όπως και πολύ χρήσιμο να δίνεται η δυνατότητα επιλογής αλλαγής αρίθμησης στο επόμενο έτος(ήταν κάτι που δεν είχα σκεφθεί)..Ίσως μία "πινελιά" ακόμη σε περίπτωση που δεν θέλουμε να ξεκινάει η αρίθμηση από το 1 στο επόμενο έτος να υπάρχει επιλογή συνέχισης χωρίς να ψάχνουμε να βρούμε την τελευταία.

Προσάρμοσα την λύση του Νάσου στο δικό μου παράδειγμα και εξακολουθεί να μην δουλεύει.
Επιλέξτε τον τύπο παραστατικού ΤΙΥ με ημερομηνία 20/4/2017 η οποία είναι μεταγενέστερη του συγκεκριμένου τύπου(τελευταία 31/3/17).

nasos23 25-04-17 13:47

1 Συνημμένο(α)
Προσαρμοσμένη στην πρότασή μου

smasak 25-04-17 17:52

1 Συνημμένο(α)
Νάσο όπως έχω το παράδειγμά σου επέλεξε τον τύπο παραστατικού ΤΙΥ και δώσε ημερομηνία 5/2/2016.
Υπάρχουν μόνο 2 εγγραφές με ΤΠΥ.

nasos23 25-04-17 21:07

Καλησπέρα Σάκη προσοχή στην προέλευση των δεδομένων..

Κώδικας:

Private Sub ΗΜΕΡΟΜΗΝΙΑ_ΧΡΕΩΣΗΣ_AfterUpdate()
If IsNull(Me.[ΗΜΕΡΟΜΗΝΙΑ_ΧΡΕΩΣΗΣ]) Then
 
    Exit Sub
    End If
    If IsNull(DMax("[AP]", "[tblEispraxi]", "Year([ΗΜΕΡΟΜΗΝΙΑ_ΧΡΕΩΣΗΣ])=" & Year([ΗΜΕΡΟΜΗΝΙΑ_ΧΡΕΩΣΗΣ]) & _
    " and[id_seiraPar]=" & Me.[id_seiraPar] & "and[id_type]=" & Me.[id_type] & "")) Then
          MsgBox "Επιλέξτε απο ποιό APιθμό ΠAPαστατικού θέλετε να ξεκινήσει το έτος", vbInformation
          Me.AP.BackColor = 10092543
          Me.AP.SetFocus
         
            Else
           
            Me.AP = Nz(DMax("[AP]", "[tblEispraxi]", "Year([ΗΜΕΡΟΜΗΝΙΑ_ΧΡΕΩΣΗΣ])=" & Year([ΗΜΕΡΟΜΗΝΙΑ_ΧΡΕΩΣΗΣ]) & _
            " and[id_seiraPar]=" & Me.[id_seiraPar] & "and[id_type]=" & Me.[id_type] & "")) + 1
            Me.AP.BackColor = 16777215
          End If
End Sub

Private Sub ΗΜΕΡΟΜΗΝΙΑ_ΧΡΕΩΣΗΣ_BeforeUpdate(Cancel As Integer)
 If Not IsNull(Me.[ΗΜΕΡΟΜΗΝΙΑ_ΧΡΕΩΣΗΣ]) Then
  If Me.[ΗΜΕΡΟΜΗΝΙΑ_ΧΡΕΩΣΗΣ] < DMax("[ΗΜΕΡΟΜΗΝΙΑ_ΧΡΕΩΣΗΣ]", "tblEispraxi", "Year([ΗΜΕΡΟΜΗΝΙΑ_ΧΡΕΩΣΗΣ])=" & Year([ΗΜΕΡΟΜΗΝΙΑ_ΧΡΕΩΣΗΣ]) & _
  " and [id_seiraPar]=" & Me.[id_seiraPar] & " and [id_type]=" & Me.[id_type] & "") Then
                MsgBox "Η ημερομηνία δεν μπορεί να είναι μικρότερη των ήδη καταχωρηθεισών για το έτος", vbCritical, "ΠAPακαλώ διορθώστε!!"
                  Cancel = True
                  End If
           
              Else
              Exit Sub
              End If
End Sub

ΥΓ.Καλόπιστα πάντα... είμαι ο τελευταίος που θα μπορούσα να δώσω συμβουλές.
Καλό είναι να κοιτάμε πρώτα την ουσία και μετά την δημιουργία μιας εντυπωσιακής βάσης.
Θα μπορούσε να είναι πιό απλή στην κατασκευή της και πιο λειτουργική

smasak 26-04-17 07:16

Ok Νάσο αυτό ήθελα, δουλεύει σωστά.Σε ευχαριστώ.

Ξέρω ότι κάποια πράγματα που είναι και πέρα από τις γνώσεις και δυνατότητές μου μπορούν να γίνουν και πιο απλά.Παρόλα αυτά ακολουθώ αυτό που μου αρέσει και "αισθητικά" χωρίς να σκεφτώ ότι στην πορεία θα γίνει περίπλοκο.Την εφαρμογή αυτή την δημιούργησα για την έκδοση των δικών μου παραστατικών παρόλο που θα μπορούσα να χρησιμοποιήσω κάποια άλλη εμπορική.

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

nasos23 26-04-17 07:51

Private Sub ΗΜΕΡΟΜΗΝΙΑ_ΧΡΕΩΣΗΣ_AfterUpdate()
If IsNull(Me.[ΗΜΕΡΟΜΗΝΙΑ_ΧΡΕΩΣΗΣ]) Then

Exit Sub
End If
Me.AP = Nz(DMax("[AP]", "[tblEispraxi]", "Year([ΗΜΕΡΟΜΗΝΙΑ_ΧΡΕΩΣΗΣ])=" & Year([ΗΜΕΡΟΜΗΝΙΑ_ΧΡΕΩΣΗΣ]) & _
" and[id_seiraPar]=" & Me.[id_seiraPar] & "and[id_type]=" & Me.[id_type] & ""), 0) + 1

End Sub


Η ώρα είναι 11:44.

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


Search Engine Optimization by vBSEO 3.3.2