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

 

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

DataGridView και null τιμές

Îåêßíçóå áðü ôï ìÝëïò DeClen. Τελευταία δημοσίευση από το μέλος DeClen στις 25-01-2007, 14:27. Υπάρχουν 7 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  24-01-2007, 14:13 23955

    DataGridView και null τιμές

    Παιδιά καλησπέρα,

    Έχω ένα DataGridView και στο CellEndEdit event θέλω να χρησιμοποιώ ένα δικό μου update query ενός table adapter

    Ο κώδικας που χρησιμοποιώ είναι

    x_date = Nothing

    Με πιο τρόπο μπορώ να περάσω στην x_date την τιμή null αν το κελί είναι κενό? Προσπάθησα και με DBNull.Value αλλά δεν δούλεψε.

    Σημείωση:
    Αν ο χρήστης αντί για ημερομηνία δόσει ένα string, το λάθος πιάνεται από το DataError event του DataGrid. Το πρόβλημα εμφανίζεται όταν σβήνεται τελείως η ημερομηνία από το κελί.

    Δημοσίευση στην κατηγορία:
  •  24-01-2007, 14:44 23958 σε απάντηση της 23955

    Απ: DataGridView και null τιμές

    Αντί :

    myComp5.UpdateQuery(x_name, x_date.value, x)

    γράψε

    myComp5.UpdateQuery(x_name, x_date.GetValueOrDefault, x).

    Νομίζω είναι αυτό που θες.

  •  24-01-2007, 14:51 23959 σε απάντηση της 23955

    Απ: DataGridView και null τιμές

    Δυστυχώς δεν δούλεψε. Η εφαρμογή τώρα μου επιστρέφει

    SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.
  •  24-01-2007, 15:05 23963 σε απάντηση της 23959

    Απ: DataGridView και null τιμές

    Όχι σου δούλεψε... απλά τώρα κόλλησες στο datatype που χρησιμοποιείς για το συγκεκριμένο field στον sql server.... ή απλά δεν έχεις δηλώσει ότι δέχεται null τιμές. Αλλά από εκεί που κόλλησες περνάει... Θα πρέπει τώρα μέσα στο Update να τσεκάρεις και να λες αν είναι null τότε να περνάς στην βάση την DBNull για να σου βάλει null ο sql server στο field.
  •  24-01-2007, 15:46 23968 σε απάντηση της 23963

    Απ: DataGridView και null τιμές

    ...βασικά ψιλομπερδεύτηκα... Confused

    Το UpdateQuery είναι ένα παραμετρικό query που έχω φτιάξει στον Table Adapter. Χρησιμοποιώντας το παρακάτω

    Dim myComp5 As New TestDatDataSetTableAdapters.EtairiaTableAdapter()

    φτιάχνω το myComp5 instace και καλώ το UpdateQuery

    myComp5.UpdateQuery()

    Μέσα σε αυτό περνάω ως παραμέτρους τις τιμές των κελλιών του DataGridView.

    Το x_date δεν έχει την τιμή DBNull τώρα;

    Αν ναι δεν θα έπρεπε να περνάει (?) null στον SQL Server όταν καλώ το

    myComp5.UpdateQuery(x, x_name, x_date.GetValueOrDefault)

    Οι δήλωση του πεδίου στον SQL Server είναι σωστή. Επίσης και στη βάση αλλά και στο DataSet έχω δηλώσει να δέχεται null τιμές.

    Confused
  •  24-01-2007, 16:48 23974 σε απάντηση της 23968

    Απ: DataGridView και null τιμές

    Μήπως και βοηθήσω λίγο

    Η κλήση

    myComp5.UpdateQuery(x, x_name, DBNull.Value)

    Δεν θα έπρεπε να δουλεύει?

    Το error είναι

    Value of type 'System.DBNull' cannot be converted to 'System.Nullable(Of Date)
  •  25-01-2007, 13:45 24028 σε απάντηση της 23974

    Απ: DataGridView και null τιμές

    Όχι δεν πρέπει να δουλεύει. Είναι λίγο περίεργα τα πράγματα με την τιμή Null. Η collection system.nullable αντιπροσωπεύει objects τα οποία σαν default τιμή όταν δημιουργούνται μπορούν να έχουν την τιμή null. Για την τιμή των objects μιλάμε και όχι για τα ίδια τα objects να είναι null.

    Οπότε όταν πάει να γίνει το convert system.dbnull --> system.nullable αυτό δεν είναι σωστό γιατί πας να δώσεις στην οντότητα του object που ανήκει στο collection έναν άλλο τύπο και το collection σου δεν το δέχεται αυτό. system.nullable(of date).
  •  25-01-2007, 14:27 24032 σε απάντηση της 24028

    Απ: DataGridView και null τιμές

    Κατάλαβα, δύσκολα τα πράγματα με λίγα λόγια...

    Η αλήθεια είναι ότι από χθές με έχει "φάει" η όλη ιστορία με τις NULL τιμές. Υπήρχαν κάποιοι που μου είπαν ότι καλό είναι η βάσεις να μην έχουν NULL πεδία αλλά να αντικαθιστούν στο NULL με κάποια "συγκεκριμένη τιμή". Δεν ξέρω τώρα αν αυτή η προσέγγιση είναι καλή ή όχι. Confused

    Είδα επίσης την τάση πολλοί να χρησιμοποιούν Data Adapters, Commands και Parameters όπου η κατάσταση με τις NULL τιμές κάπως λύνεται. Αναρωτιέμαι όμως, η χρήση των Parameters δεν σημαίνει ότι κάποια queries (update και insert) θα περαστούν μέσα στον κώδικα? Από όσο ξέρω έτσι γίνεται. Αυτό όμως δεν χαλάει λίγο το μοντέλο του DAL (Data Access Layer) που από όσο καταλαβαίνω "προτείνει" όλες οι κλήσεις προς την βάση να υπάρχουν εκει πέρα (δηλ. στο DataSet)? (σημ. πρόσφατα είδα την έννοια του DAL οπότε συγχωρέστε μου τυχών βλακείες που μπορεί να λέω...). Embarrassed

    Μια σκέψη είναι η χρήση Parameters λοιπόν.

    Κάτι άλλο που μου ήρθε (ώστε να είμαι και σύμφωνος με την έννοια του DAL) είναι να περνάω την minimum τιμή του date αν το κελί είναι άδειο και μέσα από το update query με κάποιο case να υλοποιώ το "αν xxx='1/1/1900' τότε xxx NULL". Τώρα αυτή η λύση είναι λίγο "μπακαλίστικη" ή μου φαίνεται. Hmm

    Γενικά ρε παιδιά ποια τακτική χρησιμοποιείται με τα NULL?

    Αν σας ήταν εύκολο θα ήθελα κάποια σχόλια για τα παραπάνω γιατί ως νέος developer προσπαθώ να μάθω πως να υλοποιώ κάποια πράγματα "σωστά" και όχι "μπακάλικα".

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