<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>ADO.NET</title><link>https://www.dotnetzone.gr:443/cs/forums/78/ShowForum.aspx</link><description>Θέματα σχετικά με την προσπέλαση δεδομένων μέσω του ADO.NET και του System.Data namespace</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Custom Update Command</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/14559.aspx</link><pubDate>Mon, 10 Jul 2006 16:17:34 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:14559</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/14559.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=14559</wfw:commentRss><description>&lt;P&gt;H κάθε μέθοδος έχει τα πλεονεκτήματα και μειονεκτήματά της. &lt;/P&gt;
&lt;P&gt;Αν χρησιμοποιούμε το column name (ως string) είναι καλό γιατί διαβάζεται εύκολα ο κώδικας και σε προστατεύει αν στην πορεία της ανάπτυξης αλλάξεις το query προσθέτοντας ή αφαιρώντας πεδία. Από την άλλη μεριά όμως κάθε φορά που συναντά ως παράμετρο το string θα πρέπει να ψάξει στην εσωτερική δομή του να βρει σε ποιό index αντιστοιχεί αυτό το string, που σημαίνει ότι χάνουμε στο performance. Επίσης χάνουμε σε type safety καθώς ένα τυπογραφικό λάθος στο string θα φανεί μόνο κατά το runtime. Από την άλλη μεριά, αν χρησιμοποιήσουμε indexes αντιστρέφονται τα πλεονεκτήματα και τα μειονεκτήματα.&lt;/P&gt;
&lt;P&gt;Όταν χρησιμοποιούμε DataSets, η μόνη λύση για να ξεπεράσουμε τα μειονεκτήματα είναι να φτιάξουμε Typed DataSet. Κατά τ'άλλα, προσωπικά προτιμώ το string μόνο και μόνο για το readability του κώδικα.&lt;/P&gt;
&lt;P&gt;Ωστόσο αν χρησιμοποιούμε DataReader υπάρχει και μια τρίτη μέθοδος που έχει μόνο πλεονεκτήματα &lt;img src="/cs/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;/P&gt;
&lt;P&gt;Το object model του ADO.NET προσφέρει τη μέθοδο GetOrdinal. Δείτε αυτό το snippet (από MSDN):&lt;/P&gt;
&lt;P&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;  &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Dim&lt;/span&gt; mySelectQuery &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;String&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: #666666;background-color: #e4e4e4;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"SELECT OrderID, CustomerID FROM Orders"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Dim&lt;/span&gt; myConnection &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; SqlConnection(myConnString)&lt;br /&gt;  &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Dim&lt;/span&gt; myCommand &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; SqlCommand(mySelectQuery, myConnection)&lt;br /&gt;  myConnection.Open()&lt;br /&gt;  &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Dim&lt;/span&gt; myReader &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; SqlDataReader &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; myCommand.ExecuteReader()&lt;br /&gt;  &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Dim&lt;/span&gt; custIdCol &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Integer&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; myReader.GetOrdinal(&lt;span style="color: #666666;background-color: #e4e4e4;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"CustomerID"&lt;/span&gt;)&lt;br /&gt;  &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Do&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;While&lt;/span&gt; myReader.Read()&lt;br /&gt;    Console.WriteLine(&lt;span style="color: #666666;background-color: #e4e4e4;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"CustomerID = {0}"&lt;/span&gt;, myReader.GetString(custIdCol))&lt;br /&gt;  &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Loop&lt;/span&gt;&lt;br /&gt;  myReader.Close()&lt;br /&gt;  myConnection.Close()&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Παρατηρήστε το myReader.GetOrdinal("CustomerID"). Είναι το μόνο σημείο ελέγχου για πιθανό λάθος σύμφωνα με αυτά που λέγαμε προηγουμένως. Επίσης, άλλο ένα best practice είναι το type specific Get method, όπως εδώ το GetString. Υποθέτω όλα αυτά υπάρχουν στον DataReader προκειμένου να μπορεί να πετύχει κανείς το μέγιστο performance μιας που στην ουσία είναι ένας firehose cursor. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Custom Update Command</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/14556.aspx</link><pubDate>Mon, 10 Jul 2006 03:57:33 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:14556</guid><dc:creator>evliatsas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/14556.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=14556</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;papadi wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;
&lt;P&gt;Γενικά δεν είναι καλό να χρησιμοποιείς το ItemArray δίνοντας index για να πάρεις την τιμή μιας στήλης. Προτίμησε να πάρεις την τιμή με dr["columnName"]&lt;/P&gt;
&lt;P&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Έχεις απόλυτο δίκιο, και μάλιστα συνάντησα πρόβλημα αμέσως και αναγκάστηκα εκ των πραγμάτων να ακολουθήσω την λύση που προτείνεις.&lt;/P&gt;
&lt;P&gt;Ευχαριστώ και πάλι....&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Custom Update Command</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/14554.aspx</link><pubDate>Mon, 10 Jul 2006 00:07:23 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:14554</guid><dc:creator>Dimitris Papadimitriou</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/14554.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=14554</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;evliatsas wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt; 
&lt;P&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt; &lt;br /&gt;&lt;br /&gt;                myCustomerList .ValueListItems.Add(dr.ItemArray[0], dr.ItemArray[1].ToString());&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Γενικά δεν είναι καλό να χρησιμοποιείς το ItemArray δίνοντας index για να πάρεις την τιμή μιας στήλης. Προτίμησε να πάρεις την τιμή με dr["columnName"]&lt;/P&gt;</description></item><item><title>Απ: Custom Update Command</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/14551.aspx</link><pubDate>Sun, 09 Jul 2006 21:07:36 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:14551</guid><dc:creator>evliatsas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/14551.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=14551</wfw:commentRss><description>&lt;P&gt;Η λύση με τα ValueLists δούλεψε κανονικά&lt;/P&gt;
&lt;P&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt; &lt;br /&gt;&lt;br /&gt;Infragistics.Win.ValueList myCustomerList &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;new&lt;/span&gt; Infragistics.Win.ValueList();&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;foreach&lt;/span&gt; (DataRow dr &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;in&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;this&lt;/span&gt;.MyAppDataDataSet.Tables[&lt;span style="color: #666666;background-color: #e4e4e4;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"Customers"&lt;/span&gt;].Rows)&lt;br /&gt;            {&lt;br /&gt;                myCustomerList .ValueListItems.Add(dr.ItemArray[0], dr.ItemArray[1].ToString());&lt;br /&gt;            }&lt;br /&gt;myUltraGrid.DisplayLayout.Bands[0].Columns[&lt;span style="color: #666666;background-color: #e4e4e4;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"customerID"&lt;/span&gt;].ValueList &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; myCustomerList ;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Οπότε μετά με nCustomers_nProductsTableAdapter.Update(MyAppDataDataSet) καθαρίζω.&lt;/P&gt;
&lt;P&gt;Thanks a lot guys....&lt;/P&gt;
&lt;P&gt;Βέβαια η αρχική μου απορία, για το πως μπορώ να κατασκευάσω εγώ ένα Update Query παραμένει, οπότε&amp;nbsp;άν και θα σημειώσω το thred επιλυμένο, παρακαλείται όποιος βρεί κάποιο σχετικό παράδειγμα να το κάνει post.&lt;/P&gt;</description></item><item><title>Απ: Custom Update Command</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/14549.aspx</link><pubDate>Sun, 09 Jul 2006 19:48:21 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:14549</guid><dc:creator>evliatsas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/14549.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=14549</wfw:commentRss><description>&lt;P&gt;Το Exception που παίρνω είναι:&lt;/P&gt;
&lt;P&gt;System.Data.SqlClient.SqlException was unhandled&lt;BR&gt;&amp;nbsp; Message="Incorrect syntax near '0000'."&lt;BR&gt;&amp;nbsp; Source=".Net SqlClient Data Provider"&lt;BR&gt;&amp;nbsp; ErrorCode=-2146232060&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Όσο αφορά την Update() Function, ακολούθησα την πεπατημένη(δεξί κλίκ στο TableAdapter, AddQuery..,Use SQL Statement, Update.....) και έκανα generate την Update(int @Param1,int @Param2,double @Parma3).Όταν όμως την καλούσα έπαιρνα exception για duplicate keys&amp;nbsp;και την προτροπή relax constraints.&lt;/P&gt;
&lt;P&gt;Θα προσπαθήσω να τα καταφέρω χρησιμοποιώντας ValueList.&lt;/P&gt;</description></item><item><title>Απ: Custom Update Command</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/14547.aspx</link><pubDate>Sun, 09 Jul 2006 18:52:33 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:14547</guid><dc:creator>Dimitris Papadimitriou</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/14547.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=14547</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;evliatsas wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;
&lt;P&gt;Μετά προσπάθησα να δημιουργήσω μία Custom Update() Function στο κατάλληλο TableAdapter του DataSet, μιάς και δεν γίνεται Auto Generated λόγω του JOIN που περιέχει το Select Statement. Δυστυχώς μετά από αρκετές προσπάθειες δεν τα κατάφερα :(&lt;/P&gt;
&lt;P&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Δεν μπορώ να πω κάτι γιατί δεν αναφέρεις τι έγινε τελικά&lt;/P&gt;
&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;evliatsas wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;&lt;/P&gt;
&lt;P&gt;Εδώ, άν και το updateCommand string που παράγεται παίζει κανονικά μέσα από τον SQL Server Manager, το executable ρίχνει exception στο ExecuteNonQuery().&lt;/P&gt;
&lt;P&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Το query σου φαίνεται σωστό. Ποιο είναι το exception&amp;nbsp;που παίρνεις;&lt;/P&gt;
&lt;P&gt;Σχετικά με τον τρόπο που προτείναι ο KelMain και εγώ κάτι τέτοιο κάνω. Μόνο που αν το πεδίο που θέλουμε να αντικαταστήσουμε είναι ένα πεδίο τύπου customerId, δεν μπορούμε να φορτώσουμε όλο τον πίνακα customer, μια που αυτός αναμένεται να είναι μεγάλος.&lt;/P&gt;</description></item><item><title>Απ: Custom Update Command</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/14542.aspx</link><pubDate>Sun, 09 Jul 2006 08:19:49 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:14542</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/14542.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=14542</wfw:commentRss><description>&lt;P&gt;Εγώ στο UltraWinGrid δουλεύω λίγο διαφορετικά. Φτιάχνω το dataset κανονικά, ορίζοντας τα DataTables και καθορίζοντας τις σχέσεις μεταξύ τους, χωρίς δηλαδή να φτιάχνω queries με joins, εφόσον βέβαια πρόκειται να κάνω updates. Κατόπιν, ρίχνω το UltraWinGrid στη φόρμα. Επίσης, για κάθε Column που θέλω να κάνει lookup βάζω κι από ένα UltraDropDown και το συνδέω ανάλογα στο ValueList property του αντίστοιχου column του UltraWinGrid. &lt;/P&gt;</description></item><item><title>Απ: Custom Update Command</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/14541.aspx</link><pubDate>Sun, 09 Jul 2006 07:40:59 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:14541</guid><dc:creator>evliatsas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/14541.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=14541</wfw:commentRss><description>&lt;P&gt;Συγνώμη για τα κενά της ερώτησης.&lt;/P&gt;
&lt;P&gt;Το Component που χρησιμοποιώ είναι το UltraWinGrid v6.1&lt;/P&gt;
&lt;P&gt;Το connection για κάποιο (άγνωστο σε μένα) λόγο δεν είναι open αλλά προσπέρασα τον ύφαλο με&lt;/P&gt;
&lt;P&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;System.Data.SqlClient.SqlConnection sqlconn &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;new&lt;/span&gt; System.Data.SqlClient.SqlConnection();&lt;br /&gt;            sqlconn.ConnectionString =MyApp.Properties.Settings.Default.MyAppDataConnectionString;&lt;br /&gt;            sqlconn.Open();&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Μετά προσπάθησα να δημιουργήσω μία Custom Update() Function στο κατάλληλο TableAdapter του DataSet, μιάς και δεν γίνεται Auto Generated λόγω του JOIN που περιέχει το Select Statement. Δυστυχώς μετά από αρκετές προσπάθειες δεν τα κατάφερα :(&lt;/P&gt;
&lt;P&gt;Έπειτα δοκίμασα έναν ποιο ευθύ και προγραμματιστικά "μή έξυπνο" τρόπο (πιο πολύ για να τεστάρω άν δουλεύει)&lt;/P&gt;
&lt;P&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;foreach&lt;/span&gt; (DataRow dr &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;in&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;this&lt;/span&gt;.MyAppDataSet.Tables[0].Rows)&lt;br /&gt;            {                &lt;br /&gt;                &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;string&lt;/span&gt; updateCommand &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: #666666;background-color: #e4e4e4;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"Update [dbo].[nCustomers_nProducts] SET [discount]="&lt;/span&gt;+dr.ItemArray[0].ToString()&lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;+&lt;/span&gt; &lt;span style="color: #666666;background-color: #e4e4e4;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;" WHERE [customer_id]="&lt;/span&gt;+dr.ItemArray[5].ToString()&lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;+&lt;/span&gt;&lt;span style="color: #666666;background-color: #e4e4e4;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;" and [product_id]="&lt;/span&gt;+dr.ItemArray[1].ToString();&lt;br /&gt;                System.Data.SqlClient.SqlCommand sqlcomm &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;new&lt;/span&gt; System.Data.SqlClient.SqlCommand();&lt;br /&gt;                sqlcomm.CommandText &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; updateCommand;&lt;br /&gt;                sqlcomm.Connection= sqlconn;&lt;br /&gt;                sqlcomm.ExecuteNonQuery();&lt;br /&gt;            }&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Εδώ, άν και το updateCommand string που παράγεται παίζει κανονικά μέσα από τον SQL Server Manager, το executable ρίχνει exception στο ExecuteNonQuery().&lt;/P&gt;
&lt;P&gt;Να σημειώσω πως το PK του πίνακα nCustomers_nProducts είναι ο συνδιασμός των πεδίων customer_id και product_id και επίσης πως το DataSet Table παίρνει τις αλλαγές των τιμών από το UI Component.&lt;/P&gt;
&lt;P&gt;Τέλος αυτό που με απογοήτευσε τελείως είναι πως δεν μπόρεσα να βρώ πουθενά ένα παράδειγμα για το παραπάνω (κοινό πιστεύω) σενάριο.&lt;/P&gt;
&lt;P&gt;Ο μόνος τρόπος που το κατάφερα να δουλεύει, είναι άν δεν εκτελέσω JOIN στο Select, αλλά τότε ο χρήστης δεν βλέπει το λεκτικό των πεδίων, αλλά το smallint&amp;nbsp;που χρησιμοποιώ ώς&amp;nbsp;id.&lt;/P&gt;</description></item><item><title>Απ: Custom Update Command</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/14530.aspx</link><pubDate>Sun, 09 Jul 2006 00:24:30 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:14530</guid><dc:creator>Dimitris Papadimitriou</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/14530.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=14530</wfw:commentRss><description>αν μπορείς εξήγησε ποιο είναι το πρόβλημα; Δεν μπορείς να πάρεις από το UI την σωστή τιμή, έχεις πρόβλημα με το open connection, το update command κλπ;&lt;br /&gt;
&lt;br /&gt;
Ποια ακριβώς component χρησιμοποιείς.</description></item><item><title>Custom Update Command</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/14525.aspx</link><pubDate>Sat, 08 Jul 2006 19:13:19 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:14525</guid><dc:creator>evliatsas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/14525.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=14525</wfw:commentRss><description>&lt;P&gt;Το πρόβλημα είναι το εξής....&lt;/P&gt;
&lt;P&gt;Έχω σε μία Windows Form (VS 2005), δύο Views από SQL Server Express 2005. Τα Views αυτά είναι Related σε ένα απλό μοντέλο Customer-&amp;gt;Products.&lt;/P&gt;
&lt;P&gt;Όσο το μόνο που έχω να κάνω, είναι να τα παρουσιάζω δομημένα, όλα ωραία και μάλιστα πιο εύκολα και αυτοματοποιημένα από την προηγούμενη έκδοση του VS.&lt;/P&gt;
&lt;P&gt;Έλα όμως που θέλω ο χρήστης να κάνει Edit ένα πεδίο Discount για κάθε πελάτη!!! και μάλιστα ο απαιτητικός θέλω αυτό να αποθηκεύεται στον αντίστοιχο πίνακα στην βάση!!!&lt;/P&gt;
&lt;P&gt;Λογικά λοιπόν σκεπτόμενος, πήγα να γράψω ένα SQL Command το οποίο θα εκτελεστεί στο Open Connection που έχω στη βάση.&lt;/P&gt;
&lt;P&gt;Παρότι όμως έχω χρησιμοποιήσει την πρακτική αυτή δεκάδες φορές στο VS 2003, έχω δύο μέρες που το καινούριο Studio και οι DataBinding "ευκολίες" του με κάνουν να αισθάνομαι πραγματικά ηλίθιος.&lt;/P&gt;
&lt;P&gt;Παιδιά, όποιος έχει κάποια λύση, please put me out of my misery.&lt;/P&gt;
&lt;P&gt;Σημείωση: Οι πίνακες έιναι τρείς (κλασική σχέση n:n) και βέβαια το Discount πεδίο βρίσκεται στον ενδιάμεσο πίνακα, τα views τα ΄"σηκώνω" σε Infragistics Grid το οποίο προβάλει σε nested μορφή related records.&lt;/P&gt;</description></item></channel></rss>