Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Πρόβλημα (access - ημερομηνίες)

Îåêßíçóå áðü ôï ìÝëïò KoYkoY. Τελευταία δημοσίευση από το μέλος KoYkoY στις 17-03-2006, 18:44. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  15-03-2006, 20:30 10697

    Confused [*-)] Πρόβλημα (access - ημερομηνίες)

    Σε μία βάση δεδομένων της access αντιμετωπίζω κάποιο πρόβλημα με ημερομηνίες που περιλαμβάνουν μονές ημέρες όπως 1/3/2006 (1 Μαρτίου 2006) ενώ ο κώδικας λειτουργεί κανονικά με άλλες ημερομηνίες.
    Το πρόβλημα είναι γενικό σε ότι προσπαθώ να κάνω με τις ημερομηνίες με μονή μέρα (και σύνταξη αλά ελληνικά ).... ας πούμε αν θέλω να επιλέξω μία τέτοια ημερομηνία από ένα σύνθετο πλαίσιο ώστε να ανοίξει μία φόρμα στην κατάλληλη εγγραφή ή ακόμη όταν δημιουργώ ένα ερώτημα και θέλω να αντιγράψω όλες τις εγγραφές που είναι δηλωμένες για αυτή την ημερομηνία.. δεν γίνεται τίποτα.. ένώ ο κώδικας που έχω γράψει λειτουργεί αλάνθαστα (!) - μέχρι τώρα - για όλες τις άλλες ημερομηνίες... Και μένα μου φαίνεται περίεργο.... μήπως γίνεται κάποιο μπέρδεμα με τους μήνες σε σχέση με το αγγλικό ημερολόγιο; και αν γίνεται τί πρέπει να κάνω.. Μια φορά είχα αντιμετωπίσει ένα παρόμοιο πρόβλημα και το είχα ξεπεράσει χρησιμοποιώντας την συνάρτηση CDate(). Ώστόσο αυτή την φορά δεν βοηθά!  
    Έχει κανείς κάποια ιδέα για το τί συμβαίνει;

  •  15-03-2006, 22:30 10698 σε απάντηση της 10697

    Απ: Πρόβλημα (access - ημερομηνίες)

    Η μηχανή της Access - όπως το φαντάστηκες - μερικές φορές μπερδεύεται.

    Καλό θα ήταν τα γράφεις τις ημερομηνίες ανάποδα - 2006/03/15 - για να αναγκάσεις την Access να τις διαβάζει σωστά, όπως και τις ώρες να τις γράφεις με το 24ωρη μορφή.

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  16-03-2006, 10:12 10702 σε απάντηση της 10698

    Απ: Πρόβλημα (access - ημερομηνίες)

    Surprise [:O]H access μπερδεύεται;Confused [8-)]

    Και γιατί μπερδεύεται μόνο στις ημερομηνίες με μονή μέρα και μονό μήνα καθώς μια ημερομηνία όπως 3/10/2006 (3 Οκτωβρίου 2006) λειτουργεί κανονικά;
    Αν χρησιμοποιούσα αγγλικό ημερολόγιο δεν θα μπερδευόταν;
    Αν ας πούμε αντί να γράφω τις ημερομηνίες ανάποδα έδινα στην access να καταλάβει ποια είναι η ημέρα και ποιος είναι ο μήνας μέσω συναρτήσεων όπως Day() και Month() τότε θα λειτουργούσε κανονικά;
    Το πρόβλημά μου είναι -  επειδή χειρίζομαι πολλές πληροφορίες μέσα ημερομηνιών -  ότι θέλω ο χρήστης είτε να πληκτρολογεί μία ημερομηνία στην μορφή d/m/yyyy είτε να την διαλέγει από ένα ημερολόγιο στην ίδια μορφή και να κάνει την δουλειά του...
    Μήπως η πιο απλή λύση θα ήτανε ν' αλλλάξω τον τύπο δεδομένων από date σε string;

  •  16-03-2006, 17:29 10719 σε απάντηση της 10697

    Απ: Πρόβλημα (access - ημερομηνίες)

    Ακριβώς επειδή μπλέκονται οι ημερομηνίες στην Access λόγω culture (USA & Europe), όταν περνάς τις ημερομηνίες στη βάση δεδομένων, είναι καλό να τις περνάς με τη μορφή που σου είπε ο G.C, η οποία είναι η Universal μορφή ημερομηνίας.
    Μην αφήνετε τα media να σας "ταΐζουν"!
  •  16-03-2006, 21:36 10736 σε απάντηση της 10702

    Απ: Πρόβλημα (access - ημερομηνίες)

     KoYkoY wrote:
    Surprise [:O]H access μπερδεύεται;Confused [8-)]

    Και γιατί μπερδεύεται μόνο στις ημερομηνίες με μονή μέρα και μονό μήνα καθώς μια ημερομηνία όπως 3/10/2006 (3 Οκτωβρίου 2006) λειτουργεί κανονικά;

    Ο τρόπος που η Access καταλαβαίνει αν η ημερομηνία είναι αμερικάνικου ή ελληνικού τύπου, είναι αν δεν μπορεί να την κάνει validate με το αμερικάνικο στυλ και μπορεί με το ελληνικό στυλ, τότε τις θεωρεί ελληνικού τύπου. Αν μπορεί να το κάνει με το πρώτο τρόπο, δεν προχωρά να δοκιμάσει και με τον δεύτερο τρόπο. Οπότε καταλαβαίνεις ότι οι ημερομηνίες με την μονή μέρα, που μπορούν να γίνουν validate σαν αμερικάνικες ημερομηνίες, τις θεωρεί αμερικάνικες.

     KoYkoY wrote:
    Αν χρησιμοποιούσα αγγλικό ημερολόγιο δεν θα μπερδευόταν;

    Δεν θα μπερδευόταν, αλλά καλό είναι για την ευκολία του χρήστη να μην το κάνεις...

     KoYkoY wrote:
    Αν ας πούμε αντί να γράφω τις ημερομηνίες ανάποδα έδινα στην access να καταλάβει ποια είναι η ημέρα και ποιος είναι ο μήνας μέσω συναρτήσεων όπως Day() και Month() τότε θα λειτουργούσε κανονικά;

    Ο "σωστός" τρόπος είναι να αποθηκεύεις τις ημερομηνίες σου σαν ημερομηνίες μέσα στην βάση σου. Για να μην πέσεις ποτέ σε προβλήματα τύπου "2Κ Bug". Για να κάνεις πιο εύκολη την εισαγωγή ημερομηνιών καλό θα ήταν να χρησιμοποιείς τα ειδικά controls που αφήνουν το χρήστη να διαλέγει ημερομηνία μέσω UI. Τέλος, όταν γράφεις SQL προτάσεις με string concatenation, να χρησιμοποιείς στο διεθνές format της ημερομηνίας, για να μην γίνονται λάθος μετατροπές και έχεις άλλες ημερομηνίες στην βάση σου από αυτές που ήθελες να εισάγεις...

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  17-03-2006, 18:44 10776 σε απάντηση της 10736

    Απ: Πρόβλημα (access - ημερομηνίες)

    Ευχαριστώ πολύ για την βοήθεια.Big Smile [:D] ..Αρχίζω να αντιμετωπίζω το πρόβλημα με αισιοδοξία τώρα που αντιλαμβάνομαι ότι τουλάχιστον αυτό δεν είναι δικό μου!

    Σε αυτό το σημείο θα ήθελα να ρωτήσω πως αυτή η μετατροπή γίνεται στην πράξη..

    Αν δηλαδή έχω ένα πίνακα που περιλαμβάνει και ένα πεδίο με τύπο δεδομένων date/time και δημιουργήσω μία φόρμα με προέλευση εγγραφών τον πίνακα και τοποθετήσω εκεί και το πεδίο ημερομηνίας με μορφή "Σύντομη Ημερομηνία" και ο χρήστης πληκτρολογήσει την ημερομηνία 1/3/2006 ενοώντας 1 Μαρτίου 2006 τότε πριν αποθηκεύσει η access την συγκεκριμένη ημερομηνία και προκειμένου να της γίνει ξεκάθαρο για ποια ημερομηνία μιλάμε πρέπει να την μετατρέψω χρησιμοποιώντας την συνάρτηση format(); όπως Format("1/3/2006", "yyyy/mm/dd");
    Και αν ο τρόπος αυτός είναι σωστός τότε μήπως θα ήταν καλύτερο ν' αποφύγω να βάλω το πραγματικό πεδίο date/time στην φόρμα  - αποφεύγοντας μ'αυτό τον τρόπο και τους κανόνες επικύρωσης της access - και να κάνω την μετατροπή μέσω ενός αδέσμευτου πεδίου κειμένου ως Format(CDate("1/3/2006"), "yyyy/mm/dd") και έτσι τέλος να την αποθηκεύσω στο πραγματικό πεδίο;

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems