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

 

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

Syntax error converting datetime from character string

Îåêßíçóå áðü ôï ìÝëïò savvas1986. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 27-03-2009, 18:21. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  27-03-2009, 16:45 49648

    Syntax error converting datetime from character string

    Παιδια καλησπέρα , χωρίς πολλά λόγια έχω ενα grid στο οποίο όταν κάνω  insert μια νέα row μου σκάει γιατί κάποιο πρόβλημα υπάρχει όπως εισάγω τις ημερομηνίες. Το insrert γινεται κάπως ετσι :

    InsertCommand="INSERT INTO blablabla(eID, eAmount, eDateOfExpense, eNotes, actID) VALUES (@eID, @eAmount, @eDateOfExpense, @eNotes, @actID)

    To error:

    Syntax error converting datetime from character string.

    Απλά να ενημερώσω ότι στο cell  του eDateOfExpense έχω ένα calendar από το οποίο ο χρήστης επιέγει ημερομηνία.


    Με λίγα λόγια  plz help :D
  •  27-03-2009, 17:26 49651 σε απάντηση της 49648

    Απ: Syntax error converting datetime from character string

    savvas1986:
    Το insrert γινεται κάπως ετσι :

    InsertCommand="INSERT INTO blablabla(eID, eAmount, eDateOfExpense, eNotes, actID) VALUES (@eID, @eAmount, @eDateOfExpense, @eNotes, @actID)

    Το μόνο που λέει η παραπάνω γραμμή είναι ότι αποθήκευσες κάπου ένα string. Πως εκτελείς πραγματικά το INSERT, πού το εκτελείς και τί τύπου είναι οι παράμετροι? Χρησιμοποιείς DbCommand στον Client? Την sp_executesql στον server?

    Το λάθος που βλέπεις σημαίνει ότι αντί να περάσεις ημερομηνία εκεί που εκτελείται το INSERT, πέρασες string. Αν είχες χρησιμοποιήσει κάποιο DbCommand ή SqlCommand στον Client, με την παράμετρο eDateOfExpense να είναι DateTime, και αν πέρναγες από το Calendar ημερομηνία (αλήθεια, για τί Calendar μιλάμε? Και μιλάμε για Web ή για Winforms?) δεν θα είχες κανένα πρόβλημα.

    Κάπου μετατρέπεις την ημερομηνία σε string, και όταν αυτή φτάνει στον server δεν μπορεί να γίνει σωστά parse.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  27-03-2009, 17:57 49653 σε απάντηση της 49651

    Απ: Syntax error converting datetime from character string

    Το πρόβλημα λύθηκαι ως εξής:

        Protected Sub SqlDataSource_Inserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceCommandEventArgs) Handles SqlDataSource.Inserting
            Dim s As String

            s = e.Command.Parameters(2).Value
            s = s.Substring(0, s.IndexOf(" "))
            e.Command.Parameters(2).Value = s
         End Sub


    Χρησιμοποιώ τα controls του Telerik. Οπότε και το calendar ήταν του telerik.
    Το πρόβλημα όπως θα κατάλαβες και από τη λύση που του έδοσα ήταν ότι το calendar μου επέστρεφε κάτι σαν κιαυτό ( 01/01/2009 12:00 μμ) , οπότε ορθώς και μου έσκαγε στο parse.
    Ευχαριστώ για την άμεση απάντηση Παναγιώτη.
  •  27-03-2009, 18:21 49654 σε απάντηση της 49653

    Απ: Syntax error converting datetime from character string

    Δυστυχώς, δεν έλυσες το πρόβλημα, απλά νομίζεις ότι το έλυσες. Τί θα γίνει αν η database σου έχει στηθεί με αμερικάνικο locale και ο web server σου με ελληνικό? Πάλι το ίδιο πρόβλημα θα έχεις.

    Το πραγματικό πρόβλημα είναι ότι αντί να περνάς ημερομηνίες, περνάς strings. Δεν υπάρχει κανένας λόγος να το κάνεις αυτό. Καταργήν, ΔΕΝ πρέπει η παράμετρος να είναι string! Εφόσον χρησιμοποιείς datetime στη βάση, και η παράμετρος ΠΡΕΠΕΙ να είναι datetime. Αλλιώς θα ξαναέχεις πρόβλημα. Μετά θα πρέπει να διαβάσεις το αντίστοιχο Date property από το Calendar και το περάσεις στην παράμετρο. Δεν έχω ανοικτό τώρα το help του Calendar, αλλά είναι 100% σίγουρο ότι έχει τρόπο να σου δώσει Date αντί για string.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems