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

 

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

SQL Parameters σε OleDbCommand

Îåêßíçóå áðü ôï ìÝëïò Azular. Τελευταία δημοσίευση από το μέλος Azular στις 03-12-2007, 14:44. Υπάρχουν 7 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  01-12-2007, 20:15 37925

    SQL Parameters σε OleDbCommand

    Έχω φτίαξει ένα OleDbCommand με Parameters.Και του ορίζω παραμέτρους

      Dim cmd As New OleDb.OleDbCommand("qrPOS_States", Connection)
     cmd.Parameters.Add("State", OleDb.OleDbType.WChar, 2)

     cmd.Parameters("TBL.State.State").Value = statevalue
    Στην συνέχεια χρησιμοποιώ αυτό το OleDbCommand σε ένα DataReader

    DataReader = cmd.ExecuteReader

    και μετά

          pDataTable.Load(DataReader, LoadOption.OverwriteChanges)

            DataGridView.DataSource = pDataTable 'Γεμίζω το DataGridView
            DataReader.Close()
            Connection.Close()

    Όλα μια χαρά. Ανάλογα με την τιμή που παίρνει η statevalue γεμίζει και το DataGridView

    Δεν ξέρω όμως ποια τιμή να ορίσω στο statevalue ώστε το DataReader να μου επιστρέφει όλες τις εγγραφές. Μέχρι στιγμής επιστρέφει ότι του φιλτάρω.Αν θέλω όλες τις εγγραφές;;; Δοκίμασα να χρησιμοποιήσω το asterisk δηλ. "*" αλλά και "" αλλά δεν μου επιστρέφει καμία εγγραφή.Πώς γίνεται δηλαδή ένα parameter query να μου επιστρέφει όλες τις εγγραφές;Στην Access που το δοκίμασα με "*" επιστρέφει όλες τις εγγραφές.
    Ευχαριστώ!Wink



  •  02-12-2007, 11:57 37931 σε απάντηση της 37925

    Απ: SQL Parameters σε OleDbCommand

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

    Πχ, μπορείς να γράψεις SQL κώδικα που θα ελέγχει αν η τιμή που περνάει είναι μεγαλύτερη του 0, οπότε θα πρέπει να την περάσει στο WHERE όπως έκανε μέχρι τώρα, και αν η τιμή είναι -1 θα πρέπει να γυρίσει όλες τις εγγραφές. Αυτό μπορείς να το υλοποιήσεις είτε με IF statements, είτε με τη δημιουργία δυναμικά του SQL statement που θα εκτελέσεις. Όπως σε βολεύει καλύτερα... Wink

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  02-12-2007, 14:56 37934 σε απάντηση της 37931

    Απ: SQL Parameters σε OleDbCommand

    Γίνεται αυτό που προτείνεις;Το λέω γιατί τα δεδομενα ειναι σε Access και οχι σε SQL server.Γι' αυτό και χρησιμοποιώ OleDbCommand.Sorry αν ρωτάω κάτι αυτονόητο αλλά το λέω λόγω απειρίας.Αν γίνεται σε Access υπάρχει κάποιο παράδειγμα;

    PS Ως προς το Query όντως κάνω αυτό που προαναφέρεις "...έχει κώδικα στο WHERE που θέτει μια στήλη του πίνακα ίση με την μεταβλητή που περνάς..."
  •  02-12-2007, 19:05 37945 σε απάντηση της 37934

    Απ: SQL Parameters σε OleDbCommand

    Εδώ υπάρχει κουβέντα:

    • Η Access SQL δεν έχει υποστήριξη IF , οπότε η εύκολη απάντηση θα ήταν, όχι δεν μπορείς να το κάνεις.
    • Αλλά η Access SQL μπορεί να τρέξει VBA functions μέσα από κώδικα SQL, οπότε θα μπορούσες μέσα σε ένα view, να γράψεις τον απαραίτητο κώδικα VBA που να κάνει αυτό που θες. Πχ. δες αυτό το παράδειγμα, που έχει μια υλοποίηση του CASE statement από VBA κώδικα μέσα σε Access SQL.

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  03-12-2007, 01:00 37956 σε απάντηση της 37945

    Απ: SQL Parameters σε OleDbCommand

    Ευχαριστώ για την καθοδήγηση.Το link ειναι dead.Θα ρίξω μια ματία μέσω Google να δώ τι γίνεται με αυτές τις περιπτώσεις με VBA και SQL.Μήπως κάποια άλλη πηγή;
  •  03-12-2007, 01:30 37958 σε απάντηση της 37956

    Απ: SQL Parameters σε OleDbCommand

    Χμ... Εγώ το βλέπω κανονικά. Από ποιο πάροχο "βγαίνεις";

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  03-12-2007, 08:41 37964 σε απάντηση της 37958

    Απ: SQL Parameters σε OleDbCommand

    Φίλε Azular,

    νομίζω πρέπει να κάνεις ένα βήμα πίσω και να το δεις πιο απλά το πράγμα. Αν κατάλαβα καλά, το ζητούμενο είναι βάσει της τιμής της statevalue να αποφασίζεις αν θα φέρεις όλες τις εγγραφές ή λιγότερες φιλτραρισμένες. Μέχρί τώρα, με ένα OleDbCommand, προσπαθείς να περάσεις αυτή τη λειτουργία στη βάση. Μπορείς όμως πολύ εύκολα να ορίσεις δύο OleDbCommand objects και ανάλογα με τιμή του statevalue να χρησιμοποιείς το ένα (με το φίλτρο) ή το άλλο (χωρίς φίλτρο).


    Vir prudens non contra ventum mingit
  •  03-12-2007, 14:44 37976 σε απάντηση της 37964

    Απ: SQL Parameters σε OleDbCommand

    Νομίζω έχεις δίκιο, σε αυτό το συμπέρασμα κατέληξα και εγώ. Αν θέλω να φέρω όλες τις εγγραφές ζητάω άλλο query από την βάση.Όσο για το link σχετικά με SQL και VBA σήμερα το βλέπω και εγώ κανονικά (έχω ConnexSuper Angry).
    Έναν άλλο προβληματισμό που έχω είναι πώς μπορώ να περάσω πολλές τιμές σε μία παράμετρο.Στο παράδειγμά μας θα ήθελα να γινόταν κάτι σαν

    cmd.Parameters("TBL.State.State").Value = Greece,Italy,Albania

    Ώστε να μου φέρει τις τιμές από την Ελλάδα ή Ιταλία ή Αλβανία

    Στην Access θα χώριζα τις τιμές με "OR" δηλ. ...WHERE TBL.State = 'Greece' OR 'Italy' OR 'Albania'

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