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

 

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

2 Κρίσιμες ερωτήσεις για την ανάπτυξη μιάς εφαρμογής

Îåêßíçóå áðü ôï ìÝëïò Ηλίας Κεκάκος. Τελευταία δημοσίευση από το μέλος KelMan στις 27-06-2007, 19:04. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  27-06-2007, 10:09 33200

    2 Κρίσιμες ερωτήσεις για την ανάπτυξη μιάς εφαρμογής

    Αναπτύσσω μια εφαρμογή και θέλω την βοήθειά σας σε 2 προβληματάκια που αντιμετωπίζω:
    1. Χρήση Κλάσης από άλλο Layer. Η εφαρμογή μου αποτελείτε α 3 layers: Το UI που είναι και αυτή που ξεκινά, το BL που είναι class project και το Data Layer που είναι επίσης ένα class project, και τα 3 είναι κάτω από το ίδιο solution. Το UI βλέπει το BL και αυτό το DL. Στο BL έχω μία κλάση CRYPTO που την χρησιμοποιώ  αλλά θέλω να την χρησιμοποιήσω και στο DL. Πως μπορεί να γίνει αυτό; Reference από DL σε BL δεν γίνετε. Μία λύση είναι να την προσθέσω και στο DL (πλεονασμός). Μία άλλη λύση είναι να φτιάξω ένα 4ο Layer το οποίο θα περιέχει Common κλάσεις (η ιδέα αυτή μου ήρθε τώρα γράφοντας). Πια είναι η άποψή σας;
    2. Σ’ ένα dataset μαζεύω παραγγελίες (πάνω από 5000 records). Κάποιες από αυτές μπορεί να έχουν παραδοθεί τμηματικά πχ η Α παραγγελία είχε 100 τεμ και παραδόθηκαν την μία μέρα τα 80 και μία άλλη μέρα τα υπόλοιπα 20. Δηλαδή έχω 2 γραμμές με τα εξής στοιχεία:
    Παραγγ.Α - Προϊόν 123 - Ποσότητα 100 - Ημ.Παρ 20/6/2007 - Ποσ.Παρ. 80
    Παραγγ.Α - Προϊόν 123 - Ποσότητα 100 - Ημ.Παρ 21/6/2007 - Ποσ.Παρ. 20
    Το ερώτημα είναι πως θα επεξεργαστώ αυτό το τεράστιο dataset και όπου βλέπω ίδια παραγγελία και ίδιο Προϊόν να κρατώ μόνο την ποσότητα της 1ης γραμμής και να μηδενίζω την ποσότητα στις υπόλοιπες. Έχει κάποιος κάποια ιδέα γι’ αυτό το πρόβλημα;

      Ευχαριστώ

  •  27-06-2007, 10:22 33201 σε απάντηση της 33200

    Απ: 2 Κρίσιμες ερωτήσεις για την ανάπτυξη μιάς εφαρμογής

    Το δεύτερο θέμα που θέτεις φωνάζει από μακρυά ότι είναι κλασσική περίπτωση δημιουργίας Trigger στη βάση.
    Κάθε φορά που εισάγεται μια γραμμή στο πίνακα Details θα τρέχει ο trigger στον οποίο θα έχεις γράψει όλο το BI σου.

    Γλυτώνεις πάρα πολύ σε ταχύτητα έτσι!!!

    Manos
  •  27-06-2007, 10:27 33203 σε απάντηση της 33200

    Απ: 2 Κρίσιμες ερωτήσεις για την ανάπτυξη μιάς εφαρμογής

    1. Layers σε ένα σύστημα ονομάζουμε υποσυστήματα τα οποία διαδοχικά καλούν το ένα το άλλο για να διεκπεραιωθεί μια δουλειά. π.χ UI -> BL -> DL. Το να κάνεις ένα άλλο project/assembly που να έχει κοινόχρηστες λειτουργίες (π.χ. χρήσιμες συναρτήσεις κλπ.) δεν σημαίνει ότι θα έχεις κάνει ένα 4ο layer. Είναι μια πρακτική που συναντάται συχνά.

    2. Το dataset σου δεν είναι κανονικοποιημένο. Αν μπορείς, θα πρέπει να χωρίσεις τον πίνακά σου σε δυο. Ο πρώτος θα έχει τις παραγγελίες και ο δεύτερος τις παραδόσεις. Έτσι δεν θα αντιγράφεις πολλές φορές την ποσότητα παραγγελίας (100 στο παράδειγμά σου). Αν πάλι δεν μπορείς να κάνεις τον διαχωρισμό θα πρέπει να κάνεις κάτι summary το οποίο σε sql θα γραφόταν ως εξής:

    SELECT ΚωδικόςΠαραγγελίας, ΠοσότηταΠαραγγελίας, SUM(ΠοσότηταΠουΠαραδόθηκε), MAX(ΗμερΠαράδοσης) AS ΤελαυταίαΠαράδοση FROM Παραγγελίες GROUP BY ΚωδικόςΠαραγγελίας, ΠοσότηταΠαραγγελίας

    Τώρα πως θα το κάνεις αυτό σε ένα dataset...μάλλον με κόλπα, εκτός και αν μπορείς να χρησιμοποιήσεις linq. 


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  27-06-2007, 10:38 33207 σε απάντηση της 33200

    Απ: 2 Κρίσιμες ερωτήσεις για την ανάπτυξη μιάς εφαρμογής

    #1: Μπορείς να φτιάξεις ένα project με Utilities το οποίο θα κάνουν reference τα υπόλοιπα. Μην τα σκέφτεσαι όλα ως layers. Τέτοιες utilities classes υπάρχουν συνήθως σε κάθε project και τις χρησιμοποιούμε όπου υπάρχει ανάγκη, δεν τις βάζουμε σώνει και καλά σε κάποιο layer της εφαρμογής μας.

    #2: Μπορείς να το κάνεις προγραμματιστικά, με iteration στο dataset ή με TSQL commands που θα στέλνεις στη βάση. Εξαρτάται τι ακριβώς θες να κάνεις. Πάντως κάποιος έτοιμος μηχανισμός δεν υπάρχει...


    Vir prudens non contra ventum mingit
  •  27-06-2007, 11:31 33214 σε απάντηση της 33207

    Απ: 2 Κρίσιμες ερωτήσεις για την ανάπτυξη μιάς εφαρμογής

    Ευχαριστώ για τις γρήγορες απαντήσεις. Δυστυχώς τα στοιχεία τα παίρνω από μία κεντρική ΒΔ που είναι oracle και δεν μπορώ να την πειράξω (δεν έχω authority). Γι’ αυτό προσπαθώ να επιλύσω το πρόβλημα μέσα από το dataset. Αν μπορούσα να πω στο dataset φέρε μου όλες τις εγγραφές όπου το count της παραγγελίας και του προϊόντος είναι μεγαλύτερο του 1 και μετά να κάνω ένα loop σε αυτές της εγγραφές και να κρατούσα την ποσότητα της παραγγελία μόνο στην πρώτη γραμμή... Δεν ξέρω προσπαθώ να βρω κάποια λύση που ίσως και να μην είναι εφικτή.
    Δημήτρη σωστή η πρότασή σου αλλά δεν θέλω να κάνω sum και να χάσω το πότε παραδόθηκε η κάθε ποσότητα.

  •  27-06-2007, 19:04 33227 σε απάντηση της 33214

    Απ: 2 Κρίσιμες ερωτήσεις για την ανάπτυξη μιάς εφαρμογής

    ekekakos:
    Δυστυχώς τα στοιχεία τα παίρνω από μία κεντρική ΒΔ που είναι oracle και δεν μπορώ να την πειράξω (δεν έχω authority).

    Άρα θα πρέπει να παίξεις πάνω στο DataSet. Ωστόσο, αν αυτά που θες να κάνεις γίνονται πολύ εύκολα με SET operations (SQL queries), ίσως να σε συμφέρει να κάνεις import τα data στον SQL Server (υπάρχουν πολλοί τρόποι) και κατόπιν να τρέχεις πάνω στα τοπικά data τα διάφορα queries.

    ekekakos:
    Αν μπορούσα να πω στο dataset φέρε μου όλες τις εγγραφές όπου το count της παραγγελίας και του προϊόντος είναι μεγαλύτερο του 1 και μετά να κάνω ένα loop σε αυτές της εγγραφές και να κρατούσα την ποσότητα της παραγγελία μόνο στην πρώτη γραμμή...

    Αν τελικά αποφασίσεις να παίξεις πάνω στο DataSet, αυτό που περιγράφεις είναι κλασικό αλγοριθμικό πρόβλημα. Μπορείς να γίνει αν ταξινομίσεις κατά παραγγελία και με ένα iteration ελέγχεις πότε έχεις ίδιες συνεχόμενες παραγγελίες, οπότε τις χειρίζεσαι ανάλογα. Μην ξεχνάς ότι τόσο το DataSet όσο και το BindingSource έχουν Sort και RowFilter/Filter που μπορείς να χρησιμοποιήσεις για να δουλέψεις τα DataRows. Επίσης, άλλος ένας σύμμαχός σου είναι τα Aggregated Calculated Columns που μπορείς να προσθέσεις στα DataTables (Google it και θα βρεις αρκετό υλικό).

    Άλλες λύσεις:

     


    Vir prudens non contra ventum mingit
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems