Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Δύσκολο πρόβλημα με ημερομηνίες σε ερωτήματα!

Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια!

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 21-11-10, 22:07
Όνομα: Μιχαλης
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 21-05-2010
Μηνύματα: 8
Προεπιλογή Δύσκολο πρόβλημα με ημερομηνίες σε ερωτήματα!

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

Με μεγάλη μου χαρά διάβασα το post του Meteora και του Kapetang που αφορά στον τρόπο με τον οποίο χειρίζεται η Access τις ημερομηνίες.Είμαι μέτριος χρήστης της Access και ασχολούμαι καιρο τώρα φτιάχνοντας μικροεφαρμογές στον ελεύθερό μου χρόνο.Ψάψνω και βρίσκω αρκετά νέα πράγματα κάθε φορά που αντιμετωπίζω κάποιο πρόβλημα με τις τεχνικές της Access.

Ωστόσο,ίσως το δυσκολότερο πρόβλημα μου έχει παρουσιαστεί τωρα και όσο και αν έχω ψαξει στο internet δεν έχω καταφέρει να βρω λύση.

Το πρόβλημά μου έχει να κάνει με ημερομηνίες μέσα σε ερωτήματα.Χρησιμοποιώ 3 ερωτήματα το ένα μεσα στο άλλο για να εμφανίσω κάποια ΄"σύνθετα" δεδομένα από διάφορους πίνακες.Στο 3 ερώτημα χρησιμοποιώ το 2ο ερώτημα όπως είναι ,απλά σε 1-2 από τα πεδία αυτού του ερωτήματος κάνω concatenate τις εγγραφές του με βάση το id ενός πελάτη.Είναι ένας πολύ χρήσιμος κώδικας (δε θυμάμαι ακριβώς που το είχα βρει) και μέχρι τώρα μου δούλευε πολύ όμορφα σε όσα ερωτήματα το είχα χρησιμοποιήσει.

Το πρόβλημα δημιουργείται μόλις αποφασίζω ότι θέλω να φιλτράρω τα δεδομένα αυτά ώστε να εμφανίζονται για μια συγκεκριμένη περίοδο που την ορίζω με 2 txt_boxes σε μια φόρμα.Χρησιμοποιώ δηλαδή στα κριτήρια του 2ου ερωτήματος στο πεδίο της ημερομηνίας το Between txtdate1 and txtdate2.Προφανώς η access δεν αναγνωρίζει σωστά τις ημερομηνίες και μόλις τρέχω το 3 ερώτημα η access τρελαινεται και μου βγάζει το μήνυμα λάθους :

RUN TIME ERROR 80040e10 Δεν έχει οριστεί τιμή για μία ή περισσότερες παραμέτρους

και μόλις ανοίγω το debugger είναι highlighted η γραμμή
rs.Open SQL, cnn, adOpenForwardOnly, adLockReadOnly

παρακατω σας παραθέτω τον κώδικα των 2 ερωτημάτων (2ου και 3ου,το πρώτο δεν έχει νόημα να το γράφω δεν είναι κάτι το ιδιαίτερο) καθώς και τον κώδικα του Conc στο Module.

Public Function Conc(Fieldx, Identity, Value, Source) As Variant
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim SQL As String
Dim vFld As Variant

Set cnn = CurrentProject.Connection
Set rs = New ADODB.Recordset
vFld = Null

SQL = " SELECT DISTINCT [" & Fieldx & "] as Fld " & _
" FROM [" & Source & "] " & _
" WHERE [" & Identity & "]= ' " & Value & " ' "

' open recordset.
rs.Open SQL, cnn, adOpenForwardOnly, adLockReadOnly

' concatenate the field.
Do While Not rs.EOF
If Not IsNull(rs!Fld) Then

'If InStr("vFld", "rs!Fld") = 0 Then

vFld = vFld & ", " & rs!Fld

End If
rs.MoveNext
Loop
' remove leading comma and space.
vFld = Mid(vFld, 3)

Set cnn = Nothing
Set rs = Nothing

' return concatenated string.
Conc = vFld
End Function


2o query

SELECT 1st_query.customer_id, 1st_query.surname, 1st_query.name, 1st_query.account_number, actions.action_internal_code, activity_codes.activity_name, 1st_query.details,actions.action_date, actions.action_internal_code AS CODE
FROM 1st_query INNER JOIN (activity_codes RIGHT JOIN actions ON activity_codes.activity_code = actions.action_internal_code) ON 1st_query.account_number = actions.ypothesi_id
WHERE (((actions.action_internal_code) Not In ('002','003')) AND ((actions.action_date) Between Format([Forms]![new_actions]![txt_box_start_date],"dd/mm/yyyy") And Format([Forms]![new_actions]![txt_box_end_date],"dd/mm/yyyy")));

3o query

SELECT 2nd_query.customer_id AS ID, 2nd_query.surname AS SURNAME, 2nd_query.name AS NAME, Conc("2nd_query.account_number","2nd_query.custome r_id",2nd_query.customer_id,"2nd_query") AS ACCOUNT, Conc("2nd_query.activity_name","2nd_query.customer _id",2nd_query.customer_id,"2nd_query") AS ACTION, 2nd_query.details AS DETAILS, 2nd_query.action_date
FROM 2nd_query;


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

((actions.action_date) Between Format([Forms]![new_actions]![txt_box_start_date],"dd/mm/yyyy") And Format([Forms]![new_actions]![txt_box_end_date],"dd/mm/yyyy")));
δεν έχω καταφέρει τίποτα,αφήστε που με τον κώδικα vba σχετικά με τισ ημερομηνίες στο άλλο topic μπερδεύτηκα περισσότερο με τις # τα "" διπλά και μονά.

Ο κώδικας των ερωτημάτων είναι όπως φαίνεται στο query designer .Δοκίμασα και χωρίς το Format() αλλά τίποτα.

Παιδιά ,αν μπορέσετε να με βοηθήσετε θα με κάνατε ευτυχισμένο.έχω παιδευτει πολύ και αυτό με τσαντίζει που δεν μπορώ να βρω λύση.

Σας ευχαριστώ εκ των προτέρων.
Απάντηση με παράθεση
  #2  
Παλιά 21-11-10, 23:39
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Μιχάλη καλωσόρισες στο φόρουμ.

Τελείως πρόχειρα προτείνω να δοκιμάσεις τα εξής:
Στη σχεδίαση της φόρμας όρισε ως μορφή στα πλαίσια κειμένου που πληκτρολογείς τις ημερομηνίες «Σύντομη ημερομηνία» και στα κριτήρια του 2ου ερωτήματος μη χρησιμοποιείς καμία συνάρτηση (δηλαδή, Between [Forms]![new_actions]![txt_box_start_date] And [Forms]![new_actions]![txt_box_end_date]). Με ανοιχτή τη φόρμα άνοιξε το ερώτημα και δες αν εμφανίζει σωστά τις εγγραφές.
Αν δεν εμφανίζονται σωστά χρησιμοποίησε τη συνάρτηση CDate (δηλαδή, Between CDate([Forms]![new_actions]![txt_box_start_date]) And CDate([Forms]![new_actions]![txt_box_end_date])) και ξαναδοκίμασε.
Αν δε λυθεί το πρόβλημα θα σου πρότεινα να ανεβάσεις ένα δείγμα της βάσης σου για να τη δούμε καλύτερα.

Φιλικά/Γιώργος
Απάντηση με παράθεση
  #3  
Παλιά 21-11-10, 23:42
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Καλησπέρα Μιχάλη και καλωσόρισες στο φόρουμ!

Έχω την αίσθηση (μπορεί να κάνω και λάθος) ότι η λύση στο πρόβλημα σου λύνεται με
σχετικά λιγότερες διαδικασίες.

Θα σου ήταν εύκολο να επισυνάψεις ένα παράδειγμα με κάποια δεδομένα για να δούμε που
ακριβώς υπάρχει το πρόβλημα;

Περιμένουμε απάντηση σου.

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #4  
Παλιά 22-11-10, 01:01
Όνομα: Μιχαλης
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 21-05-2010
Μηνύματα: 8
Προεπιλογή

παιδια,ψαχνω από το πρωι χωρις πλακα να βρω τη λυση,τιποτα δε δουλευει ουτε με ανοιχτες ουτε με κλειστες φορμες τα χω δοκιμασει ολα.

το μονο που μου δουλεψε (12.50 το βραδυ και παω για υπνο δεν την παλευω αλλο για αποψε) ήταν αυτο:
Between Eval("[Forms]![energeies]![txt_box_apo]") And Eval("[Forms]![energeies]![txt_box_ews]")

ηταν το μονο που μου δουλεψε αλλα και παλι μονο μεσα απο τη φορμα,τρεχοντας το ερωτημα απο το database window δε δουλεψε με καμια κυβερνηση.με αυτο τον τροπο δε χρειαστηκε να πειραξω τιποτα στις ημερομηνιες ουτε format τιποτα.

κατι ειναι κι αυτο παντως.εχετε να προτεινετε κατι αλλο?
Απάντηση με παράθεση
  #5  
Παλιά 22-11-10, 07:45
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Καλημέρα σε όλους!

Αγαπητέ Μιχάλη,

Όπως βλέπεις, στο φόρουμ αυτό υπάρχει ανταπόκριση σε σύγκριση μ αυτό:
weird problem with dates in query!

Για να σου δώσουμε μια σαφή απάντηση θα χρειαστούμε μια σαφή ερώτηση, κάτι που είναι αδύνατο χωρίς τη συνοδεία κάποιου συνημμένου.

Μας αναφέρεις ένα σύμπτωμα που οι πιθανές αιτίες που το προκαλούν ανέρχονται σε δεκάδες!

Ποια απ όλες αυτές τις αιτίες να πάρουμε σαν βάση και να σου δώσουμε την κατάλληλη απάντηση;

Δεν βλέπουμε τον υπολογιστή σου! Ούτε είμαστε σε θέση να αναπαράγουμε το πρόβλημα βασισμένοι στην περιγραφή σου.

Το μόνο που βλέπω είναι ότι οι μορφές (Format) των ημερομηνιών στα ερωτήματα δεν είναι σωστές.

Βοήθησε μας να σε βοηθήσουμε!

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #6  
Παλιά 23-11-10, 00:10
Όνομα: Μιχαλης
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 21-05-2010
Μηνύματα: 8
Προεπιλογή

Καλησπερα και παλι,η αληθεια ειναι οτι εχω απευθυνθει και σε ξενα φορουμ προσπαθωντας να βρω απαντησεισ σε θεματα που κατα καιρους αντιμετωπιζω.

Σας ανεβασα ενα δειγμα απο τη βαση.

αν εχετε χρονο ριξτε της μια ματια.

ευχαριστω.
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb βδ1.mdb (296,0 KB, 24 εμφανίσεις)
Απάντηση με παράθεση
  #7  
Παλιά 23-11-10, 07:47
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Καλημέρα Μιχάλη!

  • Μην δίνεις στα πεδία σου ονόματα που είναι δεσμευμένα είτε από την VB είτα από την SQL !!!
    Δεν υφίσταται να χρησιμοποιείς πεδίο με το όνομα "Name"!!
  • Μετονόμασε τα ερωτήματα σου σε πχ. Qry1, Qry2 κτλ.
  • Στο ερώτημα "3" σε κάποια γράφεις:
Conc("card_number";"bank_customer_code";[customer_code];"Q2")

Αυτό το "bank_customer_code" δεν υπάρχει πουθενά για να μπορέσει να το επεξεργαστεί η συνάρτηση Conc() κι έτσι εισπράτεις το μήνυμα λάθους.

Επισης που είναι το card_number και το activity_name ??

Περίγραψε μας τι ακριβώς θέλεις να επιτύχεις. Ίσως να υπάρχει απλότερος τρόπος στη λύση του ζητούμενου σου

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #8  
Παλιά 23-11-10, 11:54
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλημέρα στην παρέα

Μιχάλη, πέρα από τις επισημάνσεις του φίλου Τάσου, θέλω να τονίσω ότι η βάση που ανέβασες δεν μπορεί να λειτουργήσει, επειδή παρουσιάζει σοβαρές αδυναμίες στη σχεδίαση.
Γενικά θα πρέπει:
  1. Τα στοιχεία που θα διαχειρίζεται η βάση δεδομένων, χωρίς να επαναλαμβάνονται (εκτός από τα πεδία σύνδεσης) να οργανωθούν σε κατάλληλους πίνακες.
  2. Να οριστούν οι σχέσεις μεταξύ των πινάκων.
  3. Στα ερωτήματα οι πίνακες που συμμετέχουν να ενώνονται. Όταν δεν ενώνονται κάθε εγγραφή του ενός συνδυάζεται με όλες του άλλου με αποτέλεσμα ένα μεγάλο πλήθος άχρηστων εγγραφών (καρτεσιανό γινόμενο).

Φιλικά/Γιώργος
Απάντηση με παράθεση
  #9  
Παλιά 23-11-10, 12:00
Όνομα: Μιχαλης
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 21-05-2010
Μηνύματα: 8
Προεπιλογή

Τάσο συγγνώμη έχεις δικιο,ξεχασα να αλλαξω καποια πεδια πανω στο πειραγμα.

Ανεβασα το σωστο τωρα.

Αν του αφαιρεσεις απο το qry2 στο κριτηριο to Between [Forms]![energeies]![txt_box_apo] And [Forms]![energeies]![txt_box_ews] ,το 3ο ερωτημα δουλευει μια χαρα είτε απο τη φόρμα μέσα είτε από database window τρεχοντάς το.

Γενικά το να βαζεις μέσα σε κριτηρια σε qry txt box controls απο φορμες είναι μια τακτική που χρησιμευει αρκετά για να φιλτράρεις δεδομένα δυναμικά με παρέμβαση από το χρήστη.Σε άλλες περιπτώσεις που τα txt boxes περιεχουν απλα κειμενο τα ερωτήματα δουλευόυν μια χαρά.

Μήπως υπάρχει κάποιος άλλος εναλλακτικός τρόπος - τεχνική για να κανω κατι παρόμοιο?Π.Χ. να βάζω το recordsource του ερωτήματος μέσα σε event φόρμας ή control σε φορμα με vba.Ουσιαστικά όμως είναι ακριβώς το ίδιο με αυτό που έκανα και νομίζω είναι λίγο πιο απλό και πιο εύχρηστο το να δουλεύεις πάνω στο qry designer.

Αυτό βασικά που μου κάνει αυτή η conc συνάρτηση είναι το ακόλουθο.

ΟΝΟΜΑ ΑΡΙΘΜΟΣ
ΜΙΧΑΛΗΣ 1
ΜΙΧΑΛΗΣ 3
ΜΙΧΑΛΗΣ 4
ΤΑΣΟΣ 1
ΤΑΣΟΣ 3
ΤΑΣΟΣ 3

να γίνεται ως εξής:

ΟΝΟΜΑ ΑΡΙΘΜΟΣ
ΜΙΧΑΛΗΣ 1,3,4
ΤΑΣΟΣ 1,3

Πιθανόν να μπορούσε και να γίνει χωρίς custom συναρτηση με vba,και να το έφτιαχνα κάπως μεσα στο qry απευθείας αλλά ίσως να χρειαζόμουν κι αλλο επιπλέον qry για να κάνω ότι κάνει η conc.

Πάντως θα ήταν πολύ χρήσιμο να υπήρχε εδώ συγκεντρωμένη (σε ελληνικό όχι ξένο site) μία συλλογή με χρήσιμα παραδείγματα-τεχνικές που συνηθίζονται να χρησιμοποιούνται σε εφαρμογές access.(κάτι παρόμοιο με τη βάση Solutions9.mdb thw microsoft αλλά με πρισσότερα παραδειγματα.)

Ευχαριστώ για το χρόνο και τη βοήθειά σου Τάσο.
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb βδ1NEW.mdb (292,0 KB, 10 εμφανίσεις)
Απάντηση με παράθεση
  #10  
Παλιά 23-11-10, 12:31
Όνομα: Μιχαλης
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 21-05-2010
Μηνύματα: 8
Προεπιλογή

Παιδιά,πρέπει να πω ότι η βάση δεν είναι μόνο αυτή που έχω ανεβάσει.

Στην κανονική βάση έχω ορίσει όλες τις σχέσεις των πινάκων αλλά το θέμα δεν είναι αυτό.

Στη βάση που μόλις ανέβασα το πρόβλημα είναι συγκεκριμένο.Δε νομίζω ότι έχει να κάνει με τις σχέσεις και τη σχεδίαση γενικότερα.

Σας ανεβάσω και τη βάση με τις σχέσεις.
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb βδ1NEW.mdb (300,0 KB, 26 εμφανίσεις)
Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
Πρόβλημα με ημερομηνίες αδειών, ρεπό. lefterisg Access - Ερωτήσεις / Απαντήσεις 0 02-12-16 18:53
[Γενικά] Προβλημα με ημερομηνιες asterix Excel - Ερωτήσεις / Απαντήσεις 3 03-12-15 12:06
Πρόβλημα με τις ημερομηνίες Damiyo16 Access - Ερωτήσεις / Απαντήσεις 15 01-12-10 18:03
Εκθέσεις από ερωτήματα iondep Access - Ερωτήσεις / Απαντήσεις 6 04-11-10 17:12
ΑΞΙΟΓΡΑΦΑ - Ένα πάρα πολύ δύσκολο θέμα!! tzvangel Access - Ερωτήσεις / Απαντήσεις 8 26-02-10 23:58


Η ώρα είναι 08:05.