<?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>Απ: Χρήση τιμής ενός control σε μία DAL κλάση</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23603.aspx</link><pubDate>Tue, 16 Jan 2007 18:11:17 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23603</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23603.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=23603</wfw:commentRss><description>Α! Ναι, για να τα βάλεις σε ξεχωριστά projects, απλά προσθέτεις Class Library projects στο solution σου.</description></item><item><title>Απ: Χρήση τιμής ενός control σε μία DAL κλάση</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23602.aspx</link><pubDate>Tue, 16 Jan 2007 18:01:51 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23602</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23602.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=23602</wfw:commentRss><description>H λογική οργάνωση (layers) της εφαρμογής δεν είναι απαραίτηο να συμβαδίζει με τη φυσική οργάνωση (projects). Μπορείς να βάλεις τα layers στο ίδιο project, μπορείς να τα βάλεις και σε ξεχωριστά. Αν τα βάλεις στο ίδιο θα έχεις τελικά ένα παραγόμενο αποτέλεσμα (το executable) ενώ αν τα βάλεις ξεχωριστά θα έχεις το executable και τα DLLs. Ένα βασικό, από τα διάφορα πλεονεκτήματα που έχει η χρήση DLLs, είναι ότι μπορείς να δίνεις ενημερώσεις της εφαρμογής τμηματικά, με νέες verions του ανάλογου DLL.</description></item><item><title>Απ: Χρήση τιμής ενός control σε μία DAL κλάση</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23596.aspx</link><pubDate>Tue, 16 Jan 2007 17:26:45 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23596</guid><dc:creator>Ηλίας Κεκάκος</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23596.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=23596</wfw:commentRss><description>Ευχαριστώ όλους για τις απαντήσεις σας. Θα ήθελα να σας κάνω μία τελευταία ερώτηση (για τώρα). Σε μιά 3-tier εφαρμογή όλα τα layers θα είναι στο ίδιο project; ή το κάθε layer σε ξεχωριστό κάτω από το ίδιο solution; Αν είναι σε ξεχωριστό τι τύπου θα είναι το project του DAL ή του BLL πχ Empty Windows Application;&lt;br /&gt;
&lt;br /&gt;
   Ευχαριστώ</description></item><item><title>Απ: Χρήση τιμής ενός control σε μία DAL κλάση</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23488.aspx</link><pubDate>Mon, 15 Jan 2007 01:25:33 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23488</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23488.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=23488</wfw:commentRss><description>Σχετικά με τον έλεγχο της ημ/νίας: Υπάρχουν δύο τρόποι να επιβάλλεις ένα constraint σε αυτό το σημείο. Ο ενας είναι, όπως σωστά προσπαθείς, μέσω του Business Layer. &lt;br /&gt;
&lt;br /&gt;
Ο άλλος είναι να τον κάνεις στο presentation layer και συγκεκριμένα επάνω στην ίδια τη φόρμα.&lt;br /&gt;
&lt;br /&gt;
Το που θα το υλοποιήσεις εξαρτάται από το τι θέλεις να επιτύχεις. Κατ' εμέ η πιό σωστή υλοποίησή του είναι αυτή που προσπάθησες, δηλαδή στο business logic. Γιατί, αν τυχόν δεν δοθεί σωστό range ημ/νιών, το business logic layer και όλα τα απο κάτω του layers είναι αυτά που θα πρέπει να αντιμετωπίσουν το πρόβλημα. Ετσι επιτυγχάνεις να αναθέσεις την υπευθυνότητα για τον έλεγχο ακριβώς στο κομμάτι εκείνο του λογισμικού που πρέπει να την έχει.&lt;br /&gt;
&lt;br /&gt;
Φιλοσοφικός ο προβληματισμός και η συζήτηση, μεν, αλλά πιστεύω να σου δίνει κάποιο hint για το πώς πρέπει να σκέφτεσαι (και ναι, βρίσκεσαι από ο,τι πιστεύω και εγώ στο σωστό δρόμο).&lt;br /&gt;
&lt;br /&gt;</description></item><item><title>Απ: Χρήση τιμής ενός control σε μία DAL κλάση</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23448.aspx</link><pubDate>Sun, 14 Jan 2007 01:39:18 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23448</guid><dc:creator>Gilbert</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23448.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=23448</wfw:commentRss><description>Πιστεύω οτι είσε σε καλό δρόμο.</description></item><item><title>Απ: Χρήση τιμής ενός control σε μία DAL κλάση</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23430.aspx</link><pubDate>Sat, 13 Jan 2007 05:24:40 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23430</guid><dc:creator>Ηλίας Κεκάκος</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23430.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=23430</wfw:commentRss><description>&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; Παναγιώτη σ’ ευχαριστώ για την απάντηση. Μια και ξεκίνησα αυτή την συζήτηση θα ήθελα να παραθέσω λίγο κώδικα για να μου πείτε αν είμαι στο σωστό δρόμο ή όχι. &lt;br&gt;Ξεκινάμε από την κλάση DALOrder η οποία είναι περίπου έτσι:&lt;br&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;Imports&lt;/span&gt; System.Data.OleDb&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Imports&lt;/span&gt; System.Data&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Public&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Class&lt;/span&gt; DALISPOrders&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Private&lt;/span&gt; ConnectionString &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; OleDbConnection&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Private&lt;/span&gt; DataadapterOrders &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; OleDbDataAdapter&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Private&lt;/span&gt; DatasetOrders &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; DataSet&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Private&lt;/span&gt; SelectOrders &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;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Public&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Sub&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;()&lt;br /&gt;        ConnectionString &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; OleDbConnection&lt;br /&gt;        ConnectionString.ConnectionString &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; My.Settings.ConnectionString&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; CommandSelectOrders &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; OleDbCommand&lt;br /&gt;        SelectISPOrders &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 * FROM Orders"&lt;/span&gt;&lt;br /&gt;        CommandSelectOrders &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; OleDbCommand(SelectOrders, ConnectionString)&lt;br /&gt;        DataadapterOrders &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; OleDbDataAdapter&lt;br /&gt;        DataadapterOrders.SelectCommand &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; CommandSelectOrders&lt;br /&gt;     &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;End&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Sub&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;Public&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Function&lt;/span&gt; GetOrders() &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; DataSet&lt;br /&gt;        DataadapterOrders.Fill(DatasetOrders, &lt;span style="color: #666666;background-color: #e4e4e4;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"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;Return&lt;/span&gt; DatasetOrders&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;End&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Function&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;End&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Class&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; Τώρα ερχόμαστε στη φόρμα (UI) όπου αφού ο χρήστης συμπληρώσει κάποια selection κριτήρια πατά το κουμπί GetOrder το οποίο έχει τον εξής κώδικα:&lt;br&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; oGetOrders &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; DALOrders &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; DALOrders&lt;br /&gt;        DatasetOrders &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; oGetOrders.GetOrders&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Me&lt;/span&gt;.GridControlOrders.DataSource &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; DatasetOrders&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Me&lt;/span&gt;.GridControlOrders.DataMember &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;"Orders"&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; Μέχρι εδώ τα λέω σωστά; Τώρα πως σκέφτομαι το Business Layer (BL). Στην φόρμα έχω 2 DateTime controls όπου ο χρήστης δίνει το χρονικό range του selection. Στην εφαρμογή θέλω ο χρήστης να δίνει το range μέσα στον ίδιο μήνα πχ 01-01-2007 έως 31-01-2007 και όχι 01-01-2007 έως 01-02-2007. Άρα θα φτιάξω μία κλάση έστω BLOrders.vb η οποία θα έχει:&lt;br&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;Public&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Function&lt;/span&gt; CheckMonth(&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ByVal&lt;/span&gt; DateFrom &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;Date&lt;/span&gt;, &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ByVal&lt;/span&gt; DateTo &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;Date&lt;/span&gt;) &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;Boolean&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;If&lt;/span&gt; Difference &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;then&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;Return&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;False&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;Else&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;Return&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;True&lt;/span&gt;&lt;br /&gt;  Endif&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;End&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Function&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; Έτσι ο κώδικας στην φόρμα θα γίνει ώς εξής:&lt;br&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;If&lt;/span&gt; CheckMonth(DateTimeFrom.Value, DateTimeTo.Value)=&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;True&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Then&lt;/span&gt;&lt;br /&gt;        DatasetOrders &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; oGetOrders.GetOrders&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Me&lt;/span&gt;.GridControlOrders.DataSource &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; DatasetOrders&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Me&lt;/span&gt;.GridControlOrders.DataMember &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;"Orders"&lt;/span&gt;&lt;br /&gt;Endif&lt;/span&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; Τι λέτε τα κάνω σωστά; Αν έχετε κάτι το αντίθετο θα παρακαλούσα να υπάρχει και ένα μικρό παράδειγμα γιατί αυτό με βοηθάει πολύ. Αν πάλι κάποιος μπορεί να μου στείλει μια μικρή εφαρμογή με μία φόρμα επεξεργασίας των στοιχείων του πελάτη με 3-tier (DAL, BL, UI) θα του ήμουν υπόχρεος.&lt;br&gt;&amp;nbsp; Μια τελευταία ερώτηση: Βοηθούν κάποια προγράμματα όπως DEVFORCE, MYGENERATION κα ή καλύτερα να τα κάνεις μόνος σου;&lt;br&gt;&lt;br&gt;&amp;nbsp; Ευχαριστώ &lt;br&gt;&lt;br&gt;</description></item><item><title>Απ: Χρήση τιμής ενός control σε μία DAL κλάση</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23425.aspx</link><pubDate>Sat, 13 Jan 2007 01:55:25 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23425</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23425.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=23425</wfw:commentRss><description>Έτσι όπως το περιγράφεις το DAL δεν είναι DAL. Το DAL δεν πρέπει να έχει ιδέα από το UI. Το UI θα πρέπει να περάσει τις τιμές που θέλει ως παραμέτρους στο DAL για αποθήκευση. Έτσι όπως το περιγράφεις όμως, το DAL πρέπει να ξέρει όλες τις λεπτομέρεις της κάθε φόρμας, και θα επηρεάζεται από κάθε αλλαγή που θα γίνει στη φόρμα.&lt;br /&gt;
&lt;br /&gt;
Όσον αφορά το business layer, εκεί μπαίνει ο κώδικας που λέει τί "κάνει" η εφαρμογή σου. Στην περίπτωση σου, ο κώδικας που θα δημιουργήσει ένα order αντικείμενο, θα ελέγξει το απόθεμα, θα επικοινωνήσει με όποιο service έχεις για πιστωτικές κλπ. Σκοπός είναι αυτός ο κώδικας, ο οποίος δεν αλλάζει άσχετα από το αν αλλάζει η βάση ή οι φόρμες, να μην επηρεάζεται από αλλαγές σε αυτές. &lt;br /&gt;
&lt;br /&gt;
Αν δεν θέλεις να βάλεις business layer, βάλε στο DAL σου μία μέθοδο SubmitOrder η οποία θα δέχεται ως παραμέτρους τα στοιχεία της παραγγελίας και θα τις αποθηκεύει. Κανονικά, δεν πρέπει κανένας πέρα από τη φόρμα να ξέρει ότι οι τιμές που στέλνεις στη βάση προέρχονται από το ένα ή το άλλο control.</description></item><item><title>Απ: Χρήση τιμής ενός control σε μία DAL κλάση</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23419.aspx</link><pubDate>Sat, 13 Jan 2007 00:44:30 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23419</guid><dc:creator>Ηλίας Κεκάκος</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23419.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=23419</wfw:commentRss><description>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Νατάσα μια και μίλησες για Business Layer στην συγκεκριμένη περίπτωση έχουμε το DALOrders το οποίο έχει το setup του Connection, του Command, το Dataadapter, το Dataset και κάνει το Fill επιστρέφοντας το φορτομένο Dataset. Η φόρμα κάνει το initialization της κλάσης και καλει την συνάρτηση OrderFill της κλάσης που της επιστρέφει το Dataset. To Business Layer που μπορει να παρεμβληθεί; Μήπως έχω βάλει κάτι παραπάνω στο DAL; Σε ρωτάω γιατί προσπαθώ να φύγω από τον παλιό τρόπο ανάπτυξης όπου όλα ήταν σε μία φόρμα χρησιμοποιώντας το IDE του VS2005 και να πάω στην ΟΟ ανάπτυξη με 3-tier. Τώρα αν κάτι λέω λάθος στην ορολογία, συγνώμη αλλά προσπαθώ να τα μάθω μόνος μου και είμε λίγο μπαιρδεμένος.&lt;br&gt;&lt;br&gt;&amp;nbsp; Σ’ ευχαριστώ&lt;br&gt;</description></item><item><title>Απ: Χρήση τιμής ενός control σε μία DAL κλάση</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23412.aspx</link><pubDate>Fri, 12 Jan 2007 23:42:21 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23412</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23412.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=23412</wfw:commentRss><description>Σημερα έχω πάθει πτώση IQ. Μήπως αυτό που λέμε είναι οτι προσπαθείς αυτή τη στιγμή ΑΠΟ ΤΟ DAL να πάρεις την τιμή της φόρμας; (Ετσι κατάλαβα από τα λεγόμενα της Νατάσας). Αν ειναι ετσι, Τζιζ! Κακα! Μπουμ! Μην το κάνεις αυτό!&lt;br /&gt;
&lt;br /&gt;
Το my.forms δεν λειτουργεί γιατί επιστρέφει το DEFAULT instance της φόρμας και όχι αυτό που έχεις ορίσεις εσύ (as new form1). Συν τοις άλλοις, ζητάς το text και όχι το value property. Αλλά ακόμα και να ζητούσες το value property, θα ήταν άσκοπο μια και θα σου επέστρεφε κατά πάσα πιθανότητα το default value του control και όχι αυτό που θα είχε δώσει ο χρήστης. &lt;br /&gt;
&lt;br /&gt;
Συγνώμη για το μπέρδεμα στην απάντηση. Δεν είναι η μέρα μου σήμερα :)&lt;br /&gt;
&lt;br /&gt;</description></item><item><title>Απ: Χρήση τιμής ενός control σε μία DAL κλάση</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23411.aspx</link><pubDate>Fri, 12 Jan 2007 23:38:46 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23411</guid><dc:creator>Νατάσα Μανουσοπούλου</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23411.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=23411</wfw:commentRss><description>Όχι μόνο &lt;i&gt;μπορείς&lt;/i&gt; να περάσεις τις τιμές των ημερομηνιών στο DAL σου από τη φόρμα, αλλά &lt;i&gt;επιβάλλεται.&lt;/i&gt; Η φόρμα πρέπει να εξαρτάται από το business και όχι το αντίστροφο. Άσχετα λοιπόν με το αν δουλεύει το My.Forms, κάνε τον κόπο να διορθώσεις το DAL και θα το βρεις μπροστά σου αργά ή γρήγορα.&lt;br&gt;</description></item><item><title>Απ: Χρήση τιμής ενός control σε μία DAL κλάση</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23410.aspx</link><pubDate>Fri, 12 Jan 2007 23:31:24 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23410</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23410.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=23410</wfw:commentRss><description>Ουπς, ισως να μην διάβασα προσεκτικά. Αν το κουμπί GetOrders είναι ΜΕΣΑ στη Form1, τότε αρκεί να ζητήσεις το Me.DateTime1.Value.&lt;br /&gt;
&lt;br /&gt;</description></item><item><title>Απ: Χρήση τιμής ενός control σε μία DAL κλάση</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23409.aspx</link><pubDate>Fri, 12 Jan 2007 23:30:09 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23409</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23409.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=23409</wfw:commentRss><description>Οπως λέει και ο Μάνος, ξέχασε καλύτερα το My.Forms. Μπορείς να πάρεις την τιμή του datetime control (και, εξυπακούεται, και των υπολοίπων control της φόρμας) ως εξής: &lt;br /&gt;
&lt;br /&gt;
Αν έχεις κάνει π.χ. Dim objForm as New Form1 μετά μπορείς να ζητήσεις το objForm.DateTime1.Value και θα πάρεις πίσω μια datetime value.&lt;br /&gt;
&lt;br /&gt;</description></item><item><title>Απ: Χρήση τιμής ενός control σε μία DAL κλάση</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23408.aspx</link><pubDate>Fri, 12 Jan 2007 23:19:12 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23408</guid><dc:creator>Ηλίας Κεκάκος</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23408.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=23408</wfw:commentRss><description>Μέσα από μία κεντρική MDI φόρμα ανοίγω την Form1 (As New Form1) όπου έχω τα DateTime controls τ’ οποία συμπληρώνει ο χρήστης και πατά το κουμπί GetOrders. Αυτό καλεί μία Function της κλάσης Orders όπου μέσα σε αυτήν είναι το SQL Select όπου θέλω να χρησιμοποιήσω τα values των DateTime controls. Χρησιμοποιώντας το MY.FORMS.FORM1.DateTime1 μου επιστρέφει null. H ερώτηση είναι αν μπορώ να πάρω κατευθείαν την τιμή των controls της φορμας.</description></item><item><title>Απ: Χρήση τιμής ενός control σε μία DAL κλάση</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23407.aspx</link><pubDate>Fri, 12 Jan 2007 23:16:55 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23407</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23407.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=23407</wfw:commentRss><description>Ακόμα καλύτερα είναι να ξεχάσεις τη χρήση του My.Forms. Μην το χρησιμοποιήσεις καθόλου! Ξήλωσέ το όπου το έχεις και ακολούθησε την κανονική υλοποίηση των φορμών (δήλωση, instance, κλπ). Το My.Forms είναι (imho) ένα τεράστιο βήμα προς τα πίσω και πολλές φορές οδηγεί ακριβώς σε τέτοια προβλήματα.</description></item><item><title>Απ: Χρήση τιμής ενός control σε μία DAL κλάση</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23405.aspx</link><pubDate>Fri, 12 Jan 2007 23:01:44 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23405</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23405.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=23405</wfw:commentRss><description>Κατ΄αρχήν για να πάρεις την τιμή ενός DateTime control νομίζω οτι πρέπει να χρησιμοποιήσεις το Value και όχι το Text property. Εχε υπόψη σου οτι η My θα σου δώσει το default instance της φόρμας και όχι το instance που τυχόν έχεις φτιάξει εσύ εκείνη τη στιγμή. &lt;br /&gt;
&lt;br /&gt;
Για να το δούμε λίγο καλύτερα, πες μας αν την τιμή προσπαθείς να την πάρεις μέσα από την ίδια τη φόρμα, από κάποια parent φόρμα (MDI) ή από κάποια φόρμα η οποία σήκωσε την Form1 (As New Form1). &lt;br /&gt;
&lt;br /&gt;
Σε περίπτωση που το χρησιμοποιείς μέσα από την ίδια την Form1, τότε αρκεί να ζητήσεις την τιμή του Me.DateTime1.Value. Βεβαια θα σου γυρίσει DateTime type, αλλα μετά μπορείς να το χειριστείς.&lt;br /&gt;
&lt;br /&gt;</description></item></channel></rss>