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

 

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

Σύνδεση Sql Server2008 με Visual Studio -> Πρόβλημα με GUID

Îåêßíçóå áðü ôï ìÝëïò Alexch. Τελευταία δημοσίευση από το μέλος KelMan στις 13-06-2011, 12:54. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  11-06-2011, 14:11 66237

    Σύνδεση Sql Server2008 με Visual Studio -> Πρόβλημα με GUID

    Καλησπέρα,

     έχω υλοποιήσει μια βάση στον Sql Server 2008 και θέλω να την ανοίξω με εφαρμογή που έφτιαξα στο Visual Studio. 

    Αφού κάνω το databinding και ουσιαστικά τελειώσω και την εφαρμογή, εμφανίζεται το εξής πρόβλημα στο debugging. 'Εχω ορίσει τα primary keys ως uniqueidentifiers με default value = newid(). Όταν κάνω ένα νέο record σε πίνακα στον Sql το πεδίο του guid συμπληρώνεται αυτόματα αφού κανω execute.Όμως για κάποιο λόγο, όταν πάω να κάνω νεό record στο VS, το ίδιο πεδίο φαίνεται να μην συμπληρώνεται αυτόματα , με αποτέλεσμα να χτυπάει error(Collumn does not allow nulls) και να μην μπορώ να καταχωρήσω το record.

     Δοκίμασα να κάνω copy στο συγκεκριμένο πεδίο του record,  guid από παραπάνω γραμμή και να το αλλάξω λίγο, αλλά πάλι μου χτυπάει το ίδιο error, επομένως σημαίνει η τιμή του πεδίου είναι πάντα null  και δεν εκχωρείται από την newid().

    Τα properties του guid δεν μπορούν  να πειραχθούν από τον Sql. 

    Μπορεί κάποιος να μου προτείνει κάποια λύση?? 

    Δημοσίευση στην κατηγορία: , , ,
  •  11-06-2011, 19:55 66239 σε απάντηση της 66237

    Απ: Σύνδεση Sql Server2008 με Visual Studio -> Πρόβλημα με GUID

    To newid() εκτελείται στον SQL Server, server side δηλαδή, αλλά όταν η εφαρμογή σου φτιάχνει τη νέα εγγραφή, είσαι client-side. Να υποθέσω ότι παίζεις με DataSets? Θα πρέπει, ανάλογα με τον τρόπο που έχεις υλοποιήσει το functionality της προσθήκης της νέας εγγραφής, να πιάνεις τη στιγμή που δημιουργείται η εγγραφή και να κάνεις assign ένα νέο guid. Κατόπιν το πεδίο θα έχει τιμή και δεν θα λαμβάνεις το exception.

     


    Vir prudens non contra ventum mingit
  •  11-06-2011, 20:32 66244 σε απάντηση της 66239

    Απ: Σύνδεση Sql Server2008 με Visual Studio -> Πρόβλημα με GUID

    Ναι χρησιμοποιώ DataSets και απλώς κάνω drag and drop τους πινακες στις Φόρμες. 

    Μου πρότειναν να χρησιμοποιήσω το RowChanged  event του DataTable ως εξής:

    if (e.Action == DataRowAction.Add)  e.Row["RowId"] = Guid.NewGuid();

    όμως εγώ χρησιμοποιώ DataGridView και δεν ξέρω ποιό είναι το ανάλογο event ή αν αλλάζει το συντακτικό της εντολής.
  •  11-06-2011, 23:19 66247 σε απάντηση της 66244

    Απ: Σύνδεση Sql Server2008 με Visual Studio -> Πρόβλημα με GUID

    To DataTable είναι που γίνεται bind πάνω στο DataGridView, αυτή η τεχνική θα δουλέψει μια χαρά και δεν έχει σχέση αν χρησιμοποιείς DataGridView ή οποιοδήποτε άλλο control. Το συντακτικό δεν αλλάζει, ωστόσο θα πρέπει να βάλεις το σωστό όνομα πεδίου μέσα στα quotes.

    Θα σου πρότεινα να ρίξεις μια ματιά στα παρακάτω links για να σου λυθούν διάφορες απορίες:

    http://msdn.microsoft.com/en-us/vbasic/ff718213

    http://msdn.microsoft.com/en-us/library/ef2xyb33.aspx

    Το πρώτο link είναι για VB.NET αλλά δεν έχει και τόσο πολύ κώδικα. Τα videos είναι super! Αν δυσκολευτείς με τον κώδικα, χρησιμοποίησε κάποιον από τους converters ή βάλε εδώ στο DNZ ερώτηση.

     


    Vir prudens non contra ventum mingit
  •  12-06-2011, 00:25 66248 σε απάντηση της 66247

    Απ: Σύνδεση Sql Server2008 με Visual Studio -> Πρόβλημα με GUID

    Πρόσθεσα στο Load event της Φόρμας μου το παρακάτω

    this.roomsToLetDataSet.Clients.RowChanged += new DataRowChangeEventHandler(Clients_RowChanged);   

    όπου

     void Clients_RowChanged(object sender, DataRowChangeEventArgs e)
            {
                
                if (e.Action == DataRowAction.Add) 
                { e.Row["ClientID"] = Guid.NewGuid(); } 
                
            }

    και πάλι λαμβάνω error ότι το PK column does not allow nulls.Στο debugging βλέπω ότι παίρνω μια τιμή guid από την παραπάνω διαδικασία όμως για κάποιο λόγο αυτή δεν  μπαίνει και στον πίνακα.
  •  13-06-2011, 12:54 66256 σε απάντηση της 66248

    Απ: Σύνδεση Sql Server2008 με Visual Studio -> Πρόβλημα με GUID

    Σωστά, τώρα το πρόσεξα, το κατάλληλο event είναι το TableNewRow. Αυτό γίνεται raise όταν προσθέτεις ένα DataRow...

     


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