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

 

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

Μαθηματική Πράξη υπολογισμού στο lightswitch

Îåêßíçóå áðü ôï ìÝëïò Michalis Markou. Τελευταία δημοσίευση από το μέλος Michalis Markou στις 26-08-2011, 20:17. Υπάρχουν 10 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  24-08-2011, 18:13 66926

    Μαθηματική Πράξη υπολογισμού στο lightswitch

    Καλησπέρα σας, αν το post είναι σε λάθος σημείο παρακαλώ συγχωρέστεμε.
    Είμαι αρχάριος σχετικά με τον προγραμματισμό και σε αρκετά σημεία δυσκολεύομαι για αυτό και η ερώτησή μου ίσως να είναι λίγο αστεία. Στο MS Lightswitch σε γλώσσα VB, όταν έχω 3 tables(Table1, Table2, Table3) πώς μπορώ Π.Χ στο table3 να υπολογίσω το συνολικό άθροισμα πολλών εγγραφών ενός πεδίου του table1 και μετά να αφαιρέσω μια τιμή απο ένα πεδίο του table2 με το συνολικό άθροισμα που βρήκα;
  •  24-08-2011, 18:20 66927 σε απάντηση της 66926

    Απ: Μαθηματική Πράξη υπολογισμού στο lightswitch

    Τί εννοείς καταρχήν "Tables"? Τα DataTables δεν υποστηρίζονται στο Silverlight. Μιλάς για database tables, για arrays, για κάτι άλλο? Αν πρόκειται για database tables, το καλύτερο σημείο για αθροίσματα είναι σε ένα sql statement. Αν πρόκειται για arrays, μπορείς είτε να κάνεις ένα foreach σε όλες τις γραμμές και να αθροίσεις τα πεδία που θέλεις, είτε να χρησιμοποιήσεις LINQ και functions όπως η Sum().

     


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  24-08-2011, 18:30 66928 σε απάντηση της 66927

    Απ: Μαθηματική Πράξη υπολογισμού στο lightswitch

    Database Tables εννοούσα, συγνώμη που δεν το ανέφερα. Με ποιό τρόπο όμως θα γίνουν οι πράξεις, δηλαδή πως θα είναι το sql statement;
  •  24-08-2011, 18:40 66929 σε απάντηση της 66928

    Απ: Μαθηματική Πράξη υπολογισμού στο lightswitch

    Η ερώτηση είναι πολύ βασική και θα σου πρότεινα να διαβάσεις για SQL και βάσεις δεδομένων. Είναι κυριολεκτικά αδύνατο να δουλέψεις ως προγραμματιστής αν δεν ξέρεις SQL.

    Για να πάρεις το άθροισμα ενός πεδίου μόνο για τις εγγραφές που έχουν μία συγκεκριμμένη τιμή χρησιμοποιείς το παρακάτω SELECT statement:

    SELECT SUM(Field1)AS MySum
    FROM Table1
    Where Field2 = 'SomeValue'

     

    ενώ για να αλλάξεις την τιμή κάποιου άλλου πεδίου, θα χρησιμοποιήσεις το παρακάτω UPDATE statement:

    UPDATE TABLE2
    SET Field2=Field2 - SomeNumber
    Where KeyField1= SomeKey

     

    Ανάλογα με τη βάση μπορείς να φτιάξεις ένα batch το οποίο θα περάσει την πρώτη τιμή στο δεύτερο statement ως μεταβλητή, ή ακόμα και να συνδυάσεις και τα δύο statement σε ένα.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  24-08-2011, 19:27 66930 σε απάντηση της 66929

    Απ: Μαθηματική Πράξη υπολογισμού στο lightswitch

    Συμφωνό σε αυτό που λές, αλλά δεν ξέρω απο πού να ξεκινήσω το διάβασμα, είναι τόσα πολλά...
    Δοκίμασα να κάνω αυτό που μου λές, όμως στα queries του lightswitch δε με αφήνη να βάλω δικό μου query και να γράψω το ερώτημα που μου έδωσες. Υπάρχει κάποιος άλλος τρόπος;
  •  24-08-2011, 21:00 66931 σε απάντηση της 66930

    Απ: Μαθηματική Πράξη υπολογισμού στο lightswitch

    Lightswitch? Ουπς, νόμιζα ότι έγραψες Silverlight.

    Δεν έχω χρησιμοποιήσει ως τώρα το το Lightswitch για τίποτε σοβαρό οπότε δεν ξέρω αν έχει κάποιο έτοιμο τρόπο να βγάλεις aggregates (sum, average, max, min) από κάποιο μοντέλο. 

    Το Lightswitch όμως βασίζεται στο Entity Framework και το LINQ για να διαβάσει δεδομένα από τη βάση. Από τη μία πλευρά, μπορείς να χρησιμοποιήσεις LINQ queries για να πάρεις το Sum και κώδικα για Entity Framework για να κάνεις το update. Ο κώδικας σίγουρα είναι περισσότερος από τα SQL statements. Μπορείς επίσης να γράψεις κάποιο stored procedure στη βάση σου το οποίο μετά θα προσθέσεις στο EF model. Μπορείς επίσης άνετα να γράψεις κώδικα που θα εκτελεί sql statements, όπως σε κάθε εφαρμογή .NET.

    Θα σου πρότεινα πάντως να διαβάσεις. Το ότι το Lightswitch φτιάχνει εύκολα φόρμες από πίνακες δεν σημαίνει ότι δεν πρέπει να ξέρεις από βάσεις δεδομένων και SQL ή Entity Framework. Διαφορετικά είναι δεδομένο ότι θα πέσεις σε παγίδες και θα γράψεις κώδικα "που παίζει" αλλά μπορεί να είναι 1000+ φορές πιο αργός. Για παράδειγμα, αν δοκίμαζες να γράψεις κώδικα που θα φόρτωνε μία-μία τις εγγραφές και θα άθροιζε τα πεδία που θες, θα είχες τόση καθυστέρηση σε σχέση με την SQL όσες θα ήταν οι γραμμές - ή και χειρότερα.

    Επίσης θα πρέπει να έχεις υπόψη ότι όλα τα ORMs όπως το Entity Framework είναι εντελώς ακατάλληλα για reporting σενάρια (όπου reporting: ζητάω αθροίσματα ή λίστα από αντικείμενα). Αν θέλεις να έχεις κάποια reports με στατιστικά στην εφαρμογή που φτιάχνεις θα πρέπει να δεις ποιό εργαλείο reporting μπορείς να χρησιμοποιήσεις στο Lightswitch αντί πχ. να δοκιμάσεις να δείξεις στατιστικά σε ένα grid βασισμένο στο Entity Framework.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  25-08-2011, 11:04 66937 σε απάντηση της 66930

    Απ: Μαθηματική Πράξη υπολογισμού στο lightswitch

    Προτείνω να διαβάσεις αυτό το άρθρο http://msdn.microsoft.com/en-us/magazine/hh335061.aspx και να εξετάσεις τον sample κώδικα. Απ' ότι διάβασα, περιέχει και functionality για reports με aggregate queries. Τώρα, ως προς τα reports, δες αυτή τη συζήτηση: http://stackoverflow.com/questions/5898859/reporting-in-vs-lightswitch

     


    Vir prudens non contra ventum mingit
  •  25-08-2011, 12:04 66939 σε απάντηση της 66937

    Απ: Μαθηματική Πράξη υπολογισμού στο lightswitch

    Το κοίταξα κι εγώ και ο τρόπος είναι .... φτιάχνεις ένα query αλλά αντί να σχεδιάσεις με το designer, γράφεις κώδικα για να το παακάμψεις και να κάνεις το query σου με κώδικα και LINQ queries .... μάλλον ο πιο περίεργος τρόπος που θα είχα φανταστεί. Ελπίζω στο μέλλον να σκεφτούν τουλάχιστον να βάλλουν κανένα grouping στα queries και στα grid καθώς είναι το πρώτο πράγμα που χρειάζεται να κάνει κάποιος μόλις εισάγει έστω και 2 γραμμές δεδομένα.

    Μία εναλλακτική είναι αντί να σχεδιάσεις τη βάση σου μέσα από το ίδιο το Lightswitch, να τη σχεδιάσεις όπως έκανες πάντα, (π.χ. με το Management Studio ) και να προσθέσεις τα κατάλληλα views και stored procedures που θα κάνουν τη δουλειά που θέλεις. Μετά, εισάγεις αυτή τη βάση ως external data source.

    Το συμπέρασμα πάντως είναι ότι θα πρέπει να μάθεις και SQL και (τουλάχιστον) LINQ to EF για να μπορέσεις να γράψεις queries. 

    Θα παρατηρούσα μάλιστα ότι η σχεδίαση των πινάκων και των queries είναι το πρώτο σημείο στο οποίο διαπιστώνει κανείς ότι το "μαγικό" εργαλείο που θα έκανε εφαρμογές χωρίς κώδικα .... θέλει και κώδικα και γνώσεις. Είναι κάτι το οποίο επαναλαμβάνεται εδώ και 20 περίπου χρόνια παρότι απέτυχε παταγωδώς με τα CASE εργαλεία στα τέλη της δεκαετίας του 1990.

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  25-08-2011, 13:43 66942 σε απάντηση της 66939

    Απ: Μαθηματική Πράξη υπολογισμού στο lightswitch

    Επειδή δεν μπορώ να βρώ κάποιο κώδικα για το πώς θα το κανω αυτό μήπως θα μπορούσατε να με βοηθήσετε λίγο παραπάνω για αυτό το δύσκολο κομμάτι όσο αφορά τις δικές μου ικανότητες στην sql και τον προγραμματισμό; Δηλαδή πώς είναι αυτός ο κώδικας που πρέπει να χρησιμοποιήσω και πώς θα είναι αυτό το ερώτημα που θα φτιάξω το οποίο θα παρακαμθεί απο τον κώδικα; Κοίταξα κάποια παραδείγματα, όμως δεν μπόρεσαν να με βοηθήσουν και πολύ.
  •  25-08-2011, 18:44 66947 σε απάντηση της 66942

    Απ: Μαθηματική Πράξη υπολογισμού στο lightswitch

    Ίσως να σε βοηθήσει το παρακάτω link

    http://lightswitchhelpwebsite.com/Blog/tabid/61/EntryId/17/It-Is-Easy-To-Display-Counts-And-Percentages-In-LightSwitch.aspxv

    Εμφανίζει στην φόρμα το άθροισμα των κλήσεων και μέσο όρο αυτών.

  •  26-08-2011, 20:17 66954 σε απάντηση της 66947

    Απ: Μαθηματική Πράξη υπολογισμού στο lightswitch

    Το είχα ξαναδεί αυτό το παράδειγμα, όμως δεν μπορώ να το προσαρμόσω τον κώδικα στο δικό μου project. Μήπως υπάρχει κάποιος πιό απλός τρόπος ή κάποιος κώδικας για να καταλάβω και εγώ περισσότερο και να γίνει και η δουλειά καλήτερα;
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems