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

 

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

Asp:Calendar

Îåêßíçóå áðü ôï ìÝëïò epp1123. Τελευταία δημοσίευση από το μέλος epp1123 στις 06-06-2008, 14:18. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  04-06-2008, 13:41 42631

    Asp:Calendar

    Επαναδιατυπώνω λοιπόν, μιας και η η ερώτηση μου δεν έγινε κατανοητή. Χρησιμοποιώντας το asp:calendar, και στην προσπάθεια να αποθηκεύσω την ημερομηνία στην βάση (MS SQL Server 2005), απέτυχα.

    Επίσης ένα άλλο πρόβλημα που συνάντησα, είναι πως όταν η ημερομηνία (η μέρα συγκεκριμένα) μου, είναι από 13 και πάνω, τότε μου βγαίνει το εξής σφάλμα:

    Arithmetic overflow error converting expression to data type datetime

    Παρατήρησα λοιπόν, ότι στη βάση αποθηκεύει την ημερομηνία με τον "ευρωπαϊκό τρόπο", ενώ το calendar μου στέλνει την "αμερικάνικη" ημερομηνία, και επειδή αυτή βάζουν τον μήνα πρώτα, όποτε διαλέγω ημέρα από 13 χτυπάει σφάλμα.

    Οπότε η ερώτηση έχει ως εξής:

    Πως μπορώ να δώσω ένα format και στο calendar και στη βάση για ημερομηνία, και να είναι το dd/MM/yyyy

  •  04-06-2008, 16:12 42639 σε απάντηση της 42631

    Απ: Asp:Calendar

    Το calendar control δίνει την ημερομηνία ως DateTime αντικείμενο και όχι ως string. Εικάζω ότι το πρόβλημα δεν υπάρχει στο Calendar αλλά στον τρόπο με τον οποίον παίρνεις το DateTime και το βάζεις στη βάση.
  •  04-06-2008, 22:24 42651 σε απάντηση της 42639

    Απ: Asp:Calendar

    Συμφωνώ με την υπόθεση του nullvoid. Το πρόβλημα σου φαίνεται να μην έχει τίποτε να κάνει με το Calendar ή την ASP.NET αλλά με το πως δημιουργείς και εκτελείς SQL statements. Υποθέτω ότι αντί να δημιουργείς parameterized queries δημιουργείς ένα SQL string και το εκτελείς. Έτσι όμως πρέπει να φροντίζεις να μετατρέπεις ημερομηνίες και αριθμούς στη γλώσσα που περιμένει ο SQL Server. Αυτό είναι εντελώς περιττό αν δημιουργήσεις ένα parameterized query και περάσεις τις ημερομηνίες ως ημερομηνίες και τους αριθμούς ως αριθμούς. Θέλει ελάχιστο διάβασμα για να το πετύχεις την πρώτη φορά, αλλά έτσι γλυτώνεις πάρα πολύ χρόνο επειδή αποφεύγεις bugs και δεν χρειάζεται να ελέγχεις συνέχεια ποιά είναι η γλώσσα που περιμένει ο SQL Server για να κάνεις τις σωστές μετατροπές. Από τη στιγμή που ο SQL Server μπορεί να κάνει τις σωστές μετατροπές αυτόματα, γιατί να παιδεύεσαι εσύ?

    Ρίξε και μία ματιά στο "Ο SQL Server ΔΕΝ ΧΡΕΙΑΖΕΤΑΙ κόλπα για να υποστηρίξει τα ελληνικά!" το οποίο αναφέρεται ακριβώς σε αυτή την περίπτωση.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  05-06-2008, 09:21 42655 σε απάντηση της 42651

    Απ: Asp:Calendar

    Με παραμέτρους δουλεύω. Τώρα ότι μπορεί να μου ξεφεύγει κάτι, είναι πιθανό. Σημειωτέον, άλλαξα τον τύπο του πεδίου στη βάση και το έκανα string και έπαιζε κανονικά. Σας βάζω τον κώδικα που έχω γράψει μήπως βοηθήσει. Ο κώδικας είναι μόνο για την ημερομηνία.

    Να τονίσω πως έκανα debug και στο NewsCalendarParameterEditItemTemplate.DefaultValue περνάει η ημερομηνία στην επιθυμητή μορφή, αλλά δεν μπορώ να καταλάβω που τρώει το σκάλωμα.

    Δεν σας το βάζω όλο, για να μη σας κουράσω. Εάν θέλετε περισσότερες πληροφορίες let me know
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     Dim TempNewsCalendarEditItemTemplate As New Calendar
    Dim NewsCalendarParameterEditItemTemplate As New Parameter

    TempNewsCalendarEditItemTemplate = NewsFormView.FindControl("NewsDateCalendarEditItemTemplate")


    NewsCalendarParameterEditItemTemplate.DefaultValue = TempNewsCalendarEditItemTemplate.SelectedDate
    NewsCalendarParameterEditItemTemplate.Name = "NewsCalendarParameterEditItemTemplate"


    NewsSqlDataSource.UpdateParameters.Add(NewsCalendarParameterEditItemTemplate) 'NewsCalendarParameterEditItemTemplate


    (To Update Command είναι στο SQL DataSource)
    UpdateCommand="UPDATE News SET HeaderText = @HeaderTextParameterEditItemTemplate, Description = @DescriptionParameterEditItemTemplate, MainText = @NewsTextParameterEditItemTemplate, NewsDate = @NewsCalendarParameterEditItemTemplate WHERE id =@NewsIDParameterEditItemTemplate "

  •  06-06-2008, 14:18 42721 σε απάντηση της 42655

    Απ: Asp:Calendar

    Αφαίρεσα την SQLDataSource parameter και άλλαξα το sql string ως εξής NewsDate = @NewsDate έχοντας κάνει Bind στο SelectedDate και δουλεύει κανονικά.

    Η ερώτηση που τίθεται είναι η εξής:

    Αφού έτσι δουλεύει κανονικά, γιατί δε δούλευε με το SQLDataSource Parameter? Εκεί δεν "περνούσε"  την ίδια τιμή;
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems