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/2756-anazitisi-apotelesmaton-anamesa-se-imerominies.html)

kellis 22-10-13 21:31

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

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

Επισυνάπτω τη βάση που έχω φτιάξει και θέλω το εξής:
Πατώντας στη "Διαχείριση Πελατών" ανοίγει μια φόρμα όπου συμπληρώνω τα ανάλογα πεδία κάθε φορά. Στο κάτω μέρος σε μια δευτερεύουσα φόρμα επιλέγω τον "Τύπο αίτησης Διπλώματος" και την "Κατηγορία Διπλώματος" και βάζω και μια "Ημερομηνία Εγγραφής".
Θέλω λοιπόν τώρα πατώντας (στην "Κεντρική Σελίδα") Αναζήτηση και μετά "Δίπλωμα ανά Κατηγορία και Τύπο Αίτησης" να εισάγω "Ημερομηνία έναρξης" και "Ημερομηνία λήξης" και επιλέγοντας από κάτω "Κατηγορία Διπλώματος" η "Τύπος Αίτησης Διπλώματος" να βρίσκει τα αποτελέσματα ανάμεσα σε αυτές τις ημερομηνίες.
Δηλαδή Ημερομηνία έναρξης=<Ημερομηνία Εγγραφής>=Ημερομηνία λήξης.
Όπως θα δείτε στα κουμπιά υπάρχει συμβάν με δόμηση κώδικα.
Μπορούμε να συμπληρώσουμε σε αυτά τα κριτήρια εκεί και άλλο ένα κριτήριο (ημερομηνίες);;;
Πιστεύω να έγινα κατανοητός στο τι ζητάω.
Ευχαριστώ

kapetang 24-10-13 09:21

Καλημέρα

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

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


kellis 24-10-13 18:05

Καπετάνιε,

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

Παράθεση:

Αρχική Δημοσίευση από kapetang (Μήνυμα 15997)
Καλημέρα

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

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



kellis 25-10-13 17:58

kapetang
1) εάν δε θέλουμε να ορίσουμε χρόνο και να αναζητήσει όλες τις εγγραφές, χωρίς να προσθέσουμε άλλο κουμπί (τώρα βγάζει σφάλμα) τι πρέπει να συμπληρώσουμε στον κώδικα;
2) Μπορούμε να βάλουμε σταθερά διαστήματα (μήνα, τρίμηνο, ετήσιο);
Ευχαριστώ

kapetang 25-10-13 19:25

Καλησπέρα

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

Κώδικας:

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).

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

kellis 30-10-13 19:53

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

Αρχική Δημοσίευση από kapetang (Μήνυμα 16001)
Καλησπέρα

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

Κώδικας:

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:21

Καλησπέρα

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

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

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

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

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


Η ώρα είναι 03:06.

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


Content Relevant URLs by vBSEO 3.3.2