Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
SQL Transaction
Kalimera sas, signomi gia ta greeklish alla to pc edo den exei Ellinika. To provlima mou einai to Eksis. Exo 2 pedia ena einai Date Kai to allo einai Time. Anebazontas tin basi se SQL Server den douleuei pleon to filtro me Date Kai time. Yparxei kapoios tropos na metatrepo auta ta 2 pedia os ena Kai na dino filtro px 06.06.2016 22:15 eos 07.06.2016 06:15 Kai na leitourgei? Mexri tora APO to erotima tis Access leitourgouse kanonika. Tora me SQL exo provlima. Mporei kanenas na boithisei?? Eyxaristo. |
#2
| |||
| |||
Update: Κατάφερα με την εντολή CAST να φιλτράρω την ημερομηνία. Ακόμα αντιμετωπίζω πρόβλημα με την ώρα μετά τις 00:00 το βράδυ και δεν κατάφερα επίσης να ενώσω τα 2 πεδία.
|
#3
| ||||
| ||||
Καλημέρα Δοκίμασα να ενώσω τα πεδία [dat] (ημερομηνία 08/06/2016) και [tim] (ώρα 10:28) και νομίζω ότι το αποτέλεσμα είναι το "επιθυμητό". Κώδικας: Format([Dat] & " " &[Tim],"dd/mm/yyyy\_hh:nn") Ζήτησα μετά να με πει το αποτέλεσμα της σχέσης : Κώδικας: ? Format([Dat] & " " &[Tim],"dd/mm/yyyy\_hh:nn") > "08/06/2016_10:29" Δεν έχω ιδέα αν ό,τι αναρτώ θα σε βοηθήσει... αλλά θα ήθελα να βρεις λύση Με εκτίμηση / Νίκος Α! Γιατί δεν χρησιμοποιείς τη συνάρτηση Now() και αντί αυτής τις date() και Time() ; |
#4
| |||
| |||
Σε ευχαριστώ πολύ για το ενδιαφέρον σου. Θα το δοκιμάσω αυτό και θα ενημερώσω εάν γίνει η δουλειά. Η εντολή Now() στον SQL Server είναι GETDATE() και έχω πρόβλημα στην ώρα! Αν καταφέρω να διαμορφώσω και την ώρα με την εντολή Convert ή την εντολή Cast θα είμαι εντάξει. Προς το παρών χρησιμοποιώ "πίσω πόρτα" για να πάρω αυτό που θέλω. Έκανα ένα ερώτημα στην access που "κοιτάει" σε ODBC πίνακα, και απο εκεί φιλτράρω την ημερομηνία με την ώρα κανονικά. Όμως δεν είναι ο σωστός τρόπος και δεν θέλω να κάνω πρόχειρες δουλειές, γι αυτό πρέπει να βρώ μια λύση. 1000 ευχαριστώ και πάλι. |
#5
| |||
| |||
Καλημέρα στην παρέα Χρήστο, ίσως βοηθήσουν τα παρακάτω: 1) Ανεξάρτητα από την εμφάνιση, η ημερομηνία μαζί με την ώρα αποθηκεύονται ως αριθμός. Ο αριθμός αυτός εκφράζει τον αριθμό των ημερών και το τμήμα ημέρας που πέρασε από μία χρονική στιγμή που θεωρείται αφετηρία (1/1/1900 00:00:00) μέτρησης του χρόνου. Για παράδειγμα ο αριθμός 42522,9659259259 δείχνει ότι πέρασαν από την αφετηρία 42522 ημέρες και 0,9659259259 ημέρας. Το δεκαδικό μέρος με κατάλληλες μετατροπές (πολλαπλασιασμό με 24 κλπ) μπορεί να εκφραστεί σε ώρες λεπτά και δευτερόλεπτα. Αν στο άμεσο παράθυρο εκτέλεσης πληκτρολογήσουμε: ?Cdate(42522.9659259259), θα πάρουμε την ημερομηνία και ώρα στην οποία αντιστοιχεί: 1/6/2016 11:10:56 μμ 2) Συνέπεια των παραπάνω: Δε χρειαζόταν να έχεις δύο πεδία, ένα για την αποθήκευση της ημερομηνίας (πχ dt ακέραιο μέρος) και ένα (πχ tm δεκαδικό μέρος). Για την περίπτωσή σου δοκίμασε τα κριτήρια: Για την access: dt+tm Between #6/6/2016 22:15:00# And #7/6/2016 06:15:00# Για τον SQL Server: dt+tm Between CAST(‘20160606 22:15:00’ as datetime) And CAST(‘20160607 06:15:00’). Φιλικά/Γιώργος Τελευταία επεξεργασία από το χρήστη kapetang : 08-06-16 στις 15:43. Αιτία: αντί And CAST(‘20160706 06:15:00’), And CAST(‘20160607 06:15:00’). |
#6
| |||
| |||
Μπορώ με αυτήν την εντολή που μου έγραψες να πώ πχ dt+tm Between CAST(dbo.Data.Date as datetime) And CAST(dbo.Data.Time) ?? Θα δουλέψει έτσι?? Γιατί αντιμετωπίζω πρόβλημα όταν ζητάω να μου φέρει πχ Between 06.06.2016 22:15 and 07.06.2016 06:15 μου επιστρέφει κενό. Ενώ αν δώσω Between 06.06.2016 22:15 and 07.06.2016 23:59 δουλεύει μια χαρά Με έχει μπερδέψει τελείως. Ή δεν ξέρω επειδή τραβάω τα δεδομένα στο Excel μήπως απο εκεί μπορώ να κάνω καμία πατέντα. Καινούρια χωράφια (SQL), καινούρια προβλήματα. |
#7
| |||
| |||
Χρήστο δεν ξέρω τι προσπαθείς να κάνεις. Ανακατεύεις, Access, SQL server και τώρα πρόσθεσες και το Excel. Στο προηγούμενο μήνυμά μου εξήγησα πως αποθηκεύεται η ημερομηνία και η ώρα και έδωσα και δύο παραδείγματα. Τα δοκίμασες; Η έκφραση dt+tm Between CAST(dbo.Data.Date as datetime) And CAST(dbo.Data.Time) δεν έχει τη δομή των παραδειγμάτων και προφανώς δε θα δουλέψει. Τελευταία επεξεργασία από το χρήστη kapetang : 08-06-16 στις 14:12. |
#8
| |||
| |||
Αγαπητέ Γιώργο να σου εξηγήσω την κατάσταση ώς έχει. Μέχρι τώρα είχα μία βάση στην Access κοινόχρηστη ώς BackEnd και τα τερματικά δούλευαν με το FrondEnd χωρίς πρόβλημα. Απο εκεί αντλούσα δεδομένα στο Excel για να δημιουργώ κάθε ώρα κάποια στατιστικά και διαγράμματα μιάς και η Access δεν φημίζεται γι' αυτόν τον λόγο. Όμως λόγω του όγκου των δεδομένων (Περίπου 4000 κάθε μέρα) και λόγω το ότι οι χρήστες αυξήθηκαν, αποφασίσαμε να ανεβάσουμε την βάση σε SQL Server για ταχύτητα και μεγαλύτερη όσο γίνεται ασφάλεια των δεδομένων. Η μεταφορά της βάσης έγινε με απόλυτη επιτυχία και μπορώ να πω με σιγουριά ότι και η ταχύτητα αυξήθηκε. Από την καινούρια βάση πλέον τραβάω τα δεδομένα στο Excel για τον ίδιο λόγο. Όλα κατεβαίνουν κανονικά πλην όμως της ώρας, που ενώ εμφανίζεται κανονικά δεν λειτουργεί όπως λειτουργούσε όταν η βάση ήταν με την Access. Με αποτέλεσμα να μπορώ να φιλτράρω ώρες μόνο μέσα στην ίδια μέρα. Λόγω το ότι χρειάζομαι κάθε ώρα στατιστικά έχω πρόβλημα όταν πρέπει να ζητήσω δεδομένα από τις 23:15 της ίδιας μέρας μέχρι και τις 00:15 της επόμενης μέρας, ή μέχρι τις 06:15 της επόμενης που τελειώνει η νυχτερινή βάρδια. Δεν μπορώ να καταλάβω αυτήν να μου επιτραπεί η έκφραση ηλιθιότητα της βάσης του SQL Server με τις μετατροπές ημερομηνιών και ώρας. Και από ότι βλέπω στο Internet αντιμετωπίζουν ή αντιμετώπισαν αρκετά άτομα το ίδιο πρόβλημα με εμένα. Με εκτίμηση Χρήστος. |
#9
| |||
| |||
Καλημέρα Χρήστο, μετέτρεψα τη βάση του προηγούμενου μηνύματος σε βάση SQL (*.mdf). Το συνημμένο αρχείο Excel παίρνει δεδομένα από το αρχείο *.mdf. Δες το σχετικό φιλτράρισμα. |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Η ώρα είναι 14:11.