Εμφάνιση ενός μόνο μηνύματος
  #1  
Παλιά 21-11-10, 21:07
mihalisp Ο χρήστης mihalisp δεν είναι συνδεδεμένος
Όνομα: Μιχαλης
Έκδοση λογισμικού 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() αλλά τίποτα.

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

Σας ευχαριστώ εκ των προτέρων.
Απάντηση με παράθεση