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

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

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

  • 0
euoukos

VBA HELP!!! ME SELECT QUERY

Ερώτηση

:cry:

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

 

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

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

 

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

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

 

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

 

 

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

9 απαντήσεις σε αυτή την ερώτηση

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


Dim rs As DAO.Recordset

 

....

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

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

 

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

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
Κοιτα, αυτος ο τροπος να φτιαξεις 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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

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

 

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
Δε χρειάζεται να δημιουργήσεις ένα ερώτημα για να πετύχεις αυτό που θέλεις στην 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!

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

 

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

>
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 και θα βρεις κατι σιγουρα

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

Δε χρειάζεται να δημιουργήσεις ένα ερώτημα για να πετύχεις αυτό που θέλεις στην 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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

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

 

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

 

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

 

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

 

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

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
×
×
  • Δημιουργία νέου...