Καλησπέρα guys!
Η προσωπική μου γνώμη είναι πως αντί για αναφορές σε χειριστήρια φόρμας, πιο αξιόπιστη μέθοδος
χρήσης δυναμικών παραμέτρων σε ερωτήματα είναι η χρήση προσαρμοσμένων συναρτήσεων.
Στην περίπτωσή σου λοιπόν φίλε Μιχάλη, θα μπορούσαμε να διατηρούμε σε μια μονάδα κώδικα τα εξής:
Κώδικας:
Option Compare Database
Option Explicit
Private mdtmDateFrom As Date
Private mdtmDateTo As Date
Function DateFrom(Optional dtmDate As Date = 0) As Date
If dtmDate > 0 Then mdtmDateFrom = dtmDate
DateFrom = mdtmDateFrom
End Function
Function DateTo(Optional dtmDate As Date = 0) As Date
If dtmDate > 0 Then mdtmDateTo = dtmDate
DateTo = mdtmDateTo
End Function
Ενώ στη λειτουργική μονάδα κώδικα της φόρμας "energeies" τις παρακάτω εκφράσεις:
Κώδικας:
Private Sub Form_Load()
txt_box_apo_AfterUpdate
txt_box_ews_AfterUpdate
End Sub
Private Sub txt_box_apo_AfterUpdate()
DateFrom Nz(Me.txt_box_apo, 0)
End Sub
Private Sub txt_box_ews_AfterUpdate()
DateTo Nz(Me.txt_box_ews, 0)
End Sub
Έτσι, το ερώτημα "qry2" πλέον υλοποιείται με το παρακάτω SQL κείμενο:
Κώδικας:
SELECT qry1.customer_code, qry1.surname, qry1.name1, qry1.number1,
status_energeiwn.action_code, activity_codes.activity_name, status_energeiwn.action_date
FROM activity_codes INNER JOIN (qry1 INNER JOIN status_energeiwn
ON qry1.number1=status_energeiwn.ypothesi_id)
ON activity_codes.activity_code=status_energeiwn.action_code
WHERE (((status_energeiwn.action_date) Between DateFrom() And DateTo()));
Το πλεονέκτημα είναι πως οι συναρτήσεις DateFrom() και DateTo() είναι προσβάσιμες από οποιοδήποτε σημείο της εφαρμογής
ενώ οι μεταβλητές επιπέδου μονάδας
mdtmDateFrom και
mdtmDateTo διατηρούν τις τελευταίες επιλογές μας.
Έτσι οι παράμετροι στα ερωτήματα θα έχουν πάντα μια τιμή ημερομηνίας, ακόμη κι αν αυτή είναι μηδενική,
χωρίς πια να μας απασχολεί αν είναι ανοιχτή η φόρμα που την έθεσε ή όχι.
Επίσης, για τη συνένωση των τιμών ενός πεδίου, θα μπορούσες να χρησιμοποιήσεις και τη μέθοδο
GetString() του αντικειμένου ADODB.Recordset.
Στο συνημμένο αρχείο που σου επιστρέφω θα βρεις την εφαρμογή όλων των παραπάνω
και ελπίζω να σου φανούν χρήσιμα.
Φιλικά, Γιάννης.