| Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
![]() |
| | Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
| |
|
#1
| |||
| |||
|
Εκτελώ τον παρακάτω κώδικα και μου βγάζει λάθος MONO στην συννένωση των κριτηρίων is not Null AND is Null (to με κόκκινο font)... Δοκίμασα και διάφορους άλλους συνδιασμούς μετά το googlισμα αλλά και πάλι δεν έκανα τίποτα... οπότε οι έμπειροι ας βάλουν το χεράκι τους... Κώδικας: Private Sub cmd19_Click()
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "ERGASIES1"
If Me.group1.Value = 1 Then
DoCmd.OpenForm stDocName, acNormal
Else
If Me.group1.Value = 2 Then
stLinkCriteria = "DateFinished Is Null"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Else
If Me.group1.Value = 3 Then
stLinkCriteria = "DateFinished Is not Null"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Else
If Me.group1.Value = 4 Then
stLinkCriteria = "DateFinished Is not Null" And "DatePickedUp Is Null"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Else
if Me.group1.Value = 5 Then
stLinkCriteria = "[DateFinished]>=" & "#" & Me![Beginning Date] & "#" & _
"And [DateFinished]<=" & "#" & Me![Ending Date] & "#"
DoCmd.OpenForm stDocName, , , stLinkCriteria
End If
End If
End If
End If
End If
End Sub
Τελευταία επεξεργασία από το χρήστη Tasos : 08-03-10 στις 16:34. |
|
#2
| ||||
| ||||
| Δοκίμασε τη δομή : stLinkCriteria = "DateFinished Is not Null And DatePickedUp Is Null" Φιλικά / Νίκος Δ. |
|
#3
| ||||
| ||||
|
Καλησπέρα σε όλους! Φίλοι μου η χρήση της Choose αποτελεί μια γρήγορη λύση που μπορεί να χρησιμοποιηθεί είτε στη VBA είτε σε ερώτημα είτε σε υπολογισμένο πεδίο. Έτσι με τη χρήση της συνάρτησης αυτής, μπορούμε να απλοποιήσουμε τον κώδικα μας έτσι: Κώδικας: Private Sub cmd19_Click()
Dim stDocName As String, stLinkCriteria As String
stDocName = "ERGASIES1"
stLinkCriteria = _
Choose(Nz(Me.group1, 1), _
vbNullString, _
"IsNull([DateFinished])", _
"Not IsNull([DateFinished])", _
"Not IsNull([DateFinished]) And isNull([DatePickedUp])", _
"[DateFinished] Between #" & Me![Beginning Date] & "# And #" & Me![Ending Date] & "#")
DoCmd.OpenForm stDocName, , , stLinkCriteria
End Sub
Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
|
#4
| |||
| |||
| Παράθεση:
Όχι βέβαια πως αμφέβαλλα, αλλά την έλαβα ως μια αφορμή για να κοιτάξω την choose μπας και καταλάβω πως γίνεται η απλοποίηση Επίσης ευχαριστώ Τάσο... |
|
#5
| |||
| |||
|
Βρε παιδιά προσπάθησα να απλοποιήσω με την choose άλλον ένα κώδικα που είχα, αλλά δεν μου βγάζει σωστά αποτελέσματα (δηλαδή δεν βγάζει καθόλου αποτελέσματα) στις περιπτώσεις που έχω και isNull Κώδικας: Private Sub cmd31_Click()
Dim stDocName As String, stLinkCriteria As String
stDocName = "ERGASIES2"
stLinkCriteria = _
Choose(Nz(Me.group2, 1), _
"[Rec]=" & "'" & Me![cboMY] & "'", _
"[Rec]=" & "'" & Me![cboMY] & "'" & "And IsNull([Fin])", _
"[Fin]=" & "'" & Me![cboMY] & "'", _
"[Fin]=" & "'" & Me![cboMY] & "'" & "And isNull([Pic])", _
"[Fin] Between #" & Me![Beginning Date] & "# And #" & Me![Ending Date] & "#" & "And isNull([Pic])", _
"[Fin] Between #" & Me![Beginning Date] & "# And #" & Me![Ending Date] & "#")
DoCmd.OpenForm stDocName, , , stLinkCriteria
End Sub
|
|
#6
| ||||
| ||||
|
Καλησπέρα! Φίλε μου Ανδρέα, αν σου είναι εύκολο, ανέβασε ένα αρχείο-παράδειγμα για να μπορέσουμε να δούμε καλύτερα τι συμβαίνει. Με εκτίμηση Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
|
#7
| |||
| |||
|
Τάσο, ανεβάζω την test.mdb όπου έχωσα τα εναπομείναντα προβλήματά μου με την choose... Συγκεκριμένα στα cmd10 kai 11 για τιμές 2 και 4 του group1 δεν μου εμφανίζονται εγγραφές, ενώ υπάρχουν... Είμαι σίγουρος ότι κάποια πατάτα έχω κάνει στη συννένωση με το κριτήριο isnull... επίσης να διευκρινίσω ότι όλα τα πεδία είναι date/time.. Τελευταία επεξεργασία από το χρήστη amy : 11-03-10 στις 01:23. |
|
#8
| |||
| |||
|
Καλησπέρα σε όλους... Τελικά παρατηρώ ότι στην βάση που έχω ανεβάσει στο τελευταίο post υπάρχει το εξής περίεργο πρόβλημα... Ακόμα και για τις επιλογές 1 και 3 της ομάδας επιλογών, τα αποτελέσματα δεν είναι σωστά στις περιπτώσεις που βάζω άσχετες ημερομηνίες στα πεδία "από" και "έως" Και για να γίνω πιό σαφής, όταν ζητάω ημερομηνίες που υπάρχουν στις εγγραφές τότε και το 1 και το 3 δίνει σωστά αποτελέσματα.. αν όμως βάλω ανύπαρκτες ημερομηνίες τότε βγάζει αποτελέσματα ενώ δεν υπάρχουν στην πραγματικότητα... Δηλαδή ενώ με επιλεγμένο το "όλες" ή το "τελειωμένες" και με ορισμό ημερομηνιών πχ από 1/2/2010 έως 28/2/2010 το cmd11 μου δίνει εγγραφές που πράγματι πληρούν τα κριτήρια, αν βάλω όμως από 1/3/2010 έως 13/3/2010 τόττε μου δίνει πάλι καμια πενηνταριά εγγραφές που όμως δεν ανταποκρίνονται στο κριτήριο γιατί στην πραγματικότητα δεν υπάρχει ούτε μία εγγραφή για τον 3ο του 2010... Κάντε καμμια δοκιμή στην πράξη επί του test.zip αν δεν έγινα πλήρως κατανοητός... Να σημειώσω ότι αν τα κριτήρια τα βάλλω σε source query τότε όλα πάνε ρολόι... ΥΓ Για τις περιπτώσεις 2 και 4 να υποθέσω ότι κανένας δεν ασχολήθηκε με ποιον τρόπο θα συννενωθούν τα κριτήρια για να είναι αποδεκτά από την choose? |
|
#9
| ||||
| ||||
|
Αγαπητέ Ανδρέα, καλησπέρα! Οι ημερομηνίες σε ερωτήματα SQL όπου ανήκουν και τα φίλτρα, πρέπει να έχουν κάποια συγκεκριμένη μορφή (αμερικάνικη μορφή ημερομηνίας) προκειμένου να αναγνωριστούν σωστά. Μια τέτοιου είδους μετατροπή γίνεται αυτόματα από την Access όταν δημιουργούμε Ερώτημα ή φίλτρο χειροκίνητα. Μέσα από τη VBA όμως θα πρέπει να είμαστε συνεπέστατοι σε ορίσματα ημερομηνιών. Για παράδειγμα, ο ορισμός: Κώδικας: "[DateReceived] Between #" & Me![Beginning Date] & "# And #" & Me![Ending Date] & "#" Κώδικας: "[DateReceived] Between #" & Format(Me![Beginning Date], "m\/d\/yyyy") & "# And #" & Format(Me![Ending Date], "m\/d\/yyyy") & "#" Κώδικας: "[DateReceived] Between #" & Format(Me![Beginning Date], "yyyy\/m\/d") & "# And #" & Format(Me![Ending Date], "yyyy\/m\/d") & "#" Έτσι στην περίπτωση σου μάλλον θα πρέπει να χρησιμοποιήσεις κάτι τέτοιο: Κώδικας: ([Fin] Is Null Or [Fin]="") Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών Τελευταία επεξεργασία από το χρήστη Tasos : 14-03-10 στις 16:05. |
|
#10
| |||
| |||
|
Επίσης καλησπέρα τάσο... Φυσικά για ακόμα μια φορά έχεις δίκιο, αλλά και γω τι να πω μ' αυτές τις αμερικανιές... Που να το'ξερα εκεινα τα παλιά καλά χρόνια που ως μαθητής και φοιτητής κάναμε αντιαμερικανικές διαδηλώσεις , να κρατάμε και ένα πανώ "Λευτεριά και Ανεξαρτησία στη VBA" ;-)Επίσης και το Is Null συμπεριφέρεται επιλεκτικά στα πεδία.. Δηλαδή το Κώδικας: "[DateReceived] Between #" & Format(Me![Beginning Date], "m\/d\/yyyy") & "# And #" & Format(Me![Ending Date], "m\/d\/yyyy") & "#" & "And [DateFinished] Is Null " Κώδικας: "[DateReceived] Between #" & Format(Me![Beginning Date], "m\/d\/yyyy") & "# And #" & Format(Me![Ending Date], "m\/d\/yyyy") & "#" & "And [Fin] Is Null " Thanks και καλό σαββατοκύριακο... |
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
| Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
| Παράμετρο κριτήριων σε ερώτημα | vraxnakisg | Access - Ερωτήσεις / Απαντήσεις | 1 | 08-06-16 18:23 |
| Σφάλμα σε κώδικα | Dimitriss | Access - Ερωτήσεις / Απαντήσεις | 2 | 04-01-16 01:02 |
| [Συναρτήσεις] Αναζήτηση 2 ή περισσότερων κριτηρίων | mmanoum | Excel - Ερωτήσεις / Απαντήσεις | 4 | 31-12-15 15:13 |
| [ Φόρμες ] Σφάλμα σε κώδικα | xristos | Access - Ερωτήσεις / Απαντήσεις | 0 | 31-12-13 20:52 |
| [ Φόρμες ] Σφάλμα: Table 'TempMSysAccessObjects' already exists | xristos0718 | Access - Ερωτήσεις / Απαντήσεις | 2 | 13-04-10 09:25 |
Η ώρα είναι 10:46.



, να κρατάμε και ένα πανώ "Λευτεριά και Ανεξαρτησία στη VBA"
;-)
Υβριδικός τρόπος

