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

 

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

Υπόλοιπο Πελάτη

Îåêßíçóå áðü ôï ìÝëïò ChrisGT7. Τελευταία δημοσίευση από το μέλος ChrisGT7 στις 25-12-2011, 01:03. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  24-12-2011, 01:16 68694

    Υπόλοιπο Πελάτη

    Χρησιμοποιώ Visual Basic 6 και MS Access 2003 για τη δημιουργία εφαρμογής διαχείρησης πελατών και αποθήκης.

    Στη φόρμα αναζήτησης πελατών εκτός από τα σταθερά στοιχεία, θέλω να εμφανίζεται και το υπόλοιπο πελάτη. Το υπόλοιπο πελάτη ισούται με το άθροισμα των πωλήσεών του μείον τις εισπράξεις του.

    Έχω κάνει το παρακάτω ερώτημα:
    SELECT ID, Sum(AksiaParastatikou) AS Tziros
    FROM Pelates, Poliseis
    WHERE Pelates.ID=Poliseis.ID
    GROUP BY ID
    Όπου εμφανίζονται μόνον οι πελάτες που έχουν πωλήσεις.

    Πώς μπορώ να εμφανίζω όλους τους πελάτες, ακόμα και αυτούς που δεν έχουν πωλήσεις; Κάτι αντίστοιχο θα γίνεται φυσικά και για τις εισπράξεις για την επίτευξη του υπολοίπου πελάτη που ζητάω.


    Your Curiosity Will Be The Death Of You!
  •  24-12-2011, 02:33 68695 σε απάντηση της 68694

    Απ: Υπόλοιπο Πελάτη

    SELECT Pelates.ID, Sum(Poliseis.AksiaParastatikoy) AS Tziros

    FROM Poliseis LEFT JOIN Pelates ON Poliseis.Id=Pelates.Id

    GROUP BY Pelates.Id

    Αν κατάλαβα καλά την δομή των πινάκων σου. Το θέμα είναι θα το δεχτεί αυτό το query η Access;

  •  24-12-2011, 11:14 68697 σε απάντηση της 68695

    Απ: Υπόλοιπο Πελάτη

    Σε ευχαριστώ πολύ. Δούλεψε μια χαρά τελικά. Απόφευγα συνεχώς τα INNER JOINS γιατί με ψιλομπέρδευαν λόγω της σύνταξής τους και χρησιμοποιούσα μόνον το WHERE για να συνθέσω τα κριτήριά μου. Μια ερώτηση ακόμα:

    Στη φόρμα για την εύρεση πελατών χρησιμοποιώ datagrid για την εμφάνισή τους. Σύμφωνα με όσα μου είπες, έφτιαξα το παρακάτω ερώτημα:

    SELECT CstID, SUM(SlsNetPrice+SlsFpaPrice)
    FROM Customers LEFT JOIN Sales
    ON Customers.CstID=Sales.SlsCstID
    GROUP BY CstID
    HAVING SUM(SlsNetPrice+SlsFpaPrice) <>0
    UNION
    SELECT CstID, 0
    FROM Customers LEFT JOIN Sales
    ON Customers.CstID=Sales.SlsCstID
    GROUP BY CstID
    HAVING ISNULL(SUM(SlsNetPrice+SlsFpaPrice))

    με το οποίο όσοι πελάτες δεν έχουν πωλήσεις, να έχουν 0 αντί κενό. Υπάρχει συνάρτηση στην SQL, όπως η iif() της Visual Basic, για να αποφύγω το UNION και να συρρικνώσω λίγο το ερώτημα από θέμα κώδικα;


    Your Curiosity Will Be The Death Of You!
  •  24-12-2011, 14:55 68698 σε απάντηση της 68697

    Απ: Υπόλοιπο Πελάτη

    Ναι υπάρχει αλλά δεν γνωρίζω αν η Access την υποστηρίζει. Λογικά θα πρέπει.

          

    1
    2
    3
    4
     
    SELECT Customers.CstID,
    IIF(SUM(Sales.SlsNetPrice + Sales.FPAPrice)> 0, SUM(Sales.SlsNetPrice + Sales.FPAPrice),0) AS Total
    ....
    ....

     

       

  •  25-12-2011, 01:03 68705 σε απάντηση της 68698

    Απ: Υπόλοιπο Πελάτη

    Και πάλι ευχαριστώ! :) Δούλεψε μια χαρά και αυτό! Όλα ΟΚ!


    Your Curiosity Will Be The Death Of You!
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems