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

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 10-11-10, 15:35
Το avatar του χρήστη Meteora
Συντονιστής
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 28-12-2008
Περιοχή: Θεσσαλονίκη
Μηνύματα: 1.033
Προεπιλογή Ημερομηνία

Καλησπέρα...
Δεν μπορώ να εξηγήσω πως η εντολή :
Κώδικας:
DoCmd.RunSQL "insert into tbldanio ([imeraarxi]) values (#" & Format(Date, "dd/mm/yyyy") & "#)"
γράφει στο πεδίο [imeraarxi] σήμερα (10/11/2010) την τιμή 11/10/2010 !!

Τι φταίει ;

Αν πάλι γράψω :
Κώδικας:
DoCmd.RunSQL "insert into tbldanio ([imeraarxi]) values (#" & Format(Date, "yyyy/mm/dd") & "#)"
τότε γράφει τη πρέπουσα δηλ. 10/11/2010 !!

και τα περίεργα δεν σταματουν εδώ...
Νίκος Δ.

Υστερολόγιο : Δέν έκανα δοκιμή σε άλλο υπολογιστή.
Απάντηση με παράθεση
  #2  
Παλιά 10-11-10, 18:26
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Φίλε Νίκο Καλησπέρα

Ο υπολογιστής μου, που είναι ρυθμισμένος να εμφανίζει την ημερομηνία στην ελληνική μορφή («dd/mm/yyyy»), παρουσιάζει το ίδιο πρόβλημα.
Ύστερα από δοκιμές κατέληξα ότι, όταν δημιουργούμε στον κώδικα εκφράσεις με ημερομηνίες (πχ σε ερωτήματα, φίλτρα), θα πρέπει να χρησιμοποιούμε μορφοποίηση ΗΠΑ («mm/dd/yyyy»).
Στα αποθηκευμένα ερωτήματα η χρησιμοποίηση της ελληνικής μορφοποίησης ερμηνεύεται σωστά και δε δημιουργεί πρόβλημα.
Επειδή το θέμα είναι σοβαρό πιστεύω ότι απαιτεί διεξοδικότερη παρουσίαση.

Γιώργος
Απάντηση με παράθεση
  #3  
Παλιά 10-11-10, 19:20
Το avatar του χρήστη Meteora
Συντονιστής
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 28-12-2008
Περιοχή: Θεσσαλονίκη
Μηνύματα: 1.033
Προεπιλογή

Γιώργο μου σε ευχαριστώ.
Κάτι με θυμίζει αυτό το 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 & "')"
  • Τοποθετεί τις ημερομηνίες σε μορφή ημέρα/μήνας/έτος στον πίνακα ( ...? )
  • Είναι ορατές στον πίνακα ( αν στην καρτέλα General του πεδίου σε περιβάλλον σχεδίασης επιλέξουμε Format "Short Date"
  • Εμφανίζονται σωστά και στη φόρμα
... όμως δεν μπορώ να εξηγήσω τι συμβαίνει.

Αν στον υπολογιστή σου ζητήσεις αποθήκευση με Format yyyy/mm/dd τι αποτέλεσμα έχεις στον πίνακα ;
Φιλικά / Νίκος Δ.

Τελευταία επεξεργασία από το χρήστη Tasos : 11-11-10 στις 14:18. Αιτία: Προσθήκη πληροφοριών...
Απάντηση με παράθεση
  #4  
Παλιά 10-11-10, 21:37
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα

Νίκο τα παρακάτω ίσως βοηθήσουν στην εξήγηση των προβλημάτων που δημιουργούν οι ημερομηνίες και οι ώρες, σε σχέση και με τις τοπικές ρυθμίσεις.
Στην access, αλλά και γενικά, η ημερομηνία και η ώρα σε μία χρονική στιγμή ισούται με το χρόνο που πέρασε από μία άλλη, που θεωρείται αφετηρία.
Ο χρόνος αυτός μετράται σε μέρες και εκφράζεται με ένα δεκαδικό αριθμό διπλής ακρίβειας στον οποίο το ακέραιο μέρος αντιστοιχεί στην ημερομηνία και το δεκαδικό στην ώρα.
Οι ημερομηνίες και οι ώρες στον υπολογιστή ουσιαστικά αποθηκεύονται ως δεκαδικοί αριθμοί. Επίσης οι πράξεις με ημερομηνίες και ώρες είναι πράξεις με δεκαδικούς.
Στην καθημερινή ζωή, ανάλογα και με την περιοχή, η ημερομηνία και η ώρα εκφράζεται με μορφές «dd/mm/yyyy» (πχ Ελλάδα), «mm/dd/yyyy»(πχ Αμερική) και όχι ως δεκαδικός αριθμός.
Αυτό δημιουργεί το ερώτημα σε ποια μορφή πρέπει να δώσουμε την ημερομηνία και την ώρα για να αποθηκευτεί ο σωστός δεκαδικός;
Από ότι κατάλαβα σε ένα υπολογιστή ρυθμισμένο στην ελληνική ημερομηνία πρέπει:
  1. Στις συνδεδεμένες φόρμες και τα αποθηκευμένα ερωτήματα να δίνεται στην ελληνική μορφοποίηση (dd/mm/yyyy).
  2. Στις εκφράσεις που δημιουργούνται με κώδικα VBA στην αμερικάνικη (mm/dd/yyyy).
Από τη στιγμή που αποθηκευτεί ο σωστός δεκαδικός για την ημερομηνία και την ώρα μπορούμε να τον εμφανίσουμε (σε ερώτημα, φόρμα, έκθεση) σε οποιαδήποτε μορφή θέλουμε (πχ yyyy/mm/dd).

Φιλικά/Γιώργος
ΥΓ Κατά τη γνώμη μου απαιτείται μια αναλυτικότερη παρουσίαση από κάποιον που γνωρίζει καλά το θέμα.
Απάντηση με παράθεση
  #5  
Παλιά 11-11-10, 17:22
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλημέρα στην παρέα

Στη βάση δεδομένων που επισυνάπτεται παρουσιάζονται οι συνηθέστερες μορφές ημερομηνίας μαζί με τις εκφράσεις που πρέπει να χρησιμοποιούνται, ώστε οι ημερομηνίες να αποθηκεύονται και να εμφανίζονται σωστά.
Αφορμή για τη δημιουργία της αποτέλεσε σχετικό μήνυμα του φίλου μου Νίκου (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
Παρατηρήσεις, διορθώσεις και βελτιώσεις είναι ευπρόσδεκτες.

Φιλικά/Γιώργος
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb TestDates.mdb (292,0 KB, 116 εμφανίσεις)
Απάντηση με παράθεση
  #6  
Παλιά 11-11-10, 17:53
Το avatar του χρήστη Meteora
Συντονιστής
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 28-12-2008
Περιοχή: Θεσσαλονίκη
Μηνύματα: 1.033
Προεπιλογή

Καλησπέρα σε όλους μας...
Γιώργο, δουλειές σαν αυτή που μας πρόσφερες, τις χαρακτηρίζω χρόνια τώρα ως "Μουσκεμένο παξιμάδι", έχοντας-κάθε φορά- στο νου μου την μάνα που μασάει την τροφή για να τη προσφέρει στο μωρό της...
Θερμά σε ευχαριστώ / Φιλικά Νίκος Δ.
Απάντηση με παράθεση
  #7  
Παλιά 11-11-10, 19:59
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Φίλε Νίκο στους επαίνους σου πάντα γενναιόδωρος. Ευχαριστώ.
Απάντηση με παράθεση
  #8  
Παλιά 12-11-10, 13:53
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Καλησπέρα Νίκο και Γιώργο!

Μπορούμε να το κάνουμε και έτσι:


Κώδικας:
Sub test()
    CurrentDb.Execute "INSERT INTO [tbldanio] ( [imeraarxi] ) SELECT Date() AS TheDate FROM [tbldanio]", dbFailOnError
End Sub
Το CurrentDb.Execute είναι κατά πολύ γρηγορότερο από την εντολή RunSQL.

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #9  
Παλιά 12-11-10, 19:21
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα στην παρέα

Φίλε Τάσο, ο Νίκος και εγώ στα προηγούμενα μηνύματα ασχοληθήκαμε με τον περίεργο χειρισμό των ημερομηνιών από την 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  
Παλιά 12-11-10, 19:53
Το avatar του χρήστη admin
Administrator
Όνομα: Τάσος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 05-11-2009
Μηνύματα: 3
Προεπιλογή

Καλησπέρα φίλε μου!

30/12/1899 = 0 επειδή:

Μέσα στη συμβολοσειρά που (που η γλώσσα προγραμματισμού είναι SQL και όχι VB)
χρησιμοποιείς το Date που δεν αναγνωρίζεται από την SQL άρα επιστρέφεται η μηδενική τιμή ( 0 ).
Δοκίμασε:
CurrentDb.Execute "INSERT INTO [tblDates] ( [TestDates] ) values(Date())", dbFailOnError

Τα λέμε...

Τάσος
__________________
Για να απαντούμε στις ερωτήσεις σας εύστοχα, παρακαλούμε, επεξεργαστείτε τα πεδία στις Χρήσιμες πληροφορίες
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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


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

Θέμα Δημιουργός 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.