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

 

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

τι είναι αυτό το καταραμένο? ":"

Îåêßíçóå áðü ôï ìÝëïò xian_at. Τελευταία δημοσίευση από το μέλος Νατάσα Μανουσοπούλου στις 13-12-2005, 17:56. Υπάρχουν 7 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  13-12-2005, 10:35 7885

    τι είναι αυτό το καταραμένο? ":"

    1)Έχουμε  query γνωστής εταιρίας μηχανογράφησης απο sql monitor. Η εφαρμογή παίζει κανονικά και  επιστρέφει σωστά αποτελέσματα...ο query analyzer δεν πιστεύει το ίδιο!

    το query :
    SELECT F.FINDOC
          ,F.SOSOURCE
          ,F.SOREDIR
          ,F.TRNDATE
          ,F.FINCODE
          ,M.CODE         AS MCODE
          ,M.NAME         AS MNAME
          ,SUM(T.QTY1)    AS QTY1
          ,SUM(T.LINEVAL) AS LINEVAL
          ,SUM(ISNULL(T.QTY1,0)-(ISNULL(T.QTY1COV,0)+ISNULL(T.QTY1CANC,0))) AS QTY1OPEN
          ,SUM((ISNULL(T.QTY1,0)-(ISNULL(T.QTY1COV,0)+ISNULL(T.QTY1CANC,0)))*(T.LINEVAL/T.QTY1)) AS LINEVALOPEN
      FROM FINDOC F, FPRMS P, MTRL M, MTRLINES T
     WHERE F.COMPANY  = P.COMPANY
       AND F.SOSOURCE = P.SOSOURCE
       AND F.FPRMS    = P.FPRMS
       AND F.TRDR     = :TRDR
       AND T.PENDING <> 0
       AND T.MTRL     = M.MTRL
       AND P.RESTMODE IS NOT NULL
       AND P.TFPRMS   = 201
       AND F.FINDOC   = T.FINDOC
       AND F.COMPANY  = :COMPANY
       AND F.SOSOURCE = ((F.SODTYPE*100)+51)
     GROUP BY F.TRNDATE, F.FINCODE, M.CODE, M.NAME, F.SOSOURCE, F.SOREDIR, F.FINDOC
     ORDER BY F.TRNDATE DESC, F.FINCODE

    οι γραμμές που έχω μαρκάρει χτυπούν στον query analyzer. Τι είναι αυτή η ":"  δεν το έχω συναντήσει πουθενά!
    φιλικά Στέφανος

  •  13-12-2005, 10:54 7889 σε απάντηση της 7885

    Απ: τι είναι αυτό το καταραμένο? &quot;:&quot;

    Πάω στοίχημα ότι είναι οι παράμετροι που περνάει η εφαρμογή στο query. Πρέπει να είναι είτε statement από stored procedure ή parameterized query.

    Αν θυμάμαι καλά, όταν χρησιμοποιείς ADO μπορείς να ορίσεις το πρόθεμα με το οποίο θέλεις να περάσουν οι παράμετροι προς τη βάση. Ίσως να χρησιμοποίησαν αυτό το κόλπο για να μπορούν να χρησιμοποιήσουν τα ίδια statements με διαφορετικές βάσεις. Νομίζω ότι το πρόθεμα ":" το χρησιμοποιεί η Oracle, η οποία δεν είναι και η πιο συνεργάσιμη βάση.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  13-12-2005, 11:03 7891 σε απάντηση της 7889

    Απ: τι είναι αυτό το καταραμένο? &quot;:&quot;

    ευχαριστώ για τη γρήγορη απάντηση!.......και εγώ κάτι τέτοιο σκεφτόμουν..το θέμα είναι ότι χρείαζομαι το query για να το βάλω σε asp! θα πρέπει να επικοινωνήσω με την εταιρεία? μπορώ να διορθώσω με κάποιο τρόπο το query??

  •  13-12-2005, 11:23 7892 σε απάντηση της 7891

    Απ: τι είναι αυτό το καταραμένο? &amp;quot;:&amp;quot;

    Αν θέλεις να εκτελέσεις το query, απλά το αντιγράφεις και αντί για :TRDR, :COMPANY βάζεις τις δικές σου παραμέτρους. Αν θες να το τρέξεις σαν parameterized query από ADO, δημιουργείς ένα command object το οποίο θα έχει το query σαν CommandText και προσθέτεις τις παραμέτρους @TRDR, @COMPANY. Αν ψάξεις για "Command Object Parameters" ή για parameterized queries στο MSDN θα βρεις πάρα πολλά παραδείγματα.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  13-12-2005, 12:45 7896 σε απάντηση της 7892

    Απ: τι είναι αυτό το καταραμένο? &amp;quot;:&amp;quot;

     pkanavos wrote:
    Αν θέλεις να εκτελέσεις το query, απλά το αντιγράφεις και αντί για :TRDR, :COMPANY βάζεις τις δικές σου παραμέτρους. Αν θες να το τρέξεις σαν parameterized query από ADO, δημιουργείς ένα command object το οποίο θα έχει το query σαν CommandText και προσθέτεις τις παραμέτρους @TRDR, @COMPANY. Αν ψάξεις για "Command Object Parameters" ή για parameterized queries στο MSDN θα βρεις πάρα πολλά παραδείγματα.

    Ακόμα καλύτερα, το κάνεις stored procedure που παίρνει τις παραμέτρους @TRDR και @COMPANY και καλείς αυτή. Έτσι, αν χρειαστεί να την αλλάξεις, δε χρειάζεται να βάλεις χέρι σε κώδικα και να κάνεις rebuild, αλλά αρκεί η αλλαγή στη βάση.


    Νατάσα Μανουσοπούλου
  •  13-12-2005, 13:21 7899 σε απάντηση της 7896

    Απ: τι είναι αυτό το καταραμένο? &amp;amp;quot;:&amp;amp;quot;

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

    Θα ήθελα πάντως να ξέρω ποιά εταιρεία χρησιμοποιεί τέτοια ωραία ονόματα πινάκων και πεδίων στη βάση της. Τα ονόματα θυμίζουν ολίγον .... Clipper!
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  13-12-2005, 17:07 7913 σε απάντηση της 7899

    Απ: τι είναι αυτό το καταραμένο? &amp;amp;amp;quot;:&amp;amp;amp;quot;

    Μου θυμίζει κάτι......!! Αν είναι αυτή προσπαθεί να "γυρίσει" το πρόγραμμα σε παραθυρικό περιβάλλον, αλλά δυστυχώς σέρνει και τις "αμαρτίες" της μαζί...
  •  13-12-2005, 17:56 7918 σε απάντηση της 7899

    Απ: τι είναι αυτό το καταραμένο? &amp;amp;quot;:&amp;amp;quot;

     pkanavos wrote:
    Θα ήθελα πάντως να ξέρω ποιά εταιρεία χρησιμοποιεί τέτοια ωραία ονόματα πινάκων και πεδίων στη βάση της. Τα ονόματα θυμίζουν ολίγον .... Clipper!

    Αν και συμφωνώ μαζί σου, για να κάνω και λίγο το δικηγόρο του διαβόλου, να θυμίσω ότι στην Oracle το όνομα ενός αντικειμένου δεν μπορεί να ξεπεράσει τους 30 χαρακτήρες. Αν έχεις λοιπόν ένα foreign key constraint από τον Client.GeographicalRegion στο GeographicalRegion.ID, δεν μπορούσες να το ονομάσεις FK_Client_GeographicalRegion_GeographicalRegion_ID αλλά κάτι σαν FK_Client_GeogrReg_GR_ID. Κι επειδή πολλές φορές τα ονόματα των constraints γεννιούνται αυτόματα από κάποιο DAL χρησιμοποιώντας τα ονόματα των πεδίων, υπήρχε η τάση να γίνονται τέτοιες συντομεύσεις.

    Πριν σπεύσετε να με καταδικάσετε στο πυρ το εξώτερον του development, να πω ότι θεωρώ τα εύγλωττα και πλήρη ονόματα πεδίων, μεταβλητών κλπ. πολύ σημαντικά για τον καθαρό κώδικα/SQL -- γι' αυτό άλλωστε υπάρχει και το Intellisense. Μερικές φορές όμως τα χέρια σου είναι "δεμένα".


    Νατάσα Μανουσοπούλου
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems