<?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>WinForms</title><link>https://www.dotnetzone.gr:443/cs/forums/12/ShowForum.aspx</link><description>Θέματα για rich client / windows εφαρμογές, σε οποιαδήποτε γλώσσα (VB.NET, C#, managed C++, κ.α.)</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Re: compare dataset</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/3365.aspx</link><pubDate>Thu, 07 Jul 2005 18:09:46 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:3365</guid><dc:creator>gmlogic</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/3365.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=3365</wfw:commentRss><description>&lt;p&gt;&lt;font style="BACKGROUND-COLOR: #efefef"&gt;Οκ&lt;br /&gt;Σε ευχαριστώ πολύ&lt;br /&gt;για το κόπο σου και την υπομονή σου&lt;br /&gt;Γιώργος&lt;br /&gt;&lt;img src="/forums//emoticons/emotion-50.gif" alt="Broken Heart" /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;</description></item><item><title>Re: compare dataset</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/3363.aspx</link><pubDate>Thu, 07 Jul 2005 15:59:43 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:3363</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/3363.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=3363</wfw:commentRss><description>&lt;p&gt;&lt;font style="BACKGROUND-COLOR: #efefef"&gt;&lt;font size="2"&gt;Ναι, το έχω καταλάβει το case σου... Και αυτό που προσπαθώ να σου εξηγήσω είναι ότι εξαρχής η λογική είναι λάθος... Άπαξ και αλλάξεις την τιμή το HasChanges έχει γίνει true και για να ξαναγίνει fasle θα πρέπει να κάνεις update μέσω του DataAdapter ο οποίος κατά τη διαδικασία του update, στο τελευταίο στάδιο, κάνει AcceptChanges. &lt;br /&gt;Εναλλακτικά, μπορείς να κάνεις κι εσύ AcceptChanges ή RejectChanges όμως το πως ακριβώς, εξαρτάται από το πως έχεις υλοποιήσει την εφαρμογή σου. Γι αυτό και σου έδωσα τις γενικές πληροφορίες που χρειάζεσαι για να αποφασίσεις πως θα το κάνεις. &lt;br /&gt;Για παράδειγμα, όπως ανέφερα και στο προηγούμενο post, μπορείς να συγκρίνεις τις τιμές των&amp;nbsp;versions του row και αν είναι η νέα τιμή ίδια με την παλιά να αναιρέσεις την αλλαγή, προκαλώντας έμμεσα το HasChanges να γίνει false. Δηλαδή:&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Lucida Console'; mso-ansi-language: EN-GB"&gt;&lt;font size="2"&gt;&lt;span style="COLOR: blue"&gt;If&lt;/span&gt; drCurCustomer.Item("Name", DataRowVersion.Current) = _&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;drCurCustomer.Item("Name", DataRowVersion.Default) &lt;span style="COLOR: blue"&gt;Then&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;font size="2"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Lucida Console'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Lucida Console'"&gt;drCurCustomer.RejectChanges()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Lucida Console'"&gt;&lt;font size="2"&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;span style="COLOR: blue"&gt;If&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;Υπάρχουν διάφορα σημεία που μπορείς να κολλήσεις αυτόν τον κώδικα, όπως στο event που τρέχει μετά το update του row ή όταν κάνεις validate την φόρμα, κλπ. Γι αυτόν το λόγο λέω ότι εξαρτάται πως έχεις φτιάξει την εφαρμογή. Επίσης, το &lt;font face="Lucida Console"&gt;DataRowVersion.Current &lt;font face="Verdana"&gt;και το &lt;/font&gt;DataRowVersion.Default &lt;font face="Verdana"&gt;πάλι είναι δύο από τις τέσσερις τιμές που μπορεί να πάρει το enumeration και μπορεί στην υλοποίησή&amp;nbsp;σου να μην σου κάνουν. Γι αυτόν το λόγο θα πρέπει να διαβάσεις από το MSDN το πότε χρησιμοποιείται η κάθε τιμή του enumeration. Εκεί, έχει και ένα άλλο παράδειγμα σύκρισης τρέχουσας με προηγούμενης τιμής. Ελπίζω να σε βοήθησα γιατί πλέον δεν υπάρχει τίποτα παραπάνω επί του θέματος... πέραν του code review &lt;img src="/forums//emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;</description></item><item><title>Re: compare dataset</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/3342.aspx</link><pubDate>Wed, 06 Jul 2005 21:46:41 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:3342</guid><dc:creator>gmlogic</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/3342.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=3342</wfw:commentRss><description>&lt;span class="inlineLink"&gt;&lt;strong&gt;Αγαπητέ KelMan&lt;/strong&gt;&lt;/span&gt; &lt;br /&gt;Η ερώτηση δεν είναι πως θα επανέλθω στη προηγούμενη κατάσταση&lt;br /&gt;αλλά σε μία αλλαγή πού γίνεται αν επαναφέρεις την αλλαγή το &lt;font size="2"&gt;dataset1.HasChanges παραμένει True&lt;br /&gt;πχ&lt;br /&gt;1.ΚΑΤΑΣΤΑΣΗ&lt;br /&gt;Name="George Matz"&lt;br /&gt;dataset1.HasChanges=False&lt;br /&gt;2.ΑΛΛΑΓΗ&lt;br /&gt;Name="George BLABLA"&lt;br /&gt;dataset1.HasChanges=True&lt;br /&gt;3.ΕΠΑΝΑΦΟΡΑ&lt;br /&gt;Name="George Matz"&lt;br /&gt;dataset1.HasChanges=True&lt;br /&gt;4.Exit Form&lt;br /&gt;dataset1.HasChanges=True&lt;br /&gt;&lt;br /&gt;Thanks&lt;img src="/forums//emoticons/emotion-10.gif" alt="Embarrassed" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;</description></item><item><title>Re: compare dataset</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/3340.aspx</link><pubDate>Wed, 06 Jul 2005 19:26:01 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:3340</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/3340.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=3340</wfw:commentRss><description>Φίλε qmlogic, λίγη υπομονή και οι ερωτήσεις σου θα απαντηθούν... Έσβησα το νέο post σου έτσι ώστε να υπάρχει ένα σημείο απάντησης...&lt;br /&gt;&lt;br /&gt;Λοιπόν, έχουμε και λέμε: Για να επαναφέρεις το Dataset/DataTable/DataRow στην αρχική κατάσταση υπάρχει μία μέθοδος που λέγεται RejectChanges (και μπορεί να εφαρμοσθεί αντίστοιχα και στα τρία αυτά data objects). Με αυτή τη μέθοδο ουσιαστικά αλλάζεις το version του κάθε row και το φέρνεις σε προηγούμενη κατάσταση. Άρα λοιπόν, μπορείς στον έλεγχο σου να δεις αν το current value είναι ίδιο με το original value του row και κατόπιν να κάνεις πάνω στο row RejectChanges. Πλέον το αν το HasChanges σου επιστρέφει true ή false θα εξαρτάται από τις ενέργειες πού έχουν γίνει στα υπόλοιπα rows.&lt;br /&gt;Τώρα που έχεις το hint, μπορείς να συνεχίσεις το ψάξιμο στο MSDN όπου θα βρεις άφθονο documentation τόσο για το HasChanges, όσο και για το RejectChanges καθώς και το συμπληρωματικό AcceptChanges.</description></item><item><title>Re: compare dataset</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/3322.aspx</link><pubDate>Tue, 05 Jul 2005 18:55:40 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:3322</guid><dc:creator>gmlogic</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/3322.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=3322</wfw:commentRss><description>&lt;p&gt;&lt;font style="BACKGROUND-COLOR: #efefef"&gt;Ευχαριστώ για την απάντηση&lt;br /&gt;Το πρόβλημα είναι το εξής&lt;br /&gt;Γίνετε μια αλλαγή στη Φόρμα παίρνουμε &lt;font size="2"&gt;dataset1.HasChanges = True επαναφέρουμε την αλλαγη(δηλ.διορθώνουμε παλι την τιμή ενός πεδίου όπως ήταν αρχικά)αλλά πάλι είναι dataset1.HasChanges = True &lt;br /&gt;Στό Closing λοιπόν έχουμε μύνημα έγινε αλλαγή ενώ ουσιαστικά δεν έγινε αλλαγή&lt;br /&gt;και δέ θέλω να ενημερώνω την βάση αφου δεν υπάρχει αλλαγή&lt;br /&gt;πχ&lt;br /&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/p&gt; &lt;p&gt;Private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;font size="2"&gt; Form1_Load(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; sender &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; System.Object, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; e &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; System.EventArgs) &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Handles&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;MyBase&lt;/font&gt;&lt;font size="2"&gt;.Load&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;' Fill the DataSet.&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;dataset1.Fill(dsContacts)&lt;/p&gt; &lt;p&gt;dataset2 = dataset1.Copy()&lt;/p&gt;&lt;/blockquote&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; &lt;h1&gt;&lt;font face="Arial" size="2"&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;' The application is about to close. Make sure&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;' any changes to the data are safe.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;font size="2"&gt; Form1_Closing(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; sender &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Object&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; e &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; System.ComponentModel.CancelEventArgs) &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Handles&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;MyBase&lt;/font&gt;&lt;font size="2"&gt;.Closing&lt;/p&gt; &lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;' Finish the current edit.&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;dataset1.EndCurrentEdit()&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; RCountR &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Integer&lt;/font&gt;&lt;font size="2"&gt;, RCountC &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Integer&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; TError &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Boolean&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;TError = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;False&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;For&lt;/font&gt;&lt;font size="2"&gt; RCountR = 0 &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;To&lt;/font&gt;&lt;font size="2"&gt; dataset1.Tables(0).Rows.Count - 1&lt;/p&gt; &lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;For&lt;/font&gt;&lt;font size="2"&gt; RCountC = 0 &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;To&lt;/font&gt;&lt;font size="2"&gt; dataset1.Tables(0).Columns.Count - 1&lt;/p&gt; &lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;font size="2"&gt; dataset1.Tables(0).Rows(RCountR).Item(RCountC) &amp;lt;&amp;gt; dataset2.Tables(0).Rows(RCountR).Item(RCountC) &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Then&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt; &lt;p&gt;TError = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;True&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Exit&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;For&lt;/p&gt;&lt;/blockquote&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;/p&gt;&lt;/blockquote&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Next&lt;/p&gt;&lt;/blockquote&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Next&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;font size="2"&gt; TError = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;True&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Then&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;' Ask the user if we should save the changes.&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Select&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Case&lt;/font&gt;&lt;font size="2"&gt; MsgBox("Save changes?", MsgBoxStyle.YesNoCancel, "Save Changes?")&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Case&lt;/font&gt;&lt;font size="2"&gt; MsgBoxResult.Yes&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;' Save the changes.&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;SaveChanges()&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Case&lt;/font&gt;&lt;font size="2"&gt; MsgBoxResult.Cancel&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;' Cancel the exit.&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;e.Cancel = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;True&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Case&lt;/font&gt;&lt;font size="2"&gt; MsgBoxResult.No&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;' Do nothing. Just exit.&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Select&lt;/p&gt;&lt;/blockquote&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;/p&gt;&lt;/blockquote&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Ευχαριστώ&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;img src="/forums//emoticons/emotion-5.gif" alt="Wink" /&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/h1&gt;</description></item><item><title>Re: compare dataset</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/3314.aspx</link><pubDate>Tue, 05 Jul 2005 08:54:59 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:3314</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/3314.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=3314</wfw:commentRss><description>&lt;p&gt;&lt;font style="BACKGROUND-COLOR: #efefef"&gt;Όχι δεν έχει κάποιο compare method γιατί είναι πολύ σχετικό τι θέλει να κάνει ο καθένας compare... Μιας και δεν εξηγείς τι ακριβώς θέλεις να κάνεις, θα σου δώσω μερικές πληροφορίες σχετικά με τους μηχανισμούς που παρέχει το Dataset για να κάνει track τις αλλαγές και ανάλογα βλέπεις τι μπορεί να σου χρησιμεύει και πως... &lt;br /&gt;Το HasChanges method είναι ένας από τους τρόπους να δείς αν έχει αλλάξει το dataset. Από εκεί και πέρα, μπορείς με το GetChanges method (είτε στο dataset, είτε στο datatable) να πάρεις τι αλλαγές και να τις χειριστείς. &lt;br /&gt;Τόσο το HasChanges, όσο και το GetChanges μπορούν να δεχθούν μία παράμετρο τύπου DataRowState. Τι είναι αυτό; Είναι ένα enumeration με τιμές όπως DataRowState.Added, DataRowState.Deleted, κλπ (δες MSDN) όπου πλέον σου επιτρέπει να ρωτήσεις αν έχει αλλαγές ενός συγκεκριμένου τύπου (πχ inserts ή deletes ανάλογα). &lt;br /&gt;Αντίστοιχα, το GetChanges επιστρέφει ένα υποσύνολο του object πάνω στο οποίο&amp;nbsp;καλείται και αν περάσεις και το DataRowState τότε το υποσύνολο είναι ενός (ή παραπάνω, ανάλογα τι θα περάσεις) τύπου, πχ. όλες οι εγγραφές που έχουν γίνει update. &lt;br /&gt;Επίσης, υπάρχει και το DataTable.Select method το οποίο μπορεί προαιρετικά να δεχθεί μια DataRowState παράμετρο. Αυτό το method επιστρέφει ένα array από DataRow objects. &lt;br /&gt;Τέλος, μην ξεχνάς ότι πάντοτε για κάθε DataRow ενός DataTable κρατάς ταυτόχρονα όλες τις versions (τρέχουσα, αρχική, κλπ) και έτσι μπορείς να κάνεις ό,τι ελέγχους θέλεις.&lt;br /&gt;Α, ναι, ξέχασα και την GetChildRows ενός DataRow η οποία συμπεριφέρεται με την λογική της Select, παίρνοντας και αυτή προαιρετικά μια DataRowState παράμετρο, μόνο που τo DataRow array που επιστρέφει αφορά τα child rows ενός DataRow βάσει του DataRelation που έχει καθοριστεί. &lt;br /&gt;Άρα λοιπόν, δεν χρειάζεσαι δύο ξεχωριστά DataSets για να κάνεις compare γιατί όταν λες ότι έχεις ένα DataSet, ουσιαστικά έχεις πολλαπλά Datasets, το κάθε ένα με διαφορετικές εκδόσεις των δεδομένων, ανάλογα με το τι έχεις κάνει σε αυτά. Από εκεί και πέρα, μπορείς με διάφορα iterations να κάνεις ελέγχους, να ξεχωρίσεις τις εγγραφές που σε ενδιαφέρουν, κλπ...&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;</description></item><item><title>compare dataset</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/3313.aspx</link><pubDate>Tue, 05 Jul 2005 07:08:32 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:3313</guid><dc:creator>gmlogic</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/3313.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=3313</wfw:commentRss><description>&lt;p&gt;&lt;font style="BACKGROUND-COLOR: #efefef"&gt;Αγαπητοι&lt;br /&gt;Πως μπορώ να κάνω compare σε δύο dataset&lt;br /&gt;Εξηγούμε&lt;br /&gt;Σε μία Form με διάφορα controls(textbox κλπ)συνδεδεμένα με Dataset1 εκτελείτε μιά αλλαγή πχ σε ένα textbox οπότε αλάζει το&amp;nbsp;&lt;font size="2"&gt;&amp;nbsp;dataset1.HasChanges και μας λέει&lt;br /&gt;εχει γίνει αλλαγη στο dataset1 επαναφέρουμε το textbox στή παλιά τιμη και έχουμε το&amp;nbsp; &lt;/font&gt;&lt;font size="2"&gt;dataset1.HasChanges πάλι true &lt;br /&gt;Σκέφτηκα να κανώ dataset2=dataset1.copy() και μετά να συγκρίνω αυτά τα δύο&lt;br /&gt;dataset κατα το closing της Form&lt;br /&gt;Υπάρχει εντολή compare dataset ή πρέπει να συγκρίνω ολα τα items από τα datatables των dataset&lt;br /&gt;&lt;br /&gt;George M.&lt;img src="/forums//emoticons/emotion-10.gif" alt="Embarrassed" /&gt;&lt;br /&gt;&lt;br /&gt;Ευχαριστώ&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;</description></item></channel></rss>