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)

marios1984 21-12-09 11:33

Εκτυπωση report με ενα και παραπανω κριτηρια
 
λοιπον εχω ενα report που εχει μεσα
κωδ.λογαριασμου
αριθμος τιμολογιου
μηνας
μεσο
κατηγορια κλπ

εχω μια φορμα που εχει 2 combobox
combo1 = μηνα
combo2 = κωδικος λογαριασμου
και ενα κουμπι εντολης (εντολη 4) που εκτυπωνει το report
o κωδικας που εχω ειναι ο εξης:
private Sub εντολη4_Click()

If IsNull(combo1) Then
MsgBox "επελεξε μηνα !", vbInformation
Exit Sub
End If

DoCmd.OpenReport "MINES", acViewReport, , "[ΜΗΝΑΣ]= '" & combo1 & "'"

και λειτουργει μια χαρα
τωρα αν θελω να βαλω σαν 2ο κριτηριο τον λογαριασμου ποιος ειναι ο καταλληλος κωδικας?δηλαδη τα θελω πχ τον απριλιο για τον κωδικο ταδε και να μου εκτυπωνει το report βαση του μηνα και του κωδικου

και αν θελω να βαλω παραπανω κριτηρια δλδ μεσο , κατηγορια ο κωδικας θα ειναι πανομοιοτυπος με αυτον των 2 κριτηριων?

marios1984 21-12-09 13:39

Προσπαθω να κανω κατι τετοιο αλλα δεν μου βγαινει:

Private Sub Εντολή4_Click()
Dim strWhere As String
If Not IsNull(combo1) Then
strWhere = "([ΜΗΝΑΣ] = """ & Me.combo1 & """) AND "
"[ΚΩΔΙΚΟΣ_ΛΟΓΑΡΙΑΣΜΟΥ]= '" & combo2 & "'"
End If
DoCmd.OpenReport "MINES", acViewReport, , strWhere
Me.Filter = strWhere
Me.FilterOn = True
End Sub

Giorgos 21-12-09 17:05

καλησπερα Μαριε

DoCmd.OpenReport "MINES", acViewReport, , [ΜΗΝΑΣ]= '" & combo1 & "'" & and [pedio] = '" & [kritirio] & "'"

Γιώργος

Giorgos 21-12-09 17:06

DoCmd.OpenReport "MINES", acViewReport, , [ΜΗΝΑΣ]= '" & combo1 & "'" & and [ΚΩΔΙΚΟΣ_ΛΟΓΑΡΙΑΣΜΟΥ] = '" & combo2 & "'"

Giorgos 21-12-09 17:12

DoCmd.OpenReport "MINES", acViewReport, , [ΜΗΝΑΣ]= '" & combo1 & "'" & " and [ΚΩΔΙΚΟΣ_ΛΟΓΑΡΙΑΣΜΟΥ] = '" & combo2 & "'"

Συγνωμη μαριε αυτο ειναι το σωστό

Tasos 21-12-09 17:34

Εγώ το κάνω έτσι¨:

DoCmd.OpenReport "MINES", acViewReport, , "(AR_PELATH>'1') AND (PROION='Patates') AND (PERIOXH='Thesalonikh' OR PERIOXH='Athina') AND (MHNAS>'1')"

και φυσικά αλλάζω τις τιμές με τις τιμές των αντικειμένων της φόρμας.

Χρησιμοποιείστε αγκύλες [ ] αν τα ονόματα των πεδίων περιέχουν κενά.

marios1984 22-12-09 08:46

γιατι στον κωδικο λογαριασμου μου ζητα τιμη παραμετρου?

Vangelis 22-12-09 09:34

Φίλε Μάριε καλημέρα!

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

Φιλικά

Βαγγέλης

marios1984 22-12-09 09:42

Καλημερα και συγγνωμη για την αγενεια μου να μην πω καλημερα...

ο κωδικας που χρησιμοποιω ειναι:
Private Sub Εντολή4_Click()
If IsNull(combo1) Then
MsgBox "επελεξε μηνα !", vbInformation
Exit Sub
End If
DoCmd.OpenReport "MINES", acViewReport, , "[ΜΗΝΑΣ]= '" & combo1 & "'"
End Sub

και ανα μηνα μου τα βγαζει σωστα
τωρα οταν βαζω
DoCmd.OpenReport "MINES", acViewReport, , [ΜΗΝΑΣ]= '" & combo1 & "'" & " and [ΚΩΔΙΚΟΣ_ΛΟΓΑΡΙΑΣΜΟΥ] = '" & combo2 & "'"
μου λεει οτι υπαρχει λαθος στο κωδικο

βεβαια και μονο του που χρησιμοποιησα για να τα φιλτραρω με τον κωδικο λογαριασμου δλδ
DoCmd.OpenReport "MINES", acViewReport, , "[ΚΩΔΙΚΟΣ_ΛΟΓΑΡΙΑΣΜΟΥ]= '" & combo2 & "'"
μου ζηταει τιμη παραμετρου

αλλα εστω πχ οτι θελω φιλτραρισμα με μηνες και κατηγορια ποιος ειναι ο σωστος κωδικας?μηπως χρειαζεται strwhere?

marios1984 22-12-09 10:03

sorry που ξαναεπιστρεφω σαυτον τον κωδικα:

ο κωδικας που χρησιμοποιω ειναι:
Private Sub Εντολή4_Click()
If IsNull(combo1) Then
MsgBox "επελεξε μηνα !", vbInformation
Exit Sub
End If
DoCmd.OpenReport "MINES", acViewReport, , "[ΜΗΝΑΣ]= '" & combo1 & "'" & "[ΚΑΤΗΓΟΡΙΑ]= '" & combo3 & "'"

End Sub

μου βγαζει μηνυμα : missing operator...οπως εχετε καταλαβει ειμαι αρχαριος στην γλωσσα προγραμματισμου ...:)

marios1984 22-12-09 10:09

Χιλια συγγνωμη που ξανα ποσταρω
το βρηκα εντελει...:)

DoCmd.OpenReport "MINES", acViewReport, , "[ΜΗΝΑΣ]= '" & combo1 & "'" & "AND [ΚΑΤΗΓΟΡΙΑ]= '" & combo3 & "'"

2 ερωτησεις τωρα...
θελω οταν επιλεγει καποιος μονο τον μηνα να το βγαζει και ας μην εχει διαλεχτει η κατηγορια...πως γινεται?

marios1984 22-12-09 10:40

γιουπι το βρηκα και αυτο καπως ετσι το εκανα..
Private Sub Εντολή4_Click()
If IsNull(combo1) Then
DoCmd.OpenReport "MINES", acViewReport, , "[ΚΑΤΗΓΟΡΙΑ]= '" & combo3 & "'"
Exit Sub
End If
If IsNull(combo3) Then
DoCmd.OpenReport "MINES", acViewReport, , "[ΜΗΝΑΣ]= '" & combo1 & "'"
Exit Sub
End If
DoCmd.OpenReport "MINES", acViewReport, , "[ΜΗΝΑΣ]= '" & combo1 & "'" & "AND [ΚΑΤΗΓΟΡΙΑ]= '" & combo3 & "'"
End Sub

τωρα μια ερωτηση γιατι για κωδικο λογαριασμου μου βγαζει οτι θελει τιμη παραμετρου?ειναι κειμενο και συνδεεται με ενα προς πολλα με τον κυριο πινακα οπως και οι μηνες...ο κωδικος μπορει να ειναι 610010508αβ γιαυτο το εχω βαλει σαν κειμενο μηπως γιαυτο κολλαει?

marios1984 22-12-09 10:43

υπαρχει δυνατοτητα να μαζεψω τον παραπανω κωδικο στην περιπτωση που του βαλω και 3ο κριτηριο?
πχ τον κωδικο λογαριασμου?και παλι συγγνωμη για τα συνεχομενα ποσταρισματα...

Tasos 22-12-09 11:20

Καλημέρα Μάριε!

Δες ένα παράδειγμα:

DoCmd.OpenReport "MINES", acViewReport, , "([ΚΩΔΙΚΟΣ_ΛΟΓΑΡΙΑΣΜΟΥ] >'" & Me.combo2.Column(1) & "')" & " AND ([PROION]='Patates') AND ([PERIOXH]='Thesalonikh' OR [PERIOXH]='Athina') AND ([MHNAS]>'1')"

Μήπως η δεσμευμένη στήλη του combo2 είναι κρυμμένη και όχι αυτή που εμφανίζεται στη φόρμα;

marios1984 22-12-09 12:50

παιδια συγγνωμη εδω που κανω λαθος ?

Private Sub ÅíôïëÞ4_Click()
If IsNull(combo1) And (cobo2) Then
DoCmd.OpenReport "MINES", acViewReport, , "[ΚΑΤΗΓΟΡΙΑ]= '" & combo3 & "'"
Exit Sub
End If
If IsNull(cobo2) And (combo3) Then
DoCmd.OpenReport "MINES", acViewReport, , "[ΜΗΝΑΣ]= '" & combo1 & "'"
Exit Sub
End If
If IsNull(combo1) And (combo3) Then
DoCmd.OpenReport "MINES", acViewReport, , "[ΚΩΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΥ]= '" & cobo2 & "'"
Exit Sub
End If

DoCmd.OpenReport "MINES", acViewReport, , "[ΜΗΝΑΣ]= '" & combo1 & "'" & "AND [ΚΩΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΥ]= '" & cobo2 & "'" & "AND [ΚΑΤΗΓΟΡΙΑ]= '" & combo3 & "'"
End Sub

δλδ οταν εχω γεματα 2 απο τα 3 ή και τα 3 μια χαρα μου βγαζει το report .οταν ομως ειναι μονο ενα γεματο και τα αλλα 2 κενα μου βγαζει λευκή σελιδα

marios1984 22-12-09 12:52

rolf αντι για and εβαλα & και πηγε κανονικα

marios1984 22-12-09 13:41

παιδια βοηθεια ...θα μου σπασει τα νευρα...ηδη εχω μπει στον πειρασμο να το σπασω το pc ...εχω αυτο τον κωδικα αλλα οταν χρησιμοποιω και τα 3 κριτηρια μου βγαζει σφαλμα

Private Sub ÅíôïëÞ4_Click()
If IsNull(combo1) Then
DoCmd.OpenReport "MINES", acViewReport, , "[ΚΩΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΥ]= '" & cobo2 & "'" & "AND [ΚΑΤΗΓΟΡΙΑ]= '" & combo3 & "'"
Exit Sub
End If
If IsNull(cobo2) Then
DoCmd.OpenReport "MINES", acViewReport, , "[ΜΗΝΑ]= '" & combo1 & "'" & "AND [ΚΑΤΗΓΟΡΙΑ]= '" & combo3 & "'"
Exit Sub
End If
If IsNull(combo3) Then
DoCmd.OpenReport "MINES", acViewReport, , "[ΜΗΝΑΣ]= '" & combo1 & "'" & "AND [ΚΩΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΥ]= '" & cobo2 & "'"
Exit Sub
End If
If IsNull(combo1) & (combo3) Then
DoCmd.OpenReport "MINES", acViewReport, , "[ ΚΩΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΥ]= '" & cobo2 & "'"
Exit Sub
End If
If IsNull(cobo2) & (combo3) Then
DoCmd.OpenReport "MINES", acViewReport, , "[ΜΗΝΑΣ]= '" & combo1 & "'"
Exit Sub
End If
If IsNull(cobo2) & (combo1) Then
DoCmd.OpenReport "MINES", acViewReport, , "[ΚΑΤΗΓΟΡΙΑ]= '" & combo3 & "'"
Exit Sub
End If
DoCmd.OpenReport "MINES", acViewReport, , "[ΜΗΝΑ]= '" & combo1 & "'" & "AND [ΚΩΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΥ]= '" & cobo2 & "'" & "AND [ΚΑΤΗΓΟΡΙΑ]= '" & combo3 & "'"
End Sub

ευχαριστω εκ των προτερων

Giorgos 22-12-09 15:27

Μαριε καλησπερα

εδώ έχεις ένα λά8ος στον κωδικα σου "[ ΚΩΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΥ]" εχες κενο μεταξυ Κ και [

έλεξε αρχικα μήπως έχεις και αλλα τετοια

DoCmd.OpenReport "MINES", acViewReport, , "[ ΚΩΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΥ]= '" & cobo2 & "'"

Γιωργος

Tasos 23-12-09 03:54

Καλημέρα!
Μάριε, δες αυτό το παράδειγμα (βασισμένο στον κώδικα σου):

Μη χρησιμοποιείς ( ' ) όταν αναφέρεσαι σε αριθμητικά πεδία.


Private Sub cmdOpenReport_Click()

Dim strSql$
If Not IsNull(Me.combo1) Then strSql = "[ΜΗΝΑΣ]= '" & Me.combo1 & "' AND "
If Not IsNull(Me.combo2) Then strSql = strSql & "[ΚΩΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΥ]= '" & Me.combo2 & "' AND "
If Not IsNull(Me.combo3) Then strSql = strSql & "[ΚΑΤΗΓΟΡΙΑ]= '" & Me.combo3 & "' AND "
' If Not IsNull(Me.combo4) Then strSql = strSql & "[....κοκ....
'..................
'..................
If strSql <> vbNullString Then strSql = Left(strSql, Len(strSql) - 5)
DoCmd.OpenReport "MINES", acViewReport, , strSql

End Sub

marios1984 23-12-09 07:54

Καλημερα...Tασο ευχαριστω δουλευει μια χαρα....εγω σαν μαθηματικος που ειμαι το πηρα με περιπτωσεις...ευχαριστω και παλι ολους...Και αν δεν τα πουμε ( λεμε τωρα ) καλες γιορτες!

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:03.

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


Search Engine Optimization by vBSEO 3.3.2