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

 

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

Λάθος Query, σωστό αποτέλεσμα!

Îåêßíçóå áðü ôï ìÝëïò Adamantios. Τελευταία δημοσίευση από το μέλος Adamantios στις 11-09-2009, 12:37. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  11-09-2009, 10:24 53628

    Λάθος Query, σωστό αποτέλεσμα!

    Καλημερίζω την παρέα.

    Εχτές, εντελώς τυχαία, ανακάλυψα ένα «λάθος» που είχα κάνει σε κάποιο site που έχω φτιάξει, αλλά χωρίς να δημιουργεί πρόβλημα Smile

    Έχω φτιάξει, λοιπόν, μια function, η οποία διαβάζει κάποια data από ένα table μιας access (OleDbConnection) και αφού τα επεξεργαστεί γυρνάει ένα array. Το query είναι κάπως έτσι:

    strSQL = "select pedio1 from table1 a, table2 b, table3 c " & _
                  "where " & _
                  "mpla mpla mpla " & _
                  "mpla mpla mpla " & _
                  "and a.dd = @pDD and a.mm = @pMM " & _
                  "union " & _
                  "select pedio2 from table4 a,  table5 b, table6 c " & _
                  "where " & _
                  "mpla mpla mpla " & _
                  "mpla mpla mpla " & _
                  "and a.days = datediff('d',cdate(@p1),cdate(@pCurDate))"

    Στην συνέχεια δηλώνω ένα oledbcommand και δίνω τιμές στις παραμέτρους ως εξής:

    MyCommand.Parameters.AddWithValue("@pDD", strDD)
    MyCommand.Parameters.AddWithValue("@pMM", strMM)
    MyCommand.Parameters.AddWithValue("@p1", strP1)
    MyCommand.Parameters.AddWithValue("@pDate", strDD & "/" & strMM & "/" & strYY)

    Η function έπαιζε σωστά και μου επέστρεφε τα σωστά αποτελέσματα. Αν όμως την παρατηρήσετε λίγο καλύτερα θα δείτε ότι η 4η παράμετρος έχει ένα θεματάκι αφού στο query είναι δηλωμένη σαν @pCurDate ενώ όταν την γεμίζω έχει σαν όνομα @pDate.

    Υποπτεύομαι ότι το «κλειδί» είναι στο OleDbConnection και στο oledbcommand το οποίο ίσως να μην δίνει σημασία στα ονόματα, αλλά στην σειρά των παραμέτρων.....

    Επειδή αυτό το ανακάλυψα εχτές το βράδυ αργά, και σήμερα μέχρι αργά το βράδυ δεν προβλέπετε να έχω χρόνο να το δω (ελέω RPG και i5 Stick out tongue ) οποιοσδήποτε με διαφωτίσει πως έπαιζε το query είναι ευπρόσδεκτος! Smile

    Διαμάντης


    A wise man does not urinate against the wind Smile
    Δημοσίευση στην κατηγορία: , ,
  •  11-09-2009, 10:45 53629 σε απάντηση της 53628

    Απ: Λάθος Query, σωστό αποτέλεσμα!

    Σωστά υποπτεύεσαι. Στον OleDB Client οι παράμετροι καθορίζονται by position και στη σύνταξη του parameterized query μπορείς απλά να βάλεις ερωτηματικά (?) στη θέση τους. Οπότε ήσουν τυχερός που κράτησες τη σωστή σειρά στα AddWithValue Smile


    Vir prudens non contra ventum mingit
  •  11-09-2009, 11:45 53630 σε απάντηση της 53629

    Απ: Λάθος Query, σωστό αποτέλεσμα!

    Απλά να προσθέσω σε αυτό που είπε ο Μάνος ότι μπορείς να βάλεις και αυτό (where p1=:1 or p2=:2). Κυρίως αυτό το κάνουμε σε Oracle , MySQL etc


    Antonios Chatzipavlis

  •  11-09-2009, 12:37 53632 σε απάντηση της 53630

    Απ: Λάθος Query, σωστό αποτέλεσμα!

    Όταν έλεγα «υποπτεύομαι» αυτό ακριβώς εννοούσα. Τον τρόπο που γράφεις, τον έχω χρησιμοποιήσει στην.... DB2 Smile και βλέποντας το λάθος μου, ψιλιάστικα ότι γενικώς το oledb δεν πρέπει να δίνει σημασία στα ονόματα, αλλά στις θέσεις των μεταβλητών....

    Θενξ παίδες!

    A wise man does not urinate against the wind Smile
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems