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

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 08-03-10, 17:22
amy Ο χρήστης amy δεν είναι συνδεδεμένος
Όνομα: Ανδρέας
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 12-11-2009
Περιοχή: Πάτρα
Μηνύματα: 41
Προεπιλογή σφάλμα στη συννένωση κριτηρίων

Εκτελώ τον παρακάτω κώδικα και μου βγάζει λάθος 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
Τα πεδία DateFinished και DatePickedUp είναι πεδία Ημερομηνία/Ώρα και το σφάλμα του βγάζει είναι "type mismatch"

Τελευταία επεξεργασία από το χρήστη Tasos : 08-03-10 στις 17:34.
Απάντηση με παράθεση
  #2  
Παλιά 08-03-10, 17:35
Το avatar του χρήστη Meteora
Συντονιστής
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 28-12-2008
Περιοχή: Θεσσαλονίκη
Μηνύματα: 1.033
Προεπιλογή

Δοκίμασε τη δομή :
stLinkCriteria = "DateFinished Is not Null And DatePickedUp Is Null"

Φιλικά / Νίκος Δ.
Απάντηση με παράθεση
  #3  
Παλιά 08-03-10, 19:05
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Καλησπέρα σε όλους!

Φίλοι μου η χρήση της 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  
Παλιά 08-03-10, 19:06
amy Ο χρήστης amy δεν είναι συνδεδεμένος
Όνομα: Ανδρέας
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 12-11-2009
Περιοχή: Πάτρα
Μηνύματα: 41
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από Meteora Εμφάνιση μηνυμάτων
Δοκίμασε τη δομή :
stLinkCriteria = "DateFinished Is not Null And DatePickedUp Is Null"

Φιλικά / Νίκος Δ.
thanks Νίκο.. αυτό ήταν
Απάντηση με παράθεση
  #5  
Παλιά 08-03-10, 19:19
amy Ο χρήστης amy δεν είναι συνδεδεμένος
Όνομα: Ανδρέας
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 12-11-2009
Περιοχή: Πάτρα
Μηνύματα: 41
Προεπιλογή

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

Φίλοι μου η χρήση της 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
Φιλικά

Τάσος
Δουλεύει τέλεια!!!
Όχι βέβαια πως αμφέβαλλα, αλλά την έλαβα ως μια αφορμή για να κοιτάξω την choose μπας και καταλάβω πως γίνεται η απλοποίηση
Επίσης ευχαριστώ Τάσο...
Απάντηση με παράθεση
  #6  
Παλιά 09-03-10, 17:25
amy Ο χρήστης amy δεν είναι συνδεδεμένος
Όνομα: Ανδρέας
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 12-11-2009
Περιοχή: Πάτρα
Μηνύματα: 41
Προεπιλογή Νέα συννένωση κατά choose

Βρε παιδιά προσπάθησα να απλοποιήσω με την 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
(από πάντα δεν χώνευα τις αποστρόφους, τα εισαγωγικά και τα άλλα σημεία πήξης :-))
Απάντηση με παράθεση
  #7  
Παλιά 09-03-10, 19:08
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Καλησπέρα!

Φίλε μου Ανδρέα, αν σου είναι εύκολο, ανέβασε ένα αρχείο-παράδειγμα για να
μπορέσουμε να δούμε καλύτερα τι συμβαίνει.

Με εκτίμηση

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #8  
Παλιά 10-03-10, 01:28
amy Ο χρήστης amy δεν είναι συνδεδεμένος
Όνομα: Ανδρέας
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 12-11-2009
Περιοχή: Πάτρα
Μηνύματα: 41
Προεπιλογή Νέα συννένωση κατά choose

Τάσο, ανεβάζω την test.mdb όπου έχωσα τα εναπομείναντα προβλήματά μου με την choose...
Συγκεκριμένα στα cmd10 kai 11 για τιμές 2 και 4 του group1 δεν μου εμφανίζονται εγγραφές, ενώ υπάρχουν... Είμαι σίγουρος ότι κάποια πατάτα έχω κάνει στη συννένωση με το κριτήριο isnull... επίσης να διευκρινίσω ότι όλα τα πεδία είναι date/time..
Συνημμένα Αρχεία
Τύπος Αρχείου: zip test.zip (34,0 KB, 22 εμφανίσεις)

Τελευταία επεξεργασία από το χρήστη amy : 11-03-10 στις 02:23.
Απάντηση με παράθεση
  #9  
Παλιά 13-03-10, 16:20
amy Ο χρήστης amy δεν είναι συνδεδεμένος
Όνομα: Ανδρέας
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 12-11-2009
Περιοχή: Πάτρα
Μηνύματα: 41
Προεπιλογή Νέα περίεργα προβλήματα στα κριτήρια

Καλησπέρα σε όλους...
Τελικά παρατηρώ ότι στην βάση που έχω ανεβάσει στο τελευταίο 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?
Απάντηση με παράθεση
  #10  
Παλιά 13-03-10, 19:47
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Αγαπητέ Ανδρέα, καλησπέρα!

Οι ημερομηνίες σε ερωτήματα 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") & "#" 
Επίσης το κριτήριο Is Null δρα σε πεδία που είναι Null ΟΧΙ σε πεδία που είναι vbNullString ("") .

Έτσι στην περίπτωση σου μάλλον θα πρέπει να χρησιμοποιήσεις κάτι τέτοιο:

Κώδικας:
 ([Fin] Is Null Or [Fin]="") 
Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 14-03-10 στις 17:05.
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
Παράμετρο κριτήριων σε ερώτημα vraxnakisg Access - Ερωτήσεις / Απαντήσεις 1 08-06-16 19:23
Σφάλμα σε κώδικα Dimitriss Access - Ερωτήσεις / Απαντήσεις 2 04-01-16 02:02
[Συναρτήσεις] Αναζήτηση 2 ή περισσότερων κριτηρίων mmanoum Excel - Ερωτήσεις / Απαντήσεις 4 31-12-15 16:13
[ Φόρμες ] Σφάλμα σε κώδικα xristos Access - Ερωτήσεις / Απαντήσεις 0 31-12-13 21:52
[ Φόρμες ] Σφάλμα: Table 'TempMSysAccessObjects' already exists xristos0718 Access - Ερωτήσεις / Απαντήσεις 2 13-04-10 10:25


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