Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
![]() |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#11
| |||
| |||
![]()
Καλησπέρα στην παρέα Η βάση δεδομένων «TestDates.mdb», που επισυνάπτεται σε προηγούμενο μήνυμά μου, ενσωματώνει κάποιες διαπιστώσεις του φίλου μου Νίκου (meteora) και δικές μου, σχετικά με το σωστό χειρισμό των ημερομηνιών, στην acces, και δίνει δυνατότητες πειραματισμού. Μετά την παρέμβαση και του φίλο μου του Τάσου, ασχολήθηκα κάπως περισσότερο με την τρέχουσα ημερομηνία και τις σχετικές δοκιμές τις ενσωμάτωσα στη φόρμα «frmCurrentDate», της συνημμένης βάσης «testDates2.mdb», που περιλαμβάνει και την «TestDates.mdb», έτσι ώστε όλος ο προβληματισμός να βρίσκεται σ’ ένα αρχείο. Η λειτουργικότητα της φόρμας «frmCurrentDate» οφείλεται στον παρακάτω κώδικα. Κώδικας: Private Sub cmdDate1_Click() 'Επιστρέφει την αφετηρία μέτρησης των ημερομηνιών (0=30/12/1899), της access 'Αν υποθέσουμε ότι η τρέχουσα ημερομηνία είναι 13/11/2010 η μέθοδος .execute 'εκτελεί την πρόταση:INSERT INTO [tblDates] ( [TestDates] ) values(13/12/2010) 'η παράσταση 13/12/2010 είναι ένα πηλίκο με τιμή 0,0005 που ισοδυναμεί με την 30/12/1899 CurrentDb.Execute "INSERT INTO [tblDates] ( [TestDates] ) values(" & Date & ")", dbFailOnError Me.Requery Me.Recordset.MoveLast End Sub Private Sub cmdDate2_Click() 'Επιστρέφει σωστό αποτέλεσμα, μολονότι η ημερομηνία εισάγεται ως κείμενο 'Αν υποθέσουμε ότι η τρέχουσα ημερομηνία είναι 13/11/2010 η μέθοδος .execute 'εκτελεί την πρόταση:INSERT INTO [tblDates] ( [TestDates] ) values('13/12/2010') 'Από την SQL και τη μέθοδο .execute η '13/12/2010' ερμηνεύεται σωστά CurrentDb.Execute "INSERT INTO [tblDates] ( [TestDates] ) values('" & Date & "')", dbFailOnError Me.Requery Me.Recordset.MoveLast End Sub Private Sub cmdDate3_Click() 'Η μέθοδος .execute εκτελεί την πρόταση: 'INSERT INTO [tblDates] ( [TestDates] ) values(Date) 'Η Date δεν αναγνωρίζεται ως συνάρτηση και επιστρέφεται λάθος On Error GoTo err_trap CurrentDb.Execute "INSERT INTO [tblDates] ( [TestDates] ) values(Date)", dbFailOnError Me.Requery Me.Recordset.MoveLast err_exit: Exit Sub err_trap: MsgBox Err.Description GoTo err_exit End Sub Private Sub cmdDate4_Click() 'Η μέθοδος .execute εκτελεί την πρόταση: 'INSERT INTO [tblDates] ( [TestDates] ) values(Date()) 'Η Date() αναγνωρίζεται ως συνάρτηση και επιστρέφεται σωστό αποτέλεσμα CurrentDb.Execute "INSERT INTO [tblDates] ( [TestDates] ) values(Date())", dbFailOnError 'Ίδια πρόταση SQL μπορούμε να δομίσουμε με πολλούς τρόπους, όπως 'CurrentDb.Execute "INSERT INTO [tblDates] ( [TestDates] )" & " values(Date())", dbFailOnError Me.Requery Me.Recordset.MoveLast End Sub Private Sub cmdDate5_Click() 'Αν υποθέσουμε ότι η τρέχουσα ημερομηνία είναι 10/11/2010 η μέθοδος .execute 'εκτελεί την πρόταση:INSERT INTO [tblDates] ( [TestDates] ) values(#10/11/2010#) 'Επειδή θεωρείται ότι η ημερομηνία είναι σε μορφή ΗΠΑ (mm/dd/yyyy)αποθηκεύυεται 'η ημερομηνία 11/10/2010. Το περίεργο είναι ότι αν η μέρα είναι πάνω από 12 '(μέγιστη τιμή μήνα), αντί να εμφανιστεί κάποιο λάθος, δε γίνεται η εναλλαγή CurrentDb.Execute "INSERT INTO [tblDates] ( [TestDates] ) values(#" & Date & "#)", dbFailOnError Me.Requery Me.Recordset.MoveLast End Sub Private Sub cmdDate6_Click() 'Αν υποθέσουμε ότι η τρέχουσα ημερομηνία είναι 10/11/2010 η μέθοδος .execute 'εκτελεί την πρόταση:INSERT INTO [tblDates] ( [TestDates] ) values(#11/10/2010#) 'Επειδή η ημερομηνία είναι η ελληνική σε σωστή μορφή ΗΠΑ (mm/dd/yyyy)αποθηκεύυεται 'και εμφανίζεται σωστά (11/10/2010). CurrentDb.Execute "INSERT INTO [tblDates] ( [TestDates] ) values(#" & Format(Date, "mm/dd/yyyy") & "#)", dbFailOnError Me.Requery Me.Recordset.MoveLast End Sub Η ερμηνεία είναι προσωπική και βασίζεται στη διαμόρφωση της πρότασης SQL τη στιγμή της εκτέλεσης. Διαφορετικές συνεπώς απόψεις είναι ευπρόσδεκτες. Για να γίνει σωστή δοκιμή των διάφορων περιπτώσεων θα πρέπει η ημερομηνία να ρυθμιστεί (προσωρινά) σε μία ημερομηνία μικρότερη από 11/11/2010. Τάσο η λύση που προτείνεις για την εισαγωγή μιας εγγραφής με την τρέχουσα ημερομηνία λειτουργεί σωστά. Φιλικά/Γιώργος |
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[Excel07] Ημερομηνία στο Excel | George R | Excel - Ερωτήσεις / Απαντήσεις | 4 | 05-01-17 06:23 |
[Γενικά] Σχετικά με ημερομηνία | xristos | Excel - Ερωτήσεις / Απαντήσεις | 7 | 09-01-14 12:16 |
[ Φόρμες ] Ημερομηνία με Calendar | stavross | Access - Ερωτήσεις / Απαντήσεις | 4 | 29-10-12 17:38 |
[ Φόρμες ] Ημερομηνία σε φόρμα | xristos | Access - Ερωτήσεις / Απαντήσεις | 6 | 22-04-12 17:56 |
[Μορφοποίηση] Ημερομηνία και Μορφοποίηση | ikaros80 | Excel - Ερωτήσεις / Απαντήσεις | 2 | 06-04-11 21:23 |
Η ώρα είναι 17:33.