Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Εκτυπωση report με ενα και παραπανω κριτηρια (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/295-ektyposi-report-me-ena-kai-parapano-kritiria.html)

nisgia 24-12-09 01:57

Γεια και χαρά στη παρέα και καλές γιορτές σε όλους!

Όταν ενδέχεται να αντιμετωπίσουμε τιμές NULL σε εκφράσεις αλφαριθμητικών
μπορούμε να χρησιμοποιήσουμε τον τελεστή άθροισης (+) αντί τον κανονικό τελεστή συνένωσης αλφαριθμητικών (&).

Με αυτόν τον τρόπο αποφεύγουμε τη χρήση ελέγχων για τιμές NULL διότι η προσπάθεια συνένωσης
ενός αλφαριθμητικού με μια τιμή NULL με τον τελεστή άθροισης, απλά μας επιστρέφει ένα κενό αλφαριθμητικό.
Επίσης, η συνάρτηση Mid διαχειρίζεται με κομψό τρόπο τα κενά αλφαριθμητικά
οπότε μπορούμε άφοβα να της περάσουμε ένα String χωρίς να ελέγξουμε το μήκος του.

Με βάση αυτά φίλε Μάριε, ο κώδικας για το παράδειγμά σου θα μπορούσε να μοιάζει με τον παρακάτω:

Private Sub cmdOpenReport_Click()
Dim strSQL As String
strSQL = strSQL & " AND " + "[ΜΗΝΑΣ]= '" + Me.combo1 + "'"
strSQL = strSQL & " AND " + "[ΚΩΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΥ]= '" + Me.combo2 + "'"
strSQL = strSQL & " AND " + "[ΚΑΤΗΓΟΡΙΑ]= '" + Me.combo3 + "'"
strSQL = Mid(strSQL, 6)
DoCmd.OpenReport "MINES", acViewPreview, , strSQL
End Sub

Tasos 25-12-09 01:48

Καλημέρα και χρόνια πολλά σε όλους και όλες!

Ο καλός μου φίλος Γιάννης πρότεινε μια υπέροχη λύση για Access < 2007 .

Μπράβο Γιάννη!

Για Access 2007+ μπορεί να γίνει έτσι:

Private Sub cmdOpenReport_Click()
DoCmd.OpenReport "MINES", 5, , Mid( _
IIf(IsNull(Me.combo1), "", " AND [ΜΗΝΑΣ]= '" & Me.combo1 & "'") & _
IIf(IsNull(Me.combo2), "", " AND [ΚΩΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΥ]= '" & Me.combo2 & "'") & _
IIf(IsNull(Me.combo3), "", " AND [ΚΑΤΗΓΟΡΙΑ]= '" & Me.combo3 & "'"), 6)
End Sub


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

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


Search Engine Optimization by vBSEO 3.3.2