Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
Πρόβλημα με ημερομηνία σε sql ερώτημα
Καλημέρα στην κοινότητα. Θα ήθελα την βοήθειά σας. Έχω το παρακάτω sql ερώτημα: Κώδικας: sql = "SELECT * FROM ΠΙΝΑΚΑ" _ & " WHERE ΠΕΔΙΟ_Α= '" & cntro & "' AND" _ & " ΠΕΔΙΟ_Β='" & kdkos & "' AND ΠΕΔΙΟ_Γ='" & eds & "' AND" _ & " ΠΕΔΙΟ_Δ='" & tm & "' AND ΗΜΕΡΟΜΗΝΙΑ= #" & Format(DDate, "dd/mm/yyyy") & "#" Συντακτικά δε βλέπω κάποιο λάθος. Έχει κάποιος φίλος κάποια ιδέα τι μπορεί να φταίει; Επίσης έχω δοκιμάσει και αυτή την εκδοχή αλλά και πάλι χωρίς αποτέλεσμα. Κώδικας: sql = "SELECT * FROM ΠΙΝΑΚΑ" _ & " WHERE ΠΕΔΙΟ_Α= '" & cntro & "' AND" _ & " ΠΕΔΙΟ_Β='" & kdkos & "' AND ΠΕΔΙΟ_Γ='" & eds & "' AND" _ & " ΠΕΔΙΟ_Δ='" & tm & "' AND ΗΜΕΡΟΜΗΝΙΑ= DateValue(DDate) & "#" Ευχαριστώ. |
#2
| ||||
| ||||
Καλησπέρα Παράθεση:
Η ημερομηνία δεν είναι string, αλλά τύπου date. Τι σε απαντάει access όταν ρωτάς -εκεί στο Immediate παράθυρο Κώδικας: Format(DDate, "dd/mm/yyyy") Εδώ να εστιάσεις την προσοχή σου. |
#3
| ||||
| ||||
Καλησπέρα σε όλους! Δημήτρη στην SQL, η ημερομηνία σ' αυτή τη μορφή: "d/m/yyyy" δεν αναγνωρίζεται σωστά. Δοκίμασε: Κώδικας: sql = "SELECT * FROM ΠΙΝΑΚΑ" _ & " WHERE ΠΕΔΙΟ_Α= '" & cntro & "' AND" _ & " ΠΕΔΙΟ_Β='" & kdkos & "' AND ΠΕΔΙΟ_Γ='" & eds & "' AND" _ & " ΠΕΔΙΟ_Δ='" & tm & "' AND ΗΜΕΡΟΜΗΝΙΑ= #" & Format(DDate, "m\/d\/yyyy") & "#" Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών Τελευταία επεξεργασία από το χρήστη Tasos : 11-02-20 στις 20:30. |
#4
| |||
| |||
Σας ευχαριστώ για τις απαντήσεις σας. Το πρόβλημα λύθηκε μετατρέποντας την ημερομηνία στην μορφή yyyy/mm/dd., δηλαδή Format (DateValue(DDate), "yyyy/mm/dd"). |
#5
| ||||
| ||||
Αγαπητέ Δημήτρη θέλω αρχικά να με συγχωρέσεις για την παρέμβαση μου. Δεν το συνηθίζω αλλά η ορθότητα της λύσης το επιβάλλει. . Η μορφή "m/d/yyyy" ή για περισσότερη συμβατότητα "m\/d\/yyyy" λειτουργεί στην SQL ακριβώς όπως η "yyyy/mm/dd" ή η "yyyy/m/d". Πές μου αν θέλεις: Γιατί χρησιμοποιείς την DateValue ?? Θα είχε νόημα να τη χρησιμοποιήσεις αν το πεδίο DDate είναι τύπου κειμένου και όχι ημερομηνίας. Αν όντως είναι έτσι, οφείλω να αναφέρω ότι ακόμα και αν λύθηκε το πρόβλημα σου, δεν μπορεί κανείς να στηριχτεί στη συναρτηση DateValue που άλλα δείχνει σε αγγλοαμερικανικό υπολογιστή και άλλα στον ελληνικό. Τι εννοώ: Σε υπολογιστή με αγγλική(USA) μορφή ημερομηνίας η DateValue("12/1/2020") θα επιστρέψει 1 Δεκεμβρίου 2020 ενώ υπολογιστή με ελληνική μορφή ημερομηνίας η DateValue("12/1/2020") θα επιστρέψει 12 Ιανουαρίου 2020 Αν πάλι το πεδίο DDate είναι τύπου ημερομηνίας η DateValue δεν χρειάζεται. Ευχαριστώ Με εκτίμηση Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
#6
| |||
| |||
Αγαπητέ Τάσο σε ευχαριστώ και πάλι για το σχόλιο σου. Η DDate είναι τύπου string (κειμένου) και το αναφέρω στο τέλος της αρχικής μου ανάρτησης, για αυτό χρησιμοποίησα την DateValue. Το επίπεδο μου στη VBA είναι μέτριο θα έλεγα, ως αυτοδίδακτος, εάν υπάρχει κάποια ορθότερη λύση από αυτή πολύ ευχαρίστως να τη χρησιμοποιήσω για πάω και ένα βήμα πιο πέρα. Και πάλι ευχαριστώ για βοήθεια σας. |
#7
| ||||
| ||||
Συγνώμη Δημήτρη. Δεν πρόσεξα ότι η DDate ήταν τύπου κειμένου. Ωστόσο για περισσότερη συμβατότητα ειδικά αν το πρόγραμμα μας πρόκειται να τρέξει σε άγνωστο υπολογιστικό περιβάλλον όσον αφορά τη μετατροπή της συμβολοσειράς DDate και αφού γνωρίζουμε ότι η μορφή ημερομηνίας του πεδίου DDate είναι "d/M/yyyy" ή dd/MM/yyyy", είναι προτιμότερο να χρησιμοποιήσουμε μια συνάρτηση φτιαγμένη στα μέτρα μας. Παράδειγμα: Κώδικας: Private Function ConvertToSQLDate(DateString As Variant) As String Dim DateParts() As String If InStr(1, DateString, "/") = 0 Then ConvertToSQLDate = "IS NULL" Exit Function End If DateParts = Split(DateString, "/") ConvertToSQLDate = "= #" & DateParts(1) & "\/" & DateParts(0) & "\/" & DateParts(2) & "#" ' Debug.Print ConvertToSQLDate End Function 'Χρήση της συνάρτησης: Dim strSQL As String strSQL = "SELECT * FROM ΠΙΝΑΚΑ" _ & " WHERE ΠΕΔΙΟ_Α= '" & cntro & "' AND" _ & " ΠΕΔΙΟ_Β='" & kdkos & "' AND ΠΕΔΙΟ_Γ='" & eds & "' AND" _ & " ΠΕΔΙΟ_Δ='" & tm & "' AND ΗΜΕΡΟΜΗΝΙΑ " & ConvertToSQLDate(dDate)
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
#8
| |||
| |||
Ευχαριστώ Τάσο για τη χρήσιμη παρατήρησή σου. Θα κάνω τη σχετική αλλαγή.
|
#9
| |||
| |||
Αγαπητέ Τάσο έκανα την αλλαγή που πρότεινες αλλά με μία μικρή τροποποίηση γιατί μου έδινε Runtime error 3075. Άλλαξα το : ConvertToSQLDate = "= #" & DateParts(1) & "/" & DateParts(0) & "/" & DateParts(2) & "#" Με την παραπάνω αλλαγή τρέχει κανονικά. Ευχαριστώ. |
#10
| ||||
| ||||
Να είσαι καλά Δημήτρη μου! Το σφάλμα 3075 προκαλείται όταν η μεταβλητή strSQL χρησιμοποιηθεί για φιλτράρισμα φόρμας ή έκθεσης. Έπρεπε να το διευκρινίσω. Αν η strSQL με τα διαχωριστικά "\/" χρησιμοποιηθεί για ερώτημα θα λειτουργήσει κανονικά. Το έχω κάνει πάρα πολλές φορές. Καλή συνέχεια!
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[ Ερωτήματα ] πρόβλημα σε ερώτημα | blxnikos | Access - Ερωτήσεις / Απαντήσεις | 0 | 10-01-20 16:08 |
Πρόβλημα με ερώτημα | mikekal1oo | Access - Ερωτήσεις / Απαντήσεις | 4 | 30-03-16 19:19 |
[ Εκθέσεις ] Πρόβλημα στο άνοιγμα έκθεσης με κριτήριο την ημερομηνία | ΤΙΜΟΣ | Access - Ερωτήσεις / Απαντήσεις | 3 | 10-11-15 09:17 |
[ Εκθέσεις ] Πρόβλημα με συνάρτηση format και ημερομηνία. | George Thassos | Access - Ερωτήσεις / Απαντήσεις | 5 | 18-07-15 14:41 |
Πρόβλημα σε ερώτημα! | naxos | Access - Ερωτήσεις / Απαντήσεις | 2 | 11-10-12 14:27 |
Η ώρα είναι 07:28.