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

 

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

select DateTime SQL mobile 5

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

    select DateTime SQL mobile 5

    Καλησπέρα,

    Είμαι έτοιμος να σπάσω το PC. Προσπαθώ να πάρω κάποιες εγγραφές που είναι ή ίσες με την σημερινή ημέρα ή είναι ανάμεσα σε διάστημα κάποιον ημερών. Δοκιμάζω το εξής

    select * from tblInvoice where IDate = 'now.date.toshortdatestring'

    και

    select * from tblInvoice where IDate between 'dtpto.value' and 'dtpfrom.value'

    ή

    select * from tblInvoice where IDate between 'dtpto.value.toshortdatestring' and 'dtpfrom.value.toshortdatestring'

    δεν επιστρέφει τίποτα.

    Υπάρχει κάποιο λάθος?

    το πεδίο είναι DateTime. 

  •  06-04-2008, 23:01 41385 σε απάντηση της 41381

    Απ: select DateTime SQL mobile 5

    Τα selects που έχεις γράψει δεν μπορούν να τρέξουν επειδή έχεις ανακατώσει κώδικα που τρέχει στην εφαρμογή σου μέσα σε αυτά. Τα Now.date.toshortdatestring κλπ είναι μέθοδοι της κλάσης DateTime του .NET και μάλιστα με συντακτικό VB.NET. Δεν έχουν κανένα απολύτως νόημα σε μία βάση. Στη βάση υπάρχει το function GETDATE(), τα DATEPART(),DATEDIFF, DATEADD() κλπ. Δεν μπορείς να εκτελέσεις κώδικα VB.NET βάζοντας το σε ένα SQL Statement. Αυτό που μπορείς να κάνεις είναι να ξαναγράψεις το SQL statement έτσι ώστε να παίρνει παραμέτρους για τις ημερομηνίες, χρησιμοποιώντας κλάσεις όπως η DbComman και να περάσεις τις τιμές που θέλεις στις παραμέτρους.

    Αντί να σπάσεις τον υπολογιστή θα ήταν καλύτερο να ξεκινήσεις διαβάζοντας τα tutorials του ADO.NET και του SQL SERVER και φτιάχνοντας μερικές απλές WinForms εφαρμογές. Αφού καταλάβεις πως δουλεύει το ADO.NET μπορείς να περάσεις και σε mobile εφαρμογές.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  07-04-2008, 08:19 41389 σε απάντηση της 41385

    Απ: select DateTime SQL mobile 5

    Ξέρω αρκετά οτι δεν είναι συναρτήσεις της SQL αυτές. Δεν είχα βάλει όλο τον κώδικα. Ενα sql string χρησιμοποιώ.το παρακάτω: 

    strSales = "Select IDate,Total from Invoice where IDate Between '" & fromDate.ToShortDateString & "' and '" & toDate.ToShortDateString & "'"

  •  07-04-2008, 09:13 41390 σε απάντηση της 41389

    Απ: select DateTime SQL mobile 5

    Πως είσαι σίγουρος ότι το Short date format του .NET είναι το ίδιο με το default format του SQL? Σχεδόν σίγουρα είναι διαφορετικά και εξαρτώνται από το culture του .NET και το collation του SQL. Αν για παράδειγμα χρησιμοποιείς Greek στο .NET και Latin1 στον SQL αυτά θα διαφέρουν. Το θέμα το έχουμε συζητήσει πολλές φορές και αν θες περισσότερες λεπτομέρεις ρίξε μία ματιά εδώ.

    Θα μπορούσες να είχες αποφύγει όλο το πρόβλημα αν είχες χρησιμοποιήσει parameterized query αντί για string concatenation. Έτσι το .NET θα αναλάμβανε τη σωστή μετατροπή από το ένα format στο άλλο. Έτσι θα αποφύγεις και άλλα προβλήματα που θα συναντήσεις στο μέλλον, όπως πως να περάσεις σωστά ένα δεκαδικό αριθμό, πως να περάσεις σωστά ελληνικό κείμενο στη βάση κλπ. Διαφορετικά θα πρέπει κάθε φορά που φτιάχνεις ένα SQL string να σκέφτεσαι αν έκανες σωστά το formatting.

     


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  07-04-2008, 10:43 41391 σε απάντηση της 41390

    Απ: select DateTime SQL mobile 5

    χρησιμοποιώ τον παρακάτω κώδικα:

    Dim strSales As String = ""

    Dim strConnString As String = "Data Source=\Point.sdf"

    Dim conn As New SqlCeConnection(strConnString)

    Dim dsSales As New Data.DataSet()

    Dim cmdSales As New SqlCeCommand

    Try

    conn.Open()

    strSales = "Select Customers.LName as LastName,I.IDate as Date Customers Inner Join I on Customers.CustomerID=I.CustomerID Where I.IDate = @DateTo"

    cmdSales.Connection = conn

    cmdSales.CommandText = strSales

    Dim paramInves As SqlCeParameter = Nothing

    paramInves = New SqlCeParameter("@DateTo",Date.Now)

    cmdSales.Parameters.Add(paramInves)

    cmdSales.Prepare()

    DGSales.DataSource = cmdSales.ExecuteResultSet(ResultSetOptions.Scrollable)

    Catch err As Data.SqlServerCe.SqlCeException

    MsgBox(" " & err.Message & " ", MsgBoxStyle.Critical, "Error")

    End Try

    conn.Close()

    cmdSales.Dispose()

    δεν μου εμφανίζει καμία εγγραφή ενώ υπάρχουν 3 εγγραφές με την σημερινή ημερομηνία.

    Καμία σκέψη?

    Ευχαριστώ και πάλι...

  •  07-04-2008, 11:07 41392 σε απάντηση της 41391

    Απ: select DateTime SQL mobile 5

    Πρόσεξε το Date.Now δεν φέρνει μόνο την ημερομηνία αλλά και την ώρα. Πρέπει να εξασφαλίσεις και από τις δύο μεριές της ισότητας στο query ότι έχεις  date. Δοκίμασε να περάσεις κατί σαν
    Where Date(I.IDate) = @DateTo"
    και
    New SqlCeParameter("@DateTo",DateTime.Now.Date)

    Manos
  •  07-04-2008, 11:11 41393 σε απάντηση της 41391

    Απ: select DateTime SQL mobile 5

    Τα DateTime πεδία στον SQL Server περιέχουν την ημερομηνία αλλά και την ώρα. Μπορεί να έχεις τρεις εγγραφές με την ίδια ημερομηνία αλλά δεν θα έχουν την ώρα που φέρνει η Now(). Θα πρέπει να "κόψεις" την ώρα από τη σύγκριση που κάνεις και να συγκρίνεις μόνο το κομμάτι της ημερομηνίας.


    Vir prudens non contra ventum mingit
  •  07-04-2008, 23:10 41416 σε απάντηση της 41393

    Απ: select DateTime SQL mobile 5

    ευχαριστώ παιδιά για την βοήθεια....
  •  08-04-2008, 14:09 41426 σε απάντηση της 41416

    Απ: select DateTime SQL mobile 5

    Και δεν βλέπω στον κώδικα σου καθόλου using.
    Ειδικά σε mobile εφαρμογή το using είναι απαραίτητο (παντού είναι αλλά εδώ ακόμα περισσότερο) διότι το mobile δεν έχει μεγάλο πλεόνασμα πόρων να διαθέσει. Δες αυτή την δημοσίευση για να πάρεις ιδέες






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