<?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>Πρώτα Βήματα - Web Development</title><link>https://www.dotnetzone.gr:443/cs/forums/75/ShowForum.aspx</link><description>Ολα τα θέματα που σας απασχολούν σχετικά με ASP, ASP.NET αν τώρα επιχειρείτε να φτιάξετε την πρώτη σας σελίδα.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Έλεγχος διπλοεγγραφής</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21462.aspx</link><pubDate>Thu, 30 Nov 2006 22:45:02 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21462</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21462.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=75&amp;PostID=21462</wfw:commentRss><description>Καλύτερα να κάνεις handle το exception. Αφ' ενός ο server δεν θα χρειάζεται να τρέξει όλα αυτά τα SELECT. Αφ' ετέρου, εφ' όσον πρόκειται για πολυχρηστική εφαρμογή, δεν υπάρχει καμία εγγύηση ότι από την στιγμή που έκανες το SELECT και είδες ότι δεν υπάρχει η εγγραφή, μέχρι τη στιγμή που κάνεις το&amp;nbsp; INSERT, δεν θα έχει προλάβει κάποιος τρίτος να κάνει το ίδιο INSERT.</description></item><item><title>Απ: Έλεγχος διπλοεγγραφής</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21448.aspx</link><pubDate>Thu, 30 Nov 2006 20:22:42 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21448</guid><dc:creator>AngleV</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21448.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=75&amp;PostID=21448</wfw:commentRss><description>&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; ConnString &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;String&lt;/FONT&gt;&lt;FONT size=2&gt; = System.Configuration.ConfigurationManager.ConnectionStrings(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"LocalSqlServer"&lt;/FONT&gt;&lt;FONT size=2&gt;).ToString&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; myConn &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;New&lt;/FONT&gt;&lt;FONT size=2&gt; Data.SqlClient.SqlConnection(ConnString)&lt;BR&gt;myConn.Open()&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; sqlString = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"SELECT COUNT(*) FROM [myTable] WHERE ([Key1] ="&lt;/FONT&gt;&lt;FONT size=2&gt; + Request.QueryString(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"key1"&lt;/FONT&gt;&lt;FONT size=2&gt;) + &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;" AND key2="&lt;/FONT&gt;&lt;FONT size=2&gt; + KeysDropDownList.Text + &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;")"&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&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; myCommand &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;New&lt;/FONT&gt;&lt;FONT size=2&gt; Data.SqlClient.SqlCommand(sqlString, myConn)&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; NumberOfRecords &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;NumberOfRecords = myCommand.ExecuteScalar()&lt;/P&gt;
&lt;P&gt;myConn.Close()&lt;/P&gt;
&lt;P&gt;myConn = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Nothing&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;If&lt;/FONT&gt;&lt;FONT size=2&gt; NumberOfRecords = 0 &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Then&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT color=#008000&gt;'Η ΕΓΓΡΑΦΗ ΔΕΝ ΥΠΑΡΧΕΙ. ΑΣΕ ΤΟΝ ΧΡΗΣΤΗ ΝΑ ΤΗΝ ΚΑΤΑΧΩΡΗΣΕΙ&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;else&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#006400&gt;'η εγγραφή υπάρχει. Ενημέρωσε τον χρήστη ότι δεν μπορεί να την ξαναπεράσει&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;end if&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Βέβαια μου φαίνεται οξύμωρο να έχουμε ήδη ενα open conection στην βάση με το SqlDatasource control και να ανοίγουμε και άλλο&amp;nbsp;ένα&amp;nbsp;&amp;nbsp;για να τσεκάρουμε αν υπάρχει ή όχι στην βάση η εγγραφή ;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;</description></item><item><title>Απ: Έλεγχος διπλοεγγραφής</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21444.aspx</link><pubDate>Thu, 30 Nov 2006 19:49:34 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21444</guid><dc:creator>AngleV</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21444.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=75&amp;PostID=21444</wfw:commentRss><description>Και πως κάνουμε έλεγχο στην βάση αν υπάρχει ήδη η εγγραφή,&lt;br /&gt;
&lt;br /&gt;
με την χρήση ενός SqlDataSource Control ;&lt;br /&gt;
&lt;br /&gt;</description></item><item><title>Απ: Έλεγχος διπλοεγγραφής</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21396.aspx</link><pubDate>Wed, 29 Nov 2006 23:25:32 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21396</guid><dc:creator>Νατάσα Μανουσοπούλου</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21396.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=75&amp;PostID=21396</wfw:commentRss><description>Σϊγουρα πρέπει να κάνεις τον έλεγχο στη βάση, γιατί εκείνο είναι το μόνο σημείο όπου ο έλεγχος θα γίνει σωστά. Εσύ μπορείς να τον κάνεις στον κώδικά σου, αλλά από το σημείο του ελέγχου μέχρι να γίνει η εισαγωγή, μπορεί να σε προλάβει κάποιος άλλος. Αν θέλεις να ελέγξεις, να ενημερώσεις το χρήστη αν βρεις την εγγραφή,
και αν δεν την βρεις να κάνεις την εισαγωγή με την ασφαλιστική δικλείδα
του constraint, έχει καλώς.&lt;br&gt;&lt;br&gt;Επίσης είναι απαραίτητο τα μηνύματα που βλέπει ο χρήστης να είναι όσο πιό απλά και μη τεχνικά γίνεται. Αν θέλεις να έχεις κάπου διαθέσιμη και την τεχνική πληροφορία για να στη στείλει π.χ. με ένα e-mail, έχει καλώς, αλλά το κύριο μήνυμα πρέπει να είναι αρκετά απλό για να το καταλάβει ο πιο αδαής χρήστης.&lt;br&gt;</description></item><item><title>Απ: Έλεγχος διπλοεγγραφής</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21378.aspx</link><pubDate>Wed, 29 Nov 2006 20:24:09 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21378</guid><dc:creator>AngleV</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21378.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=75&amp;PostID=21378</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;mns 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;BR&gt;
&lt;UL&gt;
&lt;LI&gt;Την ώρα της αποθήκευσης στη βάση (υποχρεωτικό) 
&lt;LI&gt;Στο user interface για να προειδοποιήσεις το χρήστη σου (προαιρετικό)&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Ο πιο απλός τρόπος να κάνεις το πρώτο, είναι να βάλεις έναν unique index ή ένα unique constraint πάνω στο εν λόγω πεδίο. Απλά θα πρέπει το κρυπτικό για το χρήστη μήνυμα λάθους που θα πάρεις από τη βάση να το μεταφράσεις σε κάτι πιο ανθρώπινο.&lt;BR&gt;&lt;BR&gt;Για το δεύτερο, μπορείς να κάνεις τον έλεγχο στο postback, που είναι σχεδόν ισοδύναμο με το να το κάνεις στη βάση (εκτός από την περίπτωση που τα data στο grid σου διαφέρουν από αυτά στη βάση), γιατί ο χρήστης τρώει το round trip. Επίσης μπορείς να το κάνεις client side με javascript.&lt;BR&gt;&lt;BR&gt;Μπορείς να συνδυάσεις και τα τρία, αλλά ο έλεγχος στη βάση είναι απαραίτητος.&lt;BR&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;BR&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;  Try&lt;br /&gt;            DisplaykeysSqlDataSource.InsertParameters.Add("personID", Request.QueryString("ID"))&lt;br /&gt;            DisplaykeysSqlDataSource.InsertParameters.Add("name", KeysDropDownList.Text)&lt;br /&gt;            DisplaykeysSqlDataSource.Insert()&lt;br /&gt;            KeysGridView.DataBind()&lt;br /&gt;&lt;br /&gt;        Catch ex As Exception&lt;br /&gt;            &lt;br /&gt;            'Combilation Error&lt;br /&gt;            'Violation of PRIMARY KEY constraint 'PK_tbl_mytable'. Cannot insert duplicate key in object 'tbl_mytable'.&lt;br /&gt;            'The statement has been terminated. &lt;br /&gt;&lt;br /&gt;            label1.text =  "Μίστερ η εγγραφή υπάρχει ήδη και δεν γίνεται να ξανά καταχωριθεί !!!!"&lt;br /&gt;            &lt;br /&gt;        End Try&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Είναι όμως σωστή πρακτική να χτυπάει Μήνυμα λάθους και μείς να το μεταφράζουμε σε απλούς χρήστες κατανοητό;&lt;BR&gt;θα πρέπει να ελέγξω την βάση για το αν η εγγραφή υπάρχει ήδη και κατόπιν να ενημερώσω τον χρήστη.&lt;BR&gt;Το θέμα είναι πως ;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Έλεγχος διπλοεγγραφής</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21377.aspx</link><pubDate>Wed, 29 Nov 2006 19:49:30 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21377</guid><dc:creator>Νατάσα Μανουσοπούλου</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21377.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=75&amp;PostID=21377</wfw:commentRss><description>Ο έλεγχος πρέπει να γίνει σε δύο σημεία:&lt;br&gt;&lt;ul&gt;&lt;li&gt;Την ώρα της αποθήκευσης στη βάση (υποχρεωτικό)&lt;/li&gt;&lt;li&gt;Στο user interface για να προειδοποιήσεις το χρήστη σου (προαιρετικό)&lt;/li&gt;&lt;/ul&gt;Ο πιο απλός τρόπος να κάνεις το πρώτο, είναι να βάλεις έναν unique index ή ένα unique constraint πάνω στο εν λόγω πεδίο. Απλά θα πρέπει το κρυπτικό για το χρήστη μήνυμα λάθους που θα πάρεις από τη βάση να το μεταφράσεις σε κάτι πιο ανθρώπινο.&lt;br&gt;&lt;br&gt;Για το δεύτερο, μπορείς να κάνεις τον έλεγχο στο postback, που είναι σχεδόν ισοδύναμο με το να το κάνεις στη βάση (εκτός από την περίπτωση που τα data στο grid σου διαφέρουν από αυτά στη βάση), γιατί ο χρήστης τρώει το round trip. Επίσης μπορείς να το κάνεις client side με javascript.&lt;br&gt;&lt;br&gt;Μπορείς να συνδυάσεις και τα τρία, αλλά ο έλεγχος στη βάση είναι απαραίτητος.&lt;br&gt;</description></item><item><title>Απ: Έλεγχος διπλοεγγραφής</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21376.aspx</link><pubDate>Wed, 29 Nov 2006 19:43:07 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21376</guid><dc:creator>agmarios</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21376.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=75&amp;PostID=21376</wfw:commentRss><description>θες απλά να τον ενημερώσεις και να αποφασίσει αν θέλει να κάνει την διπλοεγγραφή; ή να μην του το επιτρέψεις τελείως;</description></item><item><title>Έλεγχος διπλοεγγραφής</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21374.aspx</link><pubDate>Wed, 29 Nov 2006 19:22:46 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21374</guid><dc:creator>AngleV</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21374.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=75&amp;PostID=21374</wfw:commentRss><description>&lt;P&gt;Έχουμε ένα SqlDatasource και ένα GridView&lt;/P&gt;
&lt;P&gt;Ένα DropDown έχει διάφορες Τιμές&lt;BR&gt;&lt;BR&gt;π.χ&lt;/P&gt;
&lt;P&gt;Value&amp;nbsp;1&lt;BR&gt;Value 2&lt;BR&gt;Value 3&lt;BR&gt;Value 4&lt;BR&gt;.....&lt;BR&gt;&lt;BR&gt;Επιλέγω το Value 1 και το καταχωρώ στην βάση με το InsertCommand του SqlDataSource.&lt;BR&gt;Πως μπορώ να ελέγξω τώρα με το SqlDataSource αν ο χρήστης πάει πάλι να καταχυρώσει το Value 1 και να τον ενημερώσει ότι υπάρχει ήδη στην βάση ;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;</description></item></channel></rss>