jamespr Δημοσ. 28 Οκτωβρίου 2010 Δημοσ. 28 Οκτωβρίου 2010 Καλησπέρα σε όλους. Θα ήθελα τη βοήθειά σας για ένα ερώτημα. Έχω φτιάξει μία φόρμα στην οποία θα επιλέγω ή θα γράφω παραμέτρους αυτές θα μπαίνουν σε ερώτημα και αυτό θα φέρνει τα αποτελέσματα. Ορίστε ο κώδικας Private Sub comboBrand4_AfterUpdate() Dim db As Database, q As QueryDef Set db = Application.CurrentDb() Set q = db.QueryDefs("ΕΥΡΕΣΗ ΜΕ ΕΠΙΛΟΓΕΣ") q.SQL = "SELECT * FROM DATA WHERE [ΕΙΔΟΣ] = '" & comboBrand & "' AND [ΚΑΤΑΘΕΣΗ] = '" & comboBrand2 & "' AND [ΗΜΕΡΟΜΗΝΙΑ ΚΑΤΑΘΕΣΗΣ] = Between " & comboBrand3 & " And " & comboBrand4 & "" End Sub Private Sub comboBrand4_BeforeUpdate(Cancel As Integer) End Sub Αυτό έχει πρόβλημα γιατί το ερώτημα στο Between θέλει να γράφει Between #ημερομηνια1# and ημερομηνια2# αλλά δεν μπορώ να τα καταφέρω. Στη vba το σωστό είναι με μονά αυτάκια πριν και μετά από τον κώδικα με κόκκινο χρώμα, αλλά αν τα βάλω τα αποτελέσματα στο ερώτημα δεν είναι σωστά. Παρακαλώ κάποια βοήθεια;;; Ευχαριστώ πολύ για το χρόνο σας
taazz Δημοσ. 28 Οκτωβρίου 2010 Δημοσ. 28 Οκτωβρίου 2010 Dεν νομίζω ότ χρειάζεται το = πριν το between μάλλον δημιουργεί προβλήματα. Το comboBrand3/4 επιστρέφει την ημερομηνία σας string ή σαν αριθμό αν την επιστρέφει σαν string τότε αλλάζοντας το παραπάνω ως "Between #" & comboBrand3 & "# And #" & comboBrand4 & "#" θα πρέπει να δουλέψει.
nspyrou Δημοσ. 28 Οκτωβρίου 2010 Δημοσ. 28 Οκτωβρίου 2010 Ανάλογα με τις ρυθμίσεις στα Regional Settings του σύστήματος υπάρχει μια πιθανότητα η ημερομηνία να σου έρχεται μύλος! Δοκίμασε να κάνεις enforce το format της ημερομηνίας σε dd/mm/yyyy προκειμένου να αποφύγεις να στο μετατρέψει σε mm/dd/yyyy. Την έχω πατήσει γι'αυτό το λεω ...
jamespr Δημοσ. 28 Οκτωβρίου 2010 Μέλος Δημοσ. 28 Οκτωβρίου 2010 το ίσον (=) νομίζω χρειάζεται. έβαλα τη λύση αλλά μου βγάζει πάλι λάθος. Την ημερομηνία την έχω ρυθμίσει να τη δέχεται ως dd/mm/yyyy το θέμα είναι ότι στο ερώτημα δεν μπορώ να βάλω να γράφει π.χ. Between #11/12/2000# And #10/01/2010# χωρίς αυτάκια και με τη δίεση. Σας ευχαριστώ πολύ αλλά ακόμα δε βρήκα λύση. Τι κάνω άραγε λάθος
nspyrou Δημοσ. 30 Οκτωβρίου 2010 Δημοσ. 30 Οκτωβρίου 2010 το ίσον (=) νομίζω χρειάζεται. έβαλα τη λύση αλλά μου βγάζει πάλι λάθος. Την ημερομηνία την έχω ρυθμίσει να τη δέχεται ως dd/mm/yyyy το θέμα είναι ότι στο ερώτημα δεν μπορώ να βάλω να γράφει π.χ. Between #11/12/2000# And #10/01/2010# χωρίς αυτάκια και με τη δίεση. Σας ευχαριστώ πολύ αλλά ακόμα δε βρήκα λύση. Τι κάνω άραγε λάθος Για να το καταλάβεις ο τρόπος είναι πολύ απλός: Πρωτίστως δες αν το πεδίο στη βάση σου είναι όντως date. Αν όχι, φαντάζομαι οτι το κρατάς σαν Text. Αν όντως είναι text τότε σίγουρα δεν μπορείς να χρησιμοποιήσεις τα #. Οπότε πρέπει να συνδυάσεις τις functions CDate & CStr για να πάρεις το επιθυμητό αποτέλεσμα. Αν είναι date πχ: CDate(CStr(datefield)) ή CDate(Format(blah blah)) ...
jamespr Δημοσ. 31 Οκτωβρίου 2010 Μέλος Δημοσ. 31 Οκτωβρίου 2010 nspyrou σας ευχαριστώ πάρα πολύ για το χρόνο σας. Στη βάση το έχω σαν date και θέλω απλά να βάζει στο πεδίο αυτό την παράμετρο between [πεδίο1] and [πεδίο2] όπου πεδία 1 και 2 θα τα παίρνει από τη φόρμα μετά από την ενημέρωση αλλά ακόμα μου χτυπάει λάθη. Τι άλλο να διορθώσω;; Έχω απογοητευτεί και αρχίζω να ψάχνω βιβλία να μάθω καλύτερα vba αν τα καταφέρω. Το θέμα είναι μέχρι να μάθω πως θα λύσω αυτό το πρόβλημα Να περνάτε καλά
nspyrou Δημοσ. 31 Οκτωβρίου 2010 Δημοσ. 31 Οκτωβρίου 2010 nspyrou σας ευχαριστώ πάρα πολύ για το χρόνο σας. Στη βάση το έχω σαν date και θέλω απλά να βάζει στο πεδίο αυτό την παράμετρο between [πεδίο1] and [πεδίο2] όπου πεδία 1 και 2 θα τα παίρνει από τη φόρμα μετά από την ενημέρωση αλλά ακόμα μου χτυπάει λάθη. Τι άλλο να διορθώσω;; Έχω απογοητευτεί και αρχίζω να ψάχνω βιβλία να μάθω καλύτερα vba αν τα καταφέρω. Το θέμα είναι μέχρι να μάθω πως θα λύσω αυτό το πρόβλημαΝα περνάτε καλά Επειδή μου έχει κινήσει τη περιέργεια πραγματικά για το τί φταίει έκανα το εξής: έστησα έναν πίνακα σε Access με αυτή τη σύνθεση: EntryId -> Number (Primary Key), FirstName -> Text, LastName -> Text, BirthDate -> Date/Time (Format => Short Date) [Από τα Field Properties/Καρτέλλα General]. Έβαλα 4εις εγγραφές με μερικές ημερομηνίες: 1/1/1999 6/4/2000 3/2/2001 4/4/2002 έφτιαξα ένα Query με το εξής Select: > SELECT Data.* FROM Data Where BirthDate Between #4/6/2000# and #2/3/2001#; Αυτό το Select φέρνει 2 εγγραφές από τις 4εις που σου ορίζω παραπάνω! Θα προσέξεις το εξής: Οτι για να ορίσεις #Date# μεταξύ των ημερομηνιών στο Select, πρέπει να έχεις αντιστρέψει τον μήνα και την ημέρα. Δηλαδή δεν υπάρχει 4/6 και 2/3 στα data που έχω ορίσει στον πίνακα!! Δηλαδή το Query δέχεται τις ημερομηνίες στα κάγκελα "#" σε format mm/dd/yyyy αντί dd/mm/yyyy παρότι έχουν καταχωρηθεί με dd/mm/yyyy!!! Δοκίμασέ το και θα καταλάβεις πως το κάνει ... Στη περίπτωση της φόρμας σου προσάρμοσε το format με αντιστροφή του μήνα και της ημέρας στις ημερομηνίες.
jamespr Δημοσ. 1 Νοεμβρίου 2010 Μέλος Δημοσ. 1 Νοεμβρίου 2010 Πραγματικά δεν έχω λόγια να σας ευχαριστήσω για όσο με έχετε βοηθήσει. Μέχρι τώρα έβαζα σε κάθε ερώτημα στα κριτήρια την έκφραση between [δώσε πρώτη ημερομηνία] and [δώσε δεύτερη ημερομηνία] και αυτό όταν έτρεχα το ερώτημα μου ζητούσε δύο ημερομηνίες. Τις δεχόταν με μορφή dd/mm/yyyy. Τώρα θέλω αυτά που θα έβαζα στα κριτήρια να τα παίρνει μόνο του από τα πεδία μιας φόρμας μαζί με άλλα από άλλα πεδία και να φτιάχνει το ερώτημα. Το πρόβλημά μου είναι ότι στα κριτήρια με τον κώδικα που γράφω δεν φτιάχνει σωστά το between. Αυτό που μου στείλατε είναι πολύ σωστό αλλά πως φτιάχνω να τα πάρει από πεδία φόρμας;; Και πάλι σας ευχαριστώ
nspyrou Δημοσ. 1 Νοεμβρίου 2010 Δημοσ. 1 Νοεμβρίου 2010 Πραγματικά δεν έχω λόγια να σας ευχαριστήσω για όσο με έχετε βοηθήσει. Μέχρι τώρα έβαζα σε κάθε ερώτημα στα κριτήρια την έκφραση between [δώσε πρώτη ημερομηνία] and [δώσε δεύτερη ημερομηνία] και αυτό όταν έτρεχα το ερώτημα μου ζητούσε δύο ημερομηνίες. Τις δεχόταν με μορφή dd/mm/yyyy. Τώρα θέλω αυτά που θα έβαζα στα κριτήρια να τα παίρνει μόνο του από τα πεδία μιας φόρμας μαζί με άλλα από άλλα πεδία και να φτιάχνει το ερώτημα. Το πρόβλημά μου είναι ότι στα κριτήρια με τον κώδικα που γράφω δεν φτιάχνει σωστά το between. Αυτό που μου στείλατε είναι πολύ σωστό αλλά πως φτιάχνω να τα πάρει από πεδία φόρμας;; Και πάλι σας ευχαριστώ Σου έχω ένα παράδειγμα ως επισύναψη. Το μυστικό (?!) είναι οτι οι παράμετροι που ορίζεις στο Query που χρησιμοποιείς για να κάνεις list τις εγγραφές έχουν την αναφορά στο control της φόρμας: πχ. Αν η φόρμα PersonsQueried και το πεδίο "Από ημερομηνία" => FromDate και "Έως ημερομηνία" ToDate τότε στο Query χρησιμοποιείς: > SELECT persons.* FROM persons WHERE (((persons.DateOfBirth) Between [b][Forms]![PersonsQueried]![FromDate][/b] And [b][Forms]![PersonsQueried]![ToDate][/b])); Στον κώδικα του Button που θα χρησιμοποιήσεις προκειμένου να τρέξεις το Query θα έχεις τα εξής (στο Click Event): > Private Sub Command14_Click() On Error GoTo Err_Command14_Click Dim stDocName As String stDocName = "ShowDataQuery" DoCmd.OpenQuery stDocName, acNormal, acEdit '//Εξαρτάται με το πως θες να '//εμφανίσεις τα δεδομένα σου ... Exit_Command14_Click: Exit Sub Err_Command14_Click: MsgBox Err.Description Resume Exit_Command14_Click End Sub To db1.zip λειτουργεί κανονικά μέσω φόρμας κριτηρίων για query (αποσυμπίεσέ το βέβαια πρώτα!). Τρέξε τη φόρμα και βάλε να σου φέρει υποσύνολα μεταξύ των ημερομηνιών του πίνακα Persons. Αν έχεις άλλο πρόβλημα πες μου, να το λύσουμε ... db1.zip
jamespr Δημοσ. 1 Νοεμβρίου 2010 Μέλος Δημοσ. 1 Νοεμβρίου 2010 nspyrou δεν έχω λόγια.... από ότι είδα αυτό που κάνατε πρέπει να δουλέψει κανονικά. Θα το παλέψω απόψε και θα σας στείλω τα αποτελέσματα............. και πάλι ευχαριστώ:-D:-D
nspyrou Δημοσ. 1 Νοεμβρίου 2010 Δημοσ. 1 Νοεμβρίου 2010 nspyrou δεν έχω λόγια.... από ότι είδα αυτό που κάνατε πρέπει να δουλέψει κανονικά. Θα το παλέψω απόψε και θα σας στείλω τα αποτελέσματα............. και πάλι ευχαριστώ:-D:-D Σημασία έχει να δουλέψει. Άλλωστε γι'αυτό είμαστε όλοι στο forum, για να βοηθάμε ο ένας τον άλλο ... Παρακαλώ, θα αναμένω τα αποτελέσματα.
jamespr Δημοσ. 17 Νοεμβρίου 2010 Μέλος Δημοσ. 17 Νοεμβρίου 2010 κ. nspyrou όλα πήγαν τέλεια και το αποτέλεσμα αυτό που περιμέναμε. Σας ευχαριστώ πάρα πάρα πολύ................ Υ.Σ. Αλήθεια ξέρετε πως μπορώ όταν φτιάχνω μία λίστα με αποτελέσματα να έχω ένα κουμπί στο τέλος κάθε εγγραφής που όταν το πατάω να βγάζει τα πλήρη δεδομένα αυτής της εγγραφής σε ξεχωριστή φόρμα;;; Και πάλι ευχαριστώ πολύ για το χρόνο σας
nspyrou Δημοσ. 18 Νοεμβρίου 2010 Δημοσ. 18 Νοεμβρίου 2010 κ. nspyrou όλα πήγαν τέλεια και το αποτέλεσμα αυτό που περιμέναμε. Σας ευχαριστώ πάρα πάρα πολύ................ Υ.Σ. Αλήθεια ξέρετε πως μπορώ όταν φτιάχνω μία λίστα με αποτελέσματα να έχω ένα κουμπί στο τέλος κάθε εγγραφής που όταν το πατάω να βγάζει τα πλήρη δεδομένα αυτής της εγγραφής σε ξεχωριστή φόρμα;;; Και πάλι ευχαριστώ πολύ για το χρόνο σας Χαρά μου, δεν κάνει τίποτα .. να είσαι καλά! Όσων αφορά το δευτερεύον ερώτημά σου, θα σου απαντούσα πως εξαρτάται από το τί είδους αποτελέσματα θέλεις να κρατήσεις και πώς να τα παρουσιάσεις. Άν τίθεται θέμα αποτελεσμάτων σε μορφή εγγραφής, θα μπορούσες να συνδέσεις τον πίνακα που παρουσιάζεις στη φόρμα σου πχ. με έναν δευτερεύον πίνακα και να το παίξεις σε μορφή master/detail. Σε αυτή τη φάση μπορεί και να μή χρειάζεσαι κιόλας δεύτερη φόρμα σε ξεχωριστό παράθυρο παρά μία subform στο ίδιο παράθυρο της master εγγραφής σου. Αυτό βέβαια εξαρτάται από το τί θες να κάνεις και πως να το παρουσιάσεις ... Αν παρέθετες περίσσότερες πληροφορίες για το τί θες να κάνεις, ίσως να μπορούσα να σου πω κάτι πιο συγκεκριμένο ...
jamespr Δημοσ. 18 Νοεμβρίου 2010 Μέλος Δημοσ. 18 Νοεμβρίου 2010 κ. nspyrou μια απλή βάση για το αρχείο του λογιστηρίου που είχα φτιάξει σας στέλνω και στη φόρμα της εύρεσης με επάγγελμα όταν την τρέχω θέλω το κουμπί στο τέλος κάθε εγγραφής να μου εμφανίζει τα πλήρη στοιχεία. Σας ευχαριστώ πάρα πολύ εκ των προτέρων για το χρόνο σας.
nspyrou Δημοσ. 18 Νοεμβρίου 2010 Δημοσ. 18 Νοεμβρίου 2010 κ. nspyrou μια απλή βάση για το αρχείο του λογιστηρίου που είχα φτιάξει σας στέλνω και στη φόρμα της εύρεσης με επάγγελμα όταν την τρέχω θέλω το κουμπί στο τέλος κάθε εγγραφής να μου εμφανίζει τα πλήρη στοιχεία. Σας ευχαριστώ πάρα πολύ εκ των προτέρων για το χρόνο σας. Ο απλός τρόπος είναι αυτός που σου παραθέτω στο attachment. H AutoForm με όνομα DataFreeForm ανοίγει από το details button μέσω μιας macro, η οποία ανοίγει την φόρμα σε dialog μορφή (μιας και η κεντρική σου φόρμα ως maximized κάνει overlap το detail παράθυρο), κάνοντας "Where" με το expression: [ΔΕΔΟΜΕΝΑ]![ΑΡΙΘΜΟΣ_ΦΑΚΕΛΟΥ]=[Forms]![ΕΥΡΕΣΗ ΜΕ ΕΠΑΓΓΕΛΜΑ]![ΑΡΙΘΜΟΣ_ΦΑΚΕΛΟΥ] Για κάποιο λόγο τώρα, φέρνει μία εγγραφή στη φόρμα ΔΕΔΟΜΕΝΑ αλλά ούτως ή άλλως είναι ενδεικτικός ο τρόπος λειτουργίας του lookup. jamespr.zip
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.