Προς το περιεχόμενο

VBA HELP!!! ME SELECT QUERY


euoukos

Προτεινόμενες αναρτήσεις

:cry:

Λοιπόν προσπαθώ να συντάξω ένα select query στην VBA, αλλά αδύνατον!!!!

 

αυτό που θέλω να κάνει είναι να επιλέγει την εγγραφή που πληρεί τις προϋποθέσεις.

Δηλαδή για παράδειγμα:

 

Select title from books where primarykey=1 and type= programming

και το αποτέλεσμα να το αναθέτει σε μια μεταβλητή τύπου string.

 

Έχω δοκιμάσει με docmd.sqlrun , αλλά δεν μπορώ ... όλο κάτι χτυπάει ή δεν τυπώνει τίποτα στην οθόνη.:devil::devil:

 

 

Μπορεί κάποιος να βοήθήσει???

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

>
Dim rs As DAO.Recordset

SQLQuery = "Select title from books where primarykey=1 and type= programming"

Set rs = CurrentDb.OpenRecordset(SQLQuery, dbOpenDynaset)

QueryData = rs.GetRows(rs.RecordCount)

rs.Close
Set rs = Nothing

 

To παραπανω θα σου δωσει τα αποτελεσματα σε ενα δισδιαστατο array (querydata). Ειναι πιο γενικη περιπτωση. Δεν ξερεις αν εχεις μονο ενα αποτελεσμα ουτε σε νοιαζει τι τυποι δεδομενων ειναι τα αποτελεσματα)

 

Μετα γραφεις ενα loop και παιρνεις ο,τι θες απο το array. Ψαξε στο google για το πως δουλευουν τα δισδιαστατα arrays σε vba και θα βρεις κατι σιγουρα

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες


Dim rs As DAO.Recordset

 

....

Σε ευχαριστώ πάρα πολύ!

Έχω ψάξει όλο το google, είχα βρει και είχα τεστάρει κάτι ανάλογο με το παράδειγμά σου... αλλά δεν δούλεψε!:mad:

 

Θα τεστάρω το δικό σου το συντομότερο και θα σε ενημερώσω σχετικά.

Σε ευχαριστώ πάρα πολύ.:-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν γίνεται τίποτα!

Ακόμα ψάχνω να βρω τι λάθος κάνω!

Έχω γράψει ακρίβως το προηγούμενο παράδειγμα, αλλά όταν δίνω να τυπώθεί:

msgbox QueryData δεν εμφανίζει τίποτα στην οθόνη.

Μόνον ένα record υπάρχει στο table books που να πληρεί τις προϋποθέσεις. :cry::cry::cry::cry::cry::cry::cry:

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κοιτα, αυτος ο τροπος να φτιαξεις recordset παιζει. Το σηκωσα απο κατι που ειχα φτιαξει εγω και απλως αλλαξα το query. Φανταζομαι εχεις access 2003 η 2000 ε?

 

Αστο msgbox. Δοκιμασε για αρχη να φτιαξεις μια function με τα παραπανω και να προσθεσεις κωδικα να καλεσεις το array και να επιστρεψεις την τιμη που θες στο function. Απ'οτι θυμαμαι η access εχει κατι σαν κονσολα που μπορεις να τρεξεις τα functions μονα τους και να σου επιστρεφουν αποτελεσματα. Χρησιμο για debugging. Διαφορετικα φτιαξε ενα ψευτο query και καλεσε μεσα απο εκει τη fuction. Τουλαχιστον ετσι να δουμε αν φτανει στο σημειο να βαζει κατι στο array. Το οτι επιστρεφει μονο ενα αποτελεσμα δεν εχει καμια σημασια. Παλι array ειναι και ετσι θα το μεταχειριστεις.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κοιτα, αυτος ο τροπος να φτιαξεις recordset παιζει. Το σηκωσα απο κατι που ειχα φτιαξει εγω και απλως αλλαξα το query. Φανταζομαι εχεις access 2003 η 2000 ε?

 

Αστο msgbox. Δοκιμασε για αρχη να φτιαξεις μια function με τα παραπανω και να προσθεσεις κωδικα να καλεσεις το array και να επιστρεψεις την τιμη που θες στο function. Απ'οτι θυμαμαι η access εχει κατι σαν κονσολα που μπορεις να τρεξεις τα functions μονα τους και να σου επιστρεφουν αποτελεσματα. Χρησιμο για debugging. Διαφορετικα φτιαξε ενα ψευτο query και καλεσε μεσα απο εκει τη fuction. Τουλαχιστον ετσι να δουμε αν φτανει στο σημειο να βαζει κατι στο array. Το οτι επιστρεφει μονο ενα αποτελεσμα δεν εχει καμια σημασια. Παλι array ειναι και ετσι θα το μεταχειριστεις.

 

Ναι έχεις δίκιο ... ο κώδικάς σου δουλεύει, απλά εγώ βρίσκομαι πολύ αρχάριο στάδιο όσον αφορά τον προγραμματισμό με VBA και έχω "βραχυκυκλώσει" :-)

Λοιπόν, αυτό που έφταιγε ήταν ότι το ένα field μέσα στο where είχε datatype number και όταν το έκανα string, απλά εκτελώντας μια dlookup, "έπαιξε" σωστά.

 

Η αλήθεια είναι ότι προσπάθησα να κάνω ακολουθήσω τις οδηγίες με το array, αλλά δεν τα κατάφερα!

 

Έχω κάτι βιβλία της VBA, τα οποία δεν με βοηθούν ιδιαίτερα.

Έχω ψάξει όλο το google, αλλά δεν έχω βρει κάτι καλό για την εκτέλεση queries με τη VBA έτσι ώστε να κατανοήσω πώς και πότε χρησιμοποιώ sqlrun, recordset, openquery κλπ.

 

Μήπως γνωρίζεις κάποιο καλό link ή κάποιο ebook?

 

 

Σε ευχαριστώ πάρα πολύ για την βοήθεια!:-D

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ειχα βρει πολλα οταν ασχολιομουνα με VBA. Δυστυχως μετα απο ενα φορματ ξεχασα να σωσω τα Bookmarks :-(

 

Παντως αυτο που με ειχε βοηθησει περισσοτερο το ξαναβρηκα.

 

http://www.classanytime.com/mis333k/

 

Εχει section για recordsets και για arrays

 

http://www.classanytime.com/mis333k/sjloopsarrays.html

http://www.classanytime.com/mis333k/sjdaoadorecordsets.html

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δε χρειάζεται να δημιουργήσεις ένα ερώτημα για να πετύχεις αυτό που θέλεις στην Access.

 

Dim strResult As String

If IsNull(DLookup("title", "books", "primarykey=1 AND type='programming'")) = True Then

MsgBox "Δεν υπάρχει τέτοια εγγραφή."

Else

strResult = Nz(DLookup("title", "books", "primarykey=1 AND type='programming'"))

MsgBox strResult

End If

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δε χρειάζεται να δημιουργήσεις ένα ερώτημα για να πετύχεις αυτό που θέλεις στην Access.

 

Dim strResult As String

If IsNull(DLookup("title", "books", "primarykey=1 AND type='programming'")) = True Then

MsgBox "Δεν υπάρχει τέτοια εγγραφή."

Else

strResult = Nz(DLookup("title", "books", "primarykey=1 AND type='programming'"))

MsgBox strResult

End If

 

 

mmmm.... πολύ καλό!!!! ;)

thanks!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ειχα βρει πολλα οταν ασχολιομουνα με VBA. Δυστυχως μετα απο ενα φορματ ξεχασα να σωσω τα Bookmarks :-(

 

Παντως αυτο που με ειχε βοηθησει περισσοτερο το ξαναβρηκα.

 

http://www.classanytime.com/mis333k/

 

Εχει section για recordsets και για arrays

 

http://www.classanytime.com/mis333k/sjloopsarrays.html

http://www.classanytime.com/mis333k/sjdaoadorecordsets.html

 

ΠΑΡΑ ΠΟΛΥ ΚΑΛΑ links!!!!

Κάτι τέτοιο έψαχνα!

Ψάχνω εδώ και πάρα πολύ καιρό στο google, αλλά δεν τα είχα βρει αυτά τα links!

Πιστεύω ότι θα βοηθήσουν πάρα πολύ, τόσο εμένα αλλά και άλλους φίλους... που θα δουν... ;)

 

Σε ευχαριστώ πάρα πολύ!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...