Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| ||||
| ||||
Ημερομηνία
Καλησπέρα... Δεν μπορώ να εξηγήσω πως η εντολή : Κώδικας: DoCmd.RunSQL "insert into tbldanio ([imeraarxi]) values (#" & Format(Date, "dd/mm/yyyy") & "#)" Τι φταίει ; Αν πάλι γράψω : Κώδικας: DoCmd.RunSQL "insert into tbldanio ([imeraarxi]) values (#" & Format(Date, "yyyy/mm/dd") & "#)" και τα περίεργα δεν σταματουν εδώ... Νίκος Δ. Υστερολόγιο : Δέν έκανα δοκιμή σε άλλο υπολογιστή. |
#2
| |||
| |||
Φίλε Νίκο Καλησπέρα Ο υπολογιστής μου, που είναι ρυθμισμένος να εμφανίζει την ημερομηνία στην ελληνική μορφή («dd/mm/yyyy»), παρουσιάζει το ίδιο πρόβλημα. Ύστερα από δοκιμές κατέληξα ότι, όταν δημιουργούμε στον κώδικα εκφράσεις με ημερομηνίες (πχ σε ερωτήματα, φίλτρα), θα πρέπει να χρησιμοποιούμε μορφοποίηση ΗΠΑ («mm/dd/yyyy»). Στα αποθηκευμένα ερωτήματα η χρησιμοποίηση της ελληνικής μορφοποίησης ερμηνεύεται σωστά και δε δημιουργεί πρόβλημα. Επειδή το θέμα είναι σοβαρό πιστεύω ότι απαιτεί διεξοδικότερη παρουσίαση. Γιώργος |
#3
| ||||
| ||||
Γιώργο μου σε ευχαριστώ. Κάτι με θυμίζει αυτό το Format που αναφέρεις... Ίσως μια συζήτηση στο παρόν Forum... Δοκίμασα την πρότασή σου σε μια εφαρμογή μου, όπου τα περιεχόμενα του πίνακα tbldanio τα εμφανίζω σε φόρμα. Η μορφή της ημερομηνίας στη φόρμα είναι στη γνώριμη έκφραση dd/mm/yyyy οπότε έφτασα σε επιθυμητό αποτέλεσμα ! Η εντολή : Κώδικας: DoCmd.RunSQL "INSERT INTO tbldanio ([kodbiblio],[imeraarxi],[imeratelos],[idpelati],[epistrofi]) VALUES (" & x & _ ", #" & Format(Date, "yyyy/mm/dd") & "#, #" & Format(DateAdd("d", 15, Date), "yyyy/mm/dd") & "# ," & c & ", '" & d & "')"
Αν στον υπολογιστή σου ζητήσεις αποθήκευση με Format yyyy/mm/dd τι αποτέλεσμα έχεις στον πίνακα ; Φιλικά / Νίκος Δ. Τελευταία επεξεργασία από το χρήστη Tasos : 11-11-10 στις 14:18. Αιτία: Προσθήκη πληροφοριών... |
#4
| |||
| |||
Καλησπέρα Νίκο τα παρακάτω ίσως βοηθήσουν στην εξήγηση των προβλημάτων που δημιουργούν οι ημερομηνίες και οι ώρες, σε σχέση και με τις τοπικές ρυθμίσεις. Στην access, αλλά και γενικά, η ημερομηνία και η ώρα σε μία χρονική στιγμή ισούται με το χρόνο που πέρασε από μία άλλη, που θεωρείται αφετηρία. Ο χρόνος αυτός μετράται σε μέρες και εκφράζεται με ένα δεκαδικό αριθμό διπλής ακρίβειας στον οποίο το ακέραιο μέρος αντιστοιχεί στην ημερομηνία και το δεκαδικό στην ώρα. Οι ημερομηνίες και οι ώρες στον υπολογιστή ουσιαστικά αποθηκεύονται ως δεκαδικοί αριθμοί. Επίσης οι πράξεις με ημερομηνίες και ώρες είναι πράξεις με δεκαδικούς. Στην καθημερινή ζωή, ανάλογα και με την περιοχή, η ημερομηνία και η ώρα εκφράζεται με μορφές «dd/mm/yyyy» (πχ Ελλάδα), «mm/dd/yyyy»(πχ Αμερική) και όχι ως δεκαδικός αριθμός. Αυτό δημιουργεί το ερώτημα σε ποια μορφή πρέπει να δώσουμε την ημερομηνία και την ώρα για να αποθηκευτεί ο σωστός δεκαδικός; Από ότι κατάλαβα σε ένα υπολογιστή ρυθμισμένο στην ελληνική ημερομηνία πρέπει:
Φιλικά/Γιώργος ΥΓ Κατά τη γνώμη μου απαιτείται μια αναλυτικότερη παρουσίαση από κάποιον που γνωρίζει καλά το θέμα. |
#5
| |||
| |||
Καλημέρα στην παρέα Στη βάση δεδομένων που επισυνάπτεται παρουσιάζονται οι συνηθέστερες μορφές ημερομηνίας μαζί με τις εκφράσεις που πρέπει να χρησιμοποιούνται, ώστε οι ημερομηνίες να αποθηκεύονται και να εμφανίζονται σωστά. Αφορμή για τη δημιουργία της αποτέλεσε σχετικό μήνυμα του φίλου μου Νίκου (meteora). Οι εκφράσεις (τύποι) προέκυψαν από δοκιμές του Νίκου και δικές μου και αφορούν συστήματα (PC) στα οποία η ημερομηνία έχει καθοριστεί (στις τοπικές ρυθμίσεις) στη μορφή (dd/mm/yyyy). Η ΒΔ αποτελείται από μία φόρμα «frmDates» δεσμευμένη στον πίνακα «tblDates» και ένα ερώτημα προσθήκης «qryAddDates». Με τη βοήθεια των στοιχείων ελέγχου της φόρμας μπορούμε να προσθέσουμε στον πίνακα ημερομηνίες, με διαφορετικές μορφοποιήσεις και να τις εμφανίσουμε στο δεσμευμένο πλαίσιο κειμένου, στην ελληνική μορφοποίηση «dd/mm/yyyy». Στη φόρμα επίσης μπορούν να γίνουν και κάποιες πράξεις με ημερομηνίες και να εμφανιστούν τα αποτελέσματα. Η λειτουργικότητα της φόρμας οφείλεται στο ερώτημα προσθήκης «qryAddDates», στους τύπους που υπάρχουν στην προέλευση στοιχείου στα τελευταία πλαίσια κειμένου που εμφανίζουν τα αποτελέσματα των πράξεων με ημερομηνίες και στον παρακάτω κώδικα. Κώδικας: Private Sub cmdDMY2_Click() 'Προσθήκη ημερομηνίας με πρόταση SQL 'Η μορφή της ημερομηνίας από ελληνική μετατρέπεται σε αμερικάνικη DoCmd.RunSQL "Insert Into tblDates Values (#" & Format(Me!txtDMY2, "mm/dd/yyyy") & "#);" Me.Requery Me.Recordset.MoveLast End Sub Private Sub cmdMDY_Click() 'Προσθήκη ημερομηνίας με πρόταση SQL 'Η μορφή της ημερομηνίας επειδή είναι σε μορφή ΗΠΑ δε μετατρέπεται DoCmd.RunSQL "Insert Into tblDates Values (#" & Me!txtMDY & "#);" Me.Requery Me.Recordset.MoveLast End Sub Private Sub cmdYMD_Click() 'Προσθήκη ημερομηνίας με πρόταση SQL 'Η μορφή της ημερομηνίας yyyy/mm/dd αναγνωρίζεται σωστά χωρίς μετατροπή DoCmd.RunSQL "Insert Into tblDates Values (#" & Me!txtYMD & "#);" Me.Requery Me.Recordset.MoveLast End Sub Φιλικά/Γιώργος |
#6
| ||||
| ||||
Καλησπέρα σε όλους μας... Γιώργο, δουλειές σαν αυτή που μας πρόσφερες, τις χαρακτηρίζω χρόνια τώρα ως "Μουσκεμένο παξιμάδι", έχοντας-κάθε φορά- στο νου μου την μάνα που μασάει την τροφή για να τη προσφέρει στο μωρό της... Θερμά σε ευχαριστώ / Φιλικά Νίκος Δ. |
#7
| |||
| |||
Φίλε Νίκο στους επαίνους σου πάντα γενναιόδωρος. Ευχαριστώ.
|
#8
| ||||
| ||||
Καλησπέρα Νίκο και Γιώργο! Μπορούμε να το κάνουμε και έτσι: Κώδικας: Sub test() CurrentDb.Execute "INSERT INTO [tbldanio] ( [imeraarxi] ) SELECT Date() AS TheDate FROM [tbldanio]", dbFailOnError End Sub Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
#9
| |||
| |||
Καλησπέρα στην παρέα Φίλε Τάσο, ο Νίκος και εγώ στα προηγούμενα μηνύματα ασχοληθήκαμε με τον περίεργο χειρισμό των ημερομηνιών από την access, στα σύστημα (PC) που είναι ρυθμισμένα στα ελληνικά. Η περίεργη αυτή συμπεριφορά εμφανίζεται και στον κώδικα που προτείνεις: Αν τρέξουμε τη διαδικασία η τρέχουσα ημερομηνία (Date) αποθηκεύεται σωστά, αλλά όπως είναι φυσικό αποθηκεύονται πολλές εγγραφές, όσες είναι οι αρχικές εγγραφές του πίνακα (From tbldanio). Η CurrentDb.Execute "INSERT INTO [tblDates] ( [TestDates] ) values(" & Date & ")", dbFailOnError, αποθηκεύει μία εγγραφή αλλά η ημερομηνία που αποθηκεύεται (αυτή εμφανίζεται όταν ανοίγω τον πίνακα) είναι 30/12/1899. Μόνο η εντολή: CurrentDb.Execute "INSERT INTO [tblDates] ( [TestDates] ) values(#" & Format(Date, "mm/dd/yyyy") & "#)", dbFailOnError, δίνει σωστό αποτέλεσμα Υπάρχει εξήγηση; Φιλικά/Γιώργος Τελευταία επεξεργασία από το χρήστη kapetang : 12-11-10 στις 19:42. Αιτία: συμπλήρωση |
#10
| ||||
| ||||
Καλησπέρα φίλε μου! 30/12/1899 = 0 επειδή: Μέσα στη συμβολοσειρά που (που η γλώσσα προγραμματισμού είναι SQL και όχι VB) χρησιμοποιείς το Date που δεν αναγνωρίζεται από την SQL άρα επιστρέφεται η μηδενική τιμή ( 0 ). Δοκίμασε: CurrentDb.Execute "INSERT INTO [tblDates] ( [TestDates] ) values(Date())", dbFailOnError Τα λέμε... Τάσος
__________________ Για να απαντούμε στις ερωτήσεις σας εύστοχα, παρακαλούμε, επεξεργαστείτε τα πεδία στις Χρήσιμες πληροφορίες |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[Excel07] Ημερομηνία στο Excel | George R | Excel - Ερωτήσεις / Απαντήσεις | 4 | 05-01-17 07:23 |
[Γενικά] Σχετικά με ημερομηνία | xristos | Excel - Ερωτήσεις / Απαντήσεις | 7 | 09-01-14 13:16 |
[ Φόρμες ] Ημερομηνία με Calendar | stavross | Access - Ερωτήσεις / Απαντήσεις | 4 | 29-10-12 18:38 |
[ Φόρμες ] Ημερομηνία σε φόρμα | xristos | Access - Ερωτήσεις / Απαντήσεις | 6 | 22-04-12 18:56 |
[Μορφοποίηση] Ημερομηνία και Μορφοποίηση | ikaros80 | Excel - Ερωτήσεις / Απαντήσεις | 2 | 06-04-11 22:23 |
Η ώρα είναι 21:12.