Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Φόρμα Αναζήτησης (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/4288-forma-anazitisis.html)

KTL 18-10-16 11:11

1 Συνημμένο(α)
Καλημέρα σας,

Έχω προσθέσει ορισμένα πράγματα στη βάση με νέες αναζητήσεις. Όλα δουλεύουν μια χαρά εκτός από κάτι που δεν μπορώ να καταλάβω το γιατί.
Συγκεκριμένα στην εισαγωγή δεδομένων του πίνακα "Κατάστημα" έχει προστεθεί το πεδίο "Δυσκολία_Επισκευής", στο οποίο βάζω τιμές από το 0 έως το 5.
Η "Αναζήτηση" δουλεύει σωστά μόνο στην περίπτωση που στο πεδίο "Δυσκολία_Επισκευής" δεν υπάρχει η τιμή 0.

Θα μπορούσε να γίνει κάτι ώστε η "Αναζήτηση" να δουλεύει σωστά και με τις τιμές 0 του πεδίου "Δυσκολία_Επισκευής";

kapetang 18-10-16 17:24

1 Συνημμένο(α)
Καλησπέρα

Βασίλη, προσθέτοντας συνεχώς κριτήρια το ερώτημα γίνεται πολύπλοκο και δύσκολα διαχειρίσιμο.

Στη συνημμένη ΒΔ:

1) Έκανα κάποιες αλλαγές στη φόρμα [Αναζήτηση].

2) Δημιούργησα το ερώτημα [qrySearch].

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

3) Πρόσθεσα τη φόρμα [Οδηγίες], στην οποία δίνονται οδηγίες για τον τρόπο διαμόρφωσης των κριτηρίων.

Κάνε δοκιμές μήπως μου ξέφυγε κάτι.

Φιλικά/Γιώργος

KTL 18-10-16 19:14

1 Συνημμένο(α)
Καλησπέρα Γιώργο,

Σ' ευχαριστώ πολύ για τον χρόνο σου. Όμως δε θέλω κάτι τέτοιο. Θα δώσω ένα παράδειγμα για να γίνω πιο κατανοητός.
π.χ. Θέλουμε να αναζητήσουμε ένα προϊόν στο κατάστημά μας με τα εξής χαρακτηριστικά:
1. Να έχει μέγεθος "Μ".
2. Αν έχει δύο ελαττώματα "Εμφανή".
3. Αν έχει δύο ελαττώματα "Μπροστά".
4. Το επίπεδο δυσκολίας να είναι "3".

Αν έκανα μια τέτοια αναζήτηση στη βάση που επισύναψα στην προηγούμενη δημοσίευση, δούλευε σωστά.
Αν χρησιμοποιούσα το πιο πάνω παράδειγμα και δεν έβαζα τιμή στο επίπεδο δυσκολίας, τότε η αναζήτηση θα μου εμφάνιζε σωστά τις εγγραφές που τηρούν τα κριτήρια αρκεί το πεδίο "Δυσκολία Επισκευής" να μην είχε την τιμή μηδέν.
Με άλλα λόγια το πρόβλημα είναι ότι δε δουλεύει η αναζήτηση όταν το πεδίο "Δυσκολία Επισκευής" έχει την τιμή 0. Πολύ περίεργο...
Επισυνάπτω ξανά τη βάση με τις εγγραφές του παραδείγματος.

Αυτό ήθελα να διορθώσω και δε μπορώ να τα καταφέρω...

kapetang 19-10-16 10:18

Καλημέρα

Βασίλη, δεν έχω χρόνο για να ψάξω το λαβύρινθο!

Ίσως τα παρακάτω να βοηθήσουν να βρεις το λάθος και να διαμορφώσεις σωστά τα κριτήρια αναζήτησης.

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

Για την καταχώρηση των χαρακτηριστικών των ελαττωμάτων χρησιμοποιούνται 3 τριάδες πεδίων (Ε1, Θ1, Δ1), (Ε2, Θ2, Δ2), (Ε3, Θ3, Δ3).

Συνεπώς μπορούν να καταχωρηθούν από μηδέν (όλα τα πεδία κενά) μέχρι 3 ελαττώματα.

Οι συνδυασμοί των τιμών της 3άδας (Ε1, Θ1, Δ1), είναι 2*3*6 + 1 (όλα τα πεδία κενά)=37.

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

Τα ίδια ισχύουν και για τους συνδυασμούς των τιμών των 3άδων (Ε2, Θ2, Δ2) και (Ε3, Θ3, Δ3).

Ένα ελάττωμα (ε, θ, δ) = (έχει εμφάνιση ε, βρίσκεται στη θέση θ, έχει δυσκολία επισκευής δ), μπορεί, σε μία εγγραφή του πίνακα, να εμφανίζεται 0 ή 1 ή 2, ή 3 φορές.

Όπως είναι διαμορφωμένη η φόρμα αναζήτησης, μπορούμε να αναζητήσουμε τις εγγραφές του πίνακα, που παρουσιάζουν το ελάττωμα (ε, θ, δ) Ν φορές (Ν=0, 1, 2, 3).

Τα κριτήρια στο ερώτημα θα πρέπει να διαμορφωθούν ανάλογα και με την τιμή του Ν.

1) Ν είναι κενό. Ισοδυναμεί με το:

Δε θα εφαρμοστούν κριτήρια στα πεδία ελαττωμάτων.

2) Ν=0. Ισοδυναμεί με το:


Το (ε,θ,δ) να μη υπάρχει, στο (Ε1,Θ1,Δ1) και στο (Ε2,Θ2,Δ2) και στο (Ε3,Θ3,Δ3)

Τα κριτήρια θα έχουν τη μορφή

(isNull(E1) OR E1<>ε OR isNull(Θ1) OR Θ1<>θ OR isNull(Δ1) OR Δ1<>δ)

AND (isNull(E2) OR E2<>ε OR isNull(Θ2) OR Θ2<>θ OR isNull(Δ2) OR Δ2<>δ)

AND (isNull(E3) OR E3<>ε OR isNull(Θ3) OR Θ3<>θ OR isNull(Δ3) OR Δ3<>δ)

3) Αν Ν=1. Ισοδυναμεί με το:
  • Το (ε,θ,δ) να υπάρχει στο (Ε1,Θ1,Δ1) να μη υπάρχει στο (Ε2,Θ2,Δ2) και να μη υπάρχει στο (Ε3,Θ3,Δ3)
  • Το (ε,θ,δ) να μη υπάρχει στο (Ε1,Θ1,Δ1) να υπάρχει στο (Ε2,Θ2,Δ2) και να μη υπάρχει στο (Ε3,Θ3,Δ3)
  • Το (ε,θ,δ) να μη υπάρχει στο (Ε1,Θ1,Δ1) να μη υπάρχει στο (Ε2,Θ2,Δ2) και να υπάρχει στο (Ε3,Θ3,Δ3)

Τα κριτήρια θα έχουν τη μορφή

((Ε1=ε AND Θ1=θ AND Δ1=δ) AND (isNull(Ε2) OR Ε2<>ε OR isNull(Θ2) OR Θ2<>θ OR isNull(Δ2) OR Δ2<>δ) AND ( isNull(Ε3) OR Ε3<>ε OR isNull(Θ3) OR Θ3<>θ OR isNull(Δ3) OR Δ3<>δ))

OR ((isNull(Ε1) OR Ε1<>ε OR isNull(Θ1) OR Θ1<>θ OR isNull(Δ1) OR Δ1<>δ) AND (Ε2=ε AND Θ2=θ AND Δ2=δ) AND (isNull(Ε3) OR Ε3<>ε OR isNull(Θ3) OR Θ3<>θ OR isNull(Δ3) OR Δ3<>δ))

OR ((isNull(Ε1) OR Ε1<>εOR isNull(Θ1) OR Θ1<>θ OR isNull(Δ1) OR Δ1<>δ) AND (isNull(Ε2) OR Ε2<>εOR isNull(Θ2) OR Θ2<>θ OR isNull(Δ2) OR Δ2<>δ) AND (Ε3=ε AND Θ3=θ AND Δ3=δ))

4) N=2 Ισοδυναμεί με το:
  • Το (ε,θ,δ) να υπάρχει στα (Ε1,Θ1,Δ1) και (Ε2,Θ2,Δ2) και να μη υπάρχει στο (Ε3,Θ3,Δ3)
  • Ή το (ε,θ,δ) να υπάρχει στα (Ε1,Θ1,Δ1) και (Ε3,Θ3,Δ3) και να μη υπάρχει στο (Ε2,Θ2,Δ2)
  • Ή το (ε,θ,δ) να υπάρχει στα (Ε2,Θ2,Δ2) και (Ε3,Θ3,Δ3) και να μη υπάρχει στο (Ε1,Θ1,Δ1)
5) Ν=3. Ισοδυναμεί με το:

Το (ε,θ,δ) να υπάρχει στα (Ε1,Θ1,Δ1), (Ε2,Θ2,Δ2) και (Ε3,Θ3,Δ3)

Θα πρότεινα αντί να έχεις τα πεδία (Ε1, Θ1, Δ1), (Ε2, Θ2, Δ2), (Ε3, Θ3, Δ3) στον πίνακα [Κατάστημα] να δημιουργήσεις ένα νέο πίνακα με πεδία ID (αυτόματης αρίθμησης) ΚατάστημαID (ακέραιος θα συνδέεται με το Αναγνωριστικό του πίνακα Κατάστημα) και Ε, Θ, Δ.
Η ΒΔ θα γίνει πιο ευέλικτη και η εφαρμογή των κριτηρίων θα απλοποιηθεί.

Καλή συνέχεια.

KTL 19-10-16 10:36

Καλημέρα Γιώργο,

Μόνο και μόνο που κάθισες και έγραψες τόσο αναλυτικά τόσα πράγματα σε χίλιο-ευχαριστώ!
Θα τα μελετήσω για να δω τι μπορώ να κάνω.


Η ώρα είναι 18:28.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2