Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Αναζήτηση αποτελεσμάτων ανάμεσα σε ημερομηνίες

Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια!

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 22-10-13, 21:31
Όνομα: Βαγγέλης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 08-05-2013
Μηνύματα: 62
Προεπιλογή Αναζήτηση αποτελεσμάτων ανάμεσα σε ημερομηνίες

Χαιρετώ την παρέα,
Φτιάχνω μια βάση δεδομένων στην access εδώ και λίγο καιρό για την δουλειά μου.
Έχω φτάσει κοντά στην ολοκλήρωση της αλλά κόλλησα σε κάποια ερωτήματα και θέλω την απαραίτητη βοήθεια.

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

Επισυνάπτω τη βάση που έχω φτιάξει και θέλω το εξής:
Πατώντας στη "Διαχείριση Πελατών" ανοίγει μια φόρμα όπου συμπληρώνω τα ανάλογα πεδία κάθε φορά. Στο κάτω μέρος σε μια δευτερεύουσα φόρμα επιλέγω τον "Τύπο αίτησης Διπλώματος" και την "Κατηγορία Διπλώματος" και βάζω και μια "Ημερομηνία Εγγραφής".
Θέλω λοιπόν τώρα πατώντας (στην "Κεντρική Σελίδα") Αναζήτηση και μετά "Δίπλωμα ανά Κατηγορία και Τύπο Αίτησης" να εισάγω "Ημερομηνία έναρξης" και "Ημερομηνία λήξης" και επιλέγοντας από κάτω "Κατηγορία Διπλώματος" η "Τύπος Αίτησης Διπλώματος" να βρίσκει τα αποτελέσματα ανάμεσα σε αυτές τις ημερομηνίες.
Δηλαδή Ημερομηνία έναρξης=<Ημερομηνία Εγγραφής>=Ημερομηνία λήξης.
Όπως θα δείτε στα κουμπιά υπάρχει συμβάν με δόμηση κώδικα.
Μπορούμε να συμπληρώσουμε σε αυτά τα κριτήρια εκεί και άλλο ένα κριτήριο (ημερομηνίες);;;
Πιστεύω να έγινα κατανοητός στο τι ζητάω.
Ευχαριστώ
Συνημμένα Αρχεία
Τύπος Αρχείου: zip DFGFD.zip (336,8 KB, 61 εμφανίσεις)
Απάντηση με παράθεση
  #2  
Παλιά 24-10-13, 09:21
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλημέρα

Βαγγέλη, ακολούθησε τα παρακάτω βήματα:

1) Πρόσθεσε στα ερωτήματα στα οποία βασίζονται οι εκθέσεις και το πεδίο [Ημερομηνία Εγγραφής]

2) Δώσε στα πεδία ημερομηνίας στη φόρμα ονόματα txtStart και txtEnd

3) Άλλαξε τον κώδικα που ανοίγει τις εκθέσεις με τον ακόλουθο:

Κώδικας:
Private Sub Εμφάνιση_Click()

    Dim name As String

    name = "Στατιστικά - ανά Κατηγορία Διπλώματος"

    DoCmd.OpenReport name, acViewPreview, , "ΚατηγορίαΔιπλώματος= " & Me.ΛίσταΚατηγορίαΔιπλώματος _
                    & "AND ([Ημερομηνία Εγγραφής] Between #" & Format(Me.txtStart, "m/d/yyyy") _
                    & "# AND #" & Format(Me.txtEnd, "m/d/yyyy") & "#)"

End Sub

Private Sub Εντολή2_Click()

    Dim name As String

    name = "Στατιστικά - ανά Τύπο Αίτησης Διπλώματος"

    DoCmd.OpenReport name, acViewPreview, , "ΤύποςΑίτησηςΔιπλώματος= " & Me.ΛίσταΤύποςΑίτησηςΔιπλώματος _
                    & "AND [Ημερομηνία Εγγραφής] Between #" & Format(Me.txtStart, "m/d/yyyy") _
                    & "# AND #" & Format(Me.txtEnd, "m/d/yyyy") & "#"

End Sub
Απάντηση με παράθεση
  #3  
Παλιά 24-10-13, 18:05
Όνομα: Βαγγέλης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 08-05-2013
Μηνύματα: 62
Προεπιλογή

Καπετάνιε,

ΕΥΧΑΡΙΣΤΩ ! ! ! ! ! !

Παράθεση:
Αρχική Δημοσίευση από kapetang Εμφάνιση μηνυμάτων
Καλημέρα

Βαγγέλη, ακολούθησε τα παρακάτω βήματα:

1) Πρόσθεσε στα ερωτήματα στα οποία βασίζονται οι εκθέσεις και το πεδίο [Ημερομηνία Εγγραφής]

2) Δώσε στα πεδία ημερομηνίας στη φόρμα ονόματα txtStart και txtEnd

3) Άλλαξε τον κώδικα που ανοίγει τις εκθέσεις με τον ακόλουθο:

Κώδικας:
Private Sub Εμφάνιση_Click()

    Dim name As String

    name = "Στατιστικά - ανά Κατηγορία Διπλώματος"

    DoCmd.OpenReport name, acViewPreview, , "ΚατηγορίαΔιπλώματος= " & Me.ΛίσταΚατηγορίαΔιπλώματος _
                    & "AND ([Ημερομηνία Εγγραφής] Between #" & Format(Me.txtStart, "m/d/yyyy") _
                    & "# AND #" & Format(Me.txtEnd, "m/d/yyyy") & "#)"

End Sub

Private Sub Εντολή2_Click()

    Dim name As String

    name = "Στατιστικά - ανά Τύπο Αίτησης Διπλώματος"

    DoCmd.OpenReport name, acViewPreview, , "ΤύποςΑίτησηςΔιπλώματος= " & Me.ΛίσταΤύποςΑίτησηςΔιπλώματος _
                    & "AND [Ημερομηνία Εγγραφής] Between #" & Format(Me.txtStart, "m/d/yyyy") _
                    & "# AND #" & Format(Me.txtEnd, "m/d/yyyy") & "#"

End Sub
Απάντηση με παράθεση
  #4  
Παλιά 25-10-13, 17:58
Όνομα: Βαγγέλης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 08-05-2013
Μηνύματα: 62
Προεπιλογή

kapetang
1) εάν δε θέλουμε να ορίσουμε χρόνο και να αναζητήσει όλες τις εγγραφές, χωρίς να προσθέσουμε άλλο κουμπί (τώρα βγάζει σφάλμα) τι πρέπει να συμπληρώσουμε στον κώδικα;
2) Μπορούμε να βάλουμε σταθερά διαστήματα (μήνα, τρίμηνο, ετήσιο);
Ευχαριστώ
Απάντηση με παράθεση
  #5  
Παλιά 25-10-13, 19:25
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα

Βαγγέλη, δοκίμασε τον κώδικα.

Κώδικας:
Private Sub Εμφάνιση_Click()

    Dim name As String, strF As String

    name = "Στατιστικά - ανά Κατηγορία Διπλώματος"
    If Not IsNull(Me.ΛίσταΚατηγορίαΔιπλώματος) Then strF = "ΚατηγορίαΔιπλώματος= " & Me.ΛίσταΚατηγορίαΔιπλώματος
    FilterReport strF, name

End Sub

Private Sub Εντολή2_Click()

    Dim name As String, strF As String
    name = "Στατιστικά - ανά Τύπο Αίτησης Διπλώματος"

    If Not IsNull(Me.ΛίσταΤύποςΑίτησηςΔιπλώματος) Then strF = "ΤύποςΑίτησηςΔιπλώματος= " & Me.ΛίσταΤύποςΑίτησηςΔιπλώματος
    FilterReport strF, name

End Sub

Public Sub FilterReport(strF As String, strName As String)
    If Not IsNull(Me.txtStart) Then
        If strF <> "" Then strF = strF & " AND "
        strF = strF & "[Ημερομηνία Εγγραφής]>=#" & Format(Me.txtStart, "m/d/yyyy") & "#"
    End If

    If Not IsNull(Me.txtEnd) Then
        If strF <> "" Then strF = strF & " AND "
        strF = strF & "[Ημερομηνία Εγγραφής]<= #" & Format(Me.txtEnd, "m/d/yyyy") & "#"
    End If
    If IsNull(strF) Then
        DoCmd.OpenReport strName, acViewPreview
    Else
        DoCmd.OpenReport strName, acViewPreview, , strF
    End If
End Sub
Δίνει τη δυνατότητα να αφήνεις ένα ή περισσότερα πεδία κενά (Null).

Κάθε πεδίο που μένει κενό, δεν υπολογίζεται στα κριτήρια.

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

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

Αν όλα τα πεδία είναι κενά θα ανοίξει η έκθεση χωρίς να εφαρμοστεί κάποιο φίλτρο.

Αν θέλεις ένα διάστημα πχ τρίμηνο θα πρέπει να δώσεις τις κατάλληλες ημερομηνίες έναρξης και λήξης (πχ 1/1/2013 , 31/3/2013).

Φιλικά/Γιώργος

Τελευταία επεξεργασία από το χρήστη kapetang : 31-10-13 στις 16:18. Αιτία: Προσθήκη στον κώδικα του , και #
Απάντηση με παράθεση
  #6  
Παλιά 30-10-13, 19:53
Όνομα: Βαγγέλης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 08-05-2013
Μηνύματα: 62
Προεπιλογή

Γειά σου Γιώργο,
έβαλα τον κώδικα που μου έστειλες αλλά ανεξαρτήτως από την ημερομηνία που θα βάλεις, ή την κατηγορία που θα επιλέξεις τα εμφανίζει όλα.
Το κοίταξα και το ξανακοίταξα μήπως έχω γράψει κάτι λάθος αλλά δε βρήκα κάτι.
Μπορείς να ρίξεις πάλι μια ματιά;
Ευχαριστώ
Παράθεση:
Αρχική Δημοσίευση από kapetang Εμφάνιση μηνυμάτων
Καλησπέρα

Βαγγέλη, δοκίμασε τον κώδικα.

Κώδικας:
Private Sub Εμφάνιση_Click()

    Dim name As String, strF As String

    name = "Στατιστικά - ανά Κατηγορία Διπλώματος"
    If Not IsNull(Me.ΛίσταΚατηγορίαΔιπλώματος) Then strF = "ΚατηγορίαΔιπλώματος= " & Me.ΛίσταΚατηγορίαΔιπλώματος
    FilterReport strF, name

End Sub

Private Sub Εντολή2_Click()

    Dim name As String, strF As String
    name = "Στατιστικά - ανά Τύπο Αίτησης Διπλώματος"

    If Not IsNull(Me.ΛίσταΤύποςΑίτησηςΔιπλώματος) Then strF = "ΤύποςΑίτησηςΔιπλώματος= " & Me.ΛίσταΤύποςΑίτησηςΔιπλώματος
    FilterReport strF, name

End Sub

Public Sub FilterReport(strF As String, strName As String)
    If Not IsNull(Me.txtStart) Then
        If strF <> "" Then strF = strF & " AND "
        strF = strF & "[Ημερομηνία Εγγραφής]>=" & Format(Me.txtStart, "m/d/yyyy")
    End If

    If Not IsNull(Me.txtEnd) Then
        If strF <> "" Then strF = strF & " AND "
        strF = strF & "[Ημερομηνία Εγγραφής]<=" & Format(Me.txtEnd, "m/d/yyyy")
    End If
    If IsNull(strF) Then
        DoCmd.OpenReport strName, acViewPreview
    Else
        DoCmd.OpenReport strName, acViewPreview, strF
    End If
End Sub
Δίνει τη δυνατότητα να αφήνεις ένα ή περισσότερα πεδία κενά (Null).

Κάθε πεδίο που μένει κενό, δεν υπολογίζεται στα κριτήρια.

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

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

Αν όλα τα πεδία είναι κενά θα ανοίξει η έκθεση χωρίς να εφαρμοστεί κάποιο φίλτρο.

Αν θέλεις ένα διάστημα πχ τρίμηνο θα πρέπει να δώσεις τις κατάλληλες ημερομηνίες έναρξης και λήξης (πχ 1/1/2013 , 31/3/2013).

Φιλικά/Γιώργος
Απάντηση με παράθεση
  #7  
Παλιά 31-10-13, 16:21
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα

Βαγγέλη, έχεις δίκιο.

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

Διόρθωσα τον κώδικα στο προηγούμενο μήνυμα.

Δοκίμασέ τον πιστεύω να λειτουργεί σωστά.

Φιλικά/Γιώργος
Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
Ελάχιστη Τιμή ανάμεσα σε 2 στήλες. spavlos Access - Ερωτήσεις / Απαντήσεις 2 01-10-13 20:07
Εξαγωγή αριθμού από συμβολοσειρά (ανάμεσα) Tasos Κείμενο 0 28-09-11 07:02
[Γενικά] Τοποθέτηση διαχωριστικού ανάμεσα σε γράμμα και αριθμό misirlis Excel - Ερωτήσεις / Απαντήσεις 8 15-05-11 11:11
[VBA] Μεταφορά δεδομένων ανάμεσα σε φύλλα anastasiosz Excel - Ερωτήσεις / Απαντήσεις 11 10-03-11 18:21
Αναζήτηση τελευταίων αποτελεσμάτων jimrenoir Access - Ερωτήσεις / Απαντήσεις 5 01-03-11 18:12


Η ώρα είναι 20:02.