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

 

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

VS2005 Repoting desing - DateTime picker bug?

Îåêßíçóå áðü ôï ìÝëïò lemix. Τελευταία δημοσίευση από το μέλος lemix στις 23-10-2007, 11:49. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  19-10-2007, 19:13 36391

    VS2005 Repoting desing - DateTime picker bug?

    Καλησπέρα,

    προσπαθώ να κάνω ένα report που να δέχεται παραμετρικά την ημερομηνία μέσω DateTime picker field (από το report parameter) και αντιμετωπίζω το εξής πρόβλημα:

    Στο preview pane του report designer, ενώ το datetime picker μου την εμφανίζει ώς dd/mm/yyyyy εσωτερικά την βλέπει ώς mm/dd/yyyyy με αποτέλεσμα να χτυπάει 'parameter xxxxx is not valid for its type', εφόσον επιλέγω π.χ. 30/12/2007

    H πρώτη προσπάθεια ήταν να αλλάξω:
    - το language του report properties σε User!language
    - να θέσω από το Tools|Options το Internatonal Settings σε 'Same as Microsoft Windows' (από English)
    - να ελέγξω ότι τα regional/languages settings είναι Greek.

    Έχω κολλήσει πραγματικά και δεν ξέρω τι μπορεί να φταίει...

    Υπάρχει καμμιά λύση????

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

    Η έκδοση που χρησιμοποιώ είναι:


    Microsoft Visual Studio 2005
    Version 8.0.50727.762  (SP.050727-7600)
    Microsoft .NET Framework
    Version 2.0.50727

    Installed Edition: IDE Standard

    Microsoft Visual Studio 2005 Premier Partner Edition - ENU Service Pack 1 (KB926601)  
    This service pack is for Microsoft Visual Studio 2005 Premier Partner Edition - ENU.

    SQL Server Analysis Services  
    Microsoft SQL Server Analysis Services Designer
    Version 9.00.1399.00

    SQL Server Integration Services  
    Microsoft SQL Server Integration Services Designer
    Version 9.00.1399.00

    SQL Server Reporting Services  
    Microsoft SQL Server Reporting Services Designers
    Version 9.00.1399.00



  •  19-10-2007, 19:23 36393 σε απάντηση της 36391

    Απ: VS2005 Repoting desing - DateTime picker bug?

    Τί εννοείς "εσωτερικά"? Το πεδίο πως είναι ορισμένο στη βάση και στο dataset που χρησιμοποιείς? Αν είναι τύπου datetime στη βάση και το dataset δεν τίθεται θέμα μετατροπής. Μήπως κάπου χρησιμοποιείς string ή varchar αντί για datetime?
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  19-10-2007, 19:30 36395 σε απάντηση της 36393

    Απ: VS2005 Repoting desing - DateTime picker bug?

    Παράληψή μου... η βάση είναι σε AS400 και η ημερομηνία είναι της μορφής YYYYMMDD (numeric 8). Προσπαθώ να περάσω την ημερομηνία στο sql μέσω expr (Year/Month/Day της παραμέτρου).   Όταν λέω εσωτερικά, εννοώ ότι, αν βάλω μια ημερομηνία DD/MM/YYYY π.χ. 01/10/2007  το sql  δουλεύει αλλά  εμφανίζει στοιχεία για 10/01/2007 και το datetime picker μετά την εμφάνιση του report δείχνει 10/01/2007 (MM/DD/YYYY).

  •  19-10-2007, 19:54 36396 σε απάντηση της 36395

    Απ: VS2005 Repoting desing - DateTime picker bug?

    Το ότι εμφανίζονται έτσι τα δεδομένα δεν σημαίνει ότι γίνεται κανένα "εσωτερικό" conversion ή bug. Όταν εκτελείς ένα query από ένα εργαλείο όπως ο query analyzer οι ημερομηνίες (ΑΝ είναι όντως ημερομηνίες και όχι κείμενο)θα εμφανιστούν με βάση τις ρυθμίσεις του εργαλείου. Το ίδιο συμβαίνει και όταν βάζεις ένα watch για να δεις τί περιέχει ένα datetime πεδίο σε ένα dataset ή μία datetime μεταβλητή. Η μεταβλητή διατηρεί πάντα την τιμή της, αυτό που αλλάζει είναι η αναπαράσταση σε κείμενο. Αν έχεις ελληνικές ρυθμίσεις θα δεις την τιμή της μεταβλητής ως 1/10, αν έχεις αμερικάνικες 10/1, αλλά η μεταβλητή περιέχει πάντα την τιμή 1 Οκτωβρίου. Όταν κάνεις πράξεις μεταξύ μεταβλητών datetime η αναπαράσταση δεν παίζει ρόλο. Αν προσθέσεις, π.χ. 2 ημέρες η νέα ημερομηνία θα εμφανίζεται ως 3/10 για ελληνικές ρυθμίσεις και 10/3 για αμερικάνικες.

    Τα προβλήματα εμφανίζονται αν για κάποιο λόγο παρεμβάλλεται μετατροπή σε κείμενο ή άλλη μορφή. Υποψιάζομαι ότι έχεις γράψει το query έτσι ώστε η τιμή του datetime picker να μετατρέπεται σε string. Αυτό το string όμως για το ελληνικό σου μηχάνημα θα έχει τη μορφή DD/MM/YYYY αλλά το AS400 θα περιμένει την MM/DD/YYYY. Η καλύτερη λύση θα ήταν απλά, να μην περνάς string αλλά datetime. Θα πρέπει στο query σου να μετατρέπεις το οκταψήφιο νούμερο στον τύπο DATE του AS400 και να βασιστείς στο ότι ο ADO.NET provider για το 400άρι δεν θα κάνει καμμία "κρυφή" μετατροπή. Αλλά επειδή αυτό είναι 400άρι και δεν στηρίζεται πάντα στη λογική, θα μπορούσες στο query που χρησιμοποιείς για το filtering να μετατρέψεις την τιμή του datetimepicker σε νούμερο ή string με τη μορφή που αποθηκεύεται και στο 400άρι. Αλήθεια, ποιό είναι το query που χρησιμοποιείς για filtering?


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  22-10-2007, 10:04 36479 σε απάντηση της 36396

    Απ: VS2005 Repoting desing - DateTime picker bug?

    Επειδή το δουλεύω από τη δουλειά, δεν μπόρεσα να σου απαντήσω το S/K. Λοιπόν, το SQL είναι αυτο:


    SELECT     DEP68DATE, DEP68INDX, DEP68DESC, DEP68TYPE, DEP68CCYN, DEP68BRNC, DEP68ACCT, DEP68CCY2, DEP68CURR, DEP68AVBL, DEP68POSO,
                    DEP68REFN, DEP68DAEN, DEP68DALH, DEP68NARR, DEP68STAT, DEP68TIME, DEP68ACCT AS Expr1
    FROM       DEPP68
    WHERE     (DEP68STAT = ?) AND (DEP68DATE >= ?)
    ORDER BY DEP68DATE, DEP68BRNC, DEP68ACCT


    Η πρώτη (?) είναι string (Parameter1) και η δεύτερη (?) αυτή που με ενδιαφέρει, ας την πούμε Parameter2 (όπως φαίνονται στο report parameters).
    Το DEP68DATE είναι της μορφής YYYYMMDD (απλό numeric και όχι datetime) και για να μπορέσω να χρησιμοποιήσω το datetime picker (ParmDate1), κάνω τα εξής:

    1) Έθεσα την parmDate1 as datetime με default values "Not quered" την exp:
    =Today

    2) Έθεσα την Parameter2 "Internal" as integer με default values "Not quered" την exp:
    = Val(Format((Year(Parameters!parmDate1.Value.ToString()))) & (Format(Month(Parameters!parmDate1.Value),"00")) & (Format(Day(Parameters!parmDate1.Value),"00")))

    Tο SQL παίζει αλλά για 01/07/2007 γυρνάει τα records για 20070107. Αν βάλω 22/10/2007 βαράει "The value provided for the report parameter 'parmDate1' is not valid for its type"...

    Φαίνεται ότι το date format που καταλαβαίνει το datetime picker είναι της μορφής MM/DD/YYYY και όχι DD/MM/YYYYY (παρότι επιλέγω και μου εμφανίζει 01/07/2007, μετά το report generation εμφανίζει 07/01/2007 στο datetime πεδίο και στοιχεία για 07/01/2007 στο report....)

    Για τον λόγο αυτό έκανα:

    - το language του report properties σε User!language
    - να θέσω από το Tools|Options το Internatonal Settings σε 'Same as Microsoft Windows' (από English)
    - να ελέγξω ότι τα regional/languages settings είναι Greek.


    Τι να φταίει?...



  •  23-10-2007, 11:49 36503 σε απάντηση της 36391

    Απ: VS2005 Repoting desing - DateTime picker bug?

    Έλειπε τελικά το SP2 για τον SQL Server 2005.
    Τώρα δουλεύει μια χαρά Stick out tongue
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems