Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Βοήθεια για αναζήτηση σε Access (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/989-boitheia-gia-anazitisi-se-access.html)

Meteora 24-02-11 19:11

Σωκράτη...
Δεν είναι σωστό να έχεις όλα τα στοιχεία σε ένα πίνακα, αφού κάποια αφορούν πρόσωπο, κάποια σκάφος και κάποια άδεια (τίνος ; του σκάφους ή του προσώπου)
Υπάρχουν πεδία που δεν καταλαβαίνω τί σημαίνουν...

Δεν ειναι σωστό να ανεβάζεις μια εφαρμογή -ζητώντας υποστήριξη και ο μοναδικός πίνακας να είναι σχεδόν άδειος σε πεδία που ζητάς αναζήτηση ή να έχει ως περιεχόμενο το "q" σε διαφορετικά & άσχετα μεταξύ τους πεδία ! Δείχνει προχειρότητα και όχι μόνο...

...Ας δούμε προτάσεις και από άλλα μέλη...

Φιλικά / Νίκος Δ.

soc07 24-02-11 19:59

Παράθεση:

Αρχική Δημοσίευση από Meteora (Μήνυμα 5378)
Σωκράτη...
Δεν είναι σωστό να έχεις όλα τα στοιχεία σε ένα πίνακα, αφού κάποια αφορούν πρόσωπο, κάποια σκάφος και κάποια άδεια (τίνος ; του σκάφους ή του προσώπου)
Υπάρχουν πεδία που δεν καταλαβαίνω τί σημαίνουν...

Δεν ειναι σωστό να ανεβάζεις μια εφαρμογή -ζητώντας υποστήριξη και ο μοναδικός πίνακας να είναι σχεδόν άδειος σε πεδία που ζητάς αναζήτηση ή να έχει ως περιεχόμενο το "q" σε διαφορετικά & άσχετα μεταξύ τους πεδία ! Δείχνει προχειρότητα και όχι μόνο...

.

Εχεις δίκιο, απλα εσβησα ολα τα στοιχεια απο μεσα, όπως και το "σχεδιο" της φόρμας, γιατι ηταν πραγματικα στοιχεια και δεν νομιζω οτι ηταν σωστο να τα κοινοποιησω. Απλα δεν σκεφτηκα να βαλω εικονικα στοιχεια. Σκεφτηκα να κανω πινακες διαφορετικους, απλα "φοβαμαι" τις σχεσεις μεταξυ τους. Σε περιπτωση που κανω πινακες σκαφη, ατομα, αδειες κτλ. τι ακριβως σχεση πρεπει να εχουν μεταξυ τους, οταν ενα ατομο, μπορει να εχει πολλα σκαφη, αλλα παραλληλα πολλα ατομα μαζι μπορουν να εχουν ενα σκαφος? Ειδα οτι οι σχεσεις ειναι 1-1, 1-πολλα και πολλα-1. Δεν υπαρχει κατι για πολλα-πολλα?
Για αυτο εκανα 1 μεγαλο πινακα με φορμες και υποφορμες. Τι προτεινεις? Δεν εχω κανενα προβλημα να το αρχισω απο την αρχη, αν μου προτεινεις ενα πιο "σωστο" τροπο δομησης. Ευχαριστω.

Υ.Γ. Δεν θελησα να σας προσβαλω με το q που επισημανες.

fkonstas 24-02-11 21:50

Τάσο έχω πάθει πλάκα.... ΦΟΒΕΡΟΟΟΟ
Το είχα δει σε μία εφαρμογή και το ζήλεψα, αλλά δεν μπορούσα να βρω πως γίνεται.
Ευθύς το ενσωματώνω σε μία εφαρμογή που έχω σε εξέλιξη.

Νάσαι πάντα καλά.

Με εκτίμηση Φώτης.

ΥΓ: Μετά από 30 λεπτά περίπου, πραγματοποιήθηκε η ενσωμάτωση και στην δική μου εφαρμογή και δουλεύει τέλεια.

Tasos 25-02-11 07:57

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

Νίκο, Φώτη, χαίρομαι που σας άρεσε!

Να είστε καλά και καλή συνέχεια!

Φιλικά

Τάσος

Meteora 25-02-11 16:47

1 Συνημμένο(α)
Καλησπέρα
Αγαπητέ Σωκράτη, δεν ήταν ιδιαίτερα δύσκολο σε μένα για να κάνω αυτό που ζήτησες. Όμως ή εφαρμογή που κάνεις δεν είναι σωστή και έτσι δεν θέλησα εξ αρχής να δώσω την λύση που επιθυμείς.
Βλέπω όμως ότι επιμένεις -μέσω δεύτερης ανάρτησης- στο ίδιο ζήτημα!
Λοιπόν :
Φόρμα menuepilogwn ---> ΑΝΑΖΗΤΗΣΗ ΑΤΟΜΙΚΩΝ ΣΤΟΙΧΕΙΩΝ ----> Αναζήτηση με ΑΦΜ ---> Επέλεξε όποιο θες και πάτησε enter !

Δες οτι αντικατέστησα μια μακροεντολή (δεν τα πάω καλά με αυτές) μια μια γραμμή κώδικα vba. Μια μακροεντολή που υπήρχε στο συμβάν AfterUpdate του σύνθετου πλαισίου με Label "Αναζήτηση με ΑΦΜ:", στο οποίο -συνθετο πλαίσιο- έδωσα όνομα combo1

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

Καλό απόγευμα

Νίκος Δ.

kapetang 25-02-11 17:49

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

Σωκράτη, όπως επισήμανε και ο Νίκος δεν είναι σωστό να έχεις όλα τα στοιχεία σου σ’ ένα πίνακα.
Ειδικά στην περίπτωσή σου, που κάθε ιδιοκτήτης μπορεί να έχει πολλά σκάφη και κάθε σκάφος πολλούς ιδιοκτήτες ,η διαίρεση του πίνακα σε περισσότερους είναι επιβεβλημένη.
Για την υλοποίηση μιας σχέσης πολλά προς πολλά απαιτείται η δημιουργία ενός ενδιάμεσου πίνακα με τη βοήθεια του οποίου η σχέση πολλά προς πολλά μετατρέπεται σε δύο σχέσεις 1 προς πολλά.
Η βάση δεδομένων που επισυνάπτω δείχνει αδρά πως μπορούμε να διαχειριστούμε μια σχέση πολλά προς πολλά. Περιέχει:
1) Τον πίνακα «tblIdioktites» με πρωτεύον κλειδί το πεδίο «IdioktitisID», που περιέχει τα στοιχεία των ιδιοκτητών σκαφών.
2) Τον πίνακα «tblSkafi» με πρωτεύον κλειδί το πεδίο «SkafosID», που περιέχει τα στοιχεία των σκαφών.
3) Τον ενδιάμεσο πίνακα «tblIdioktitesSkafι» με σύνθετο πρωτεύον κλειδί αποτελούμενο από τα ξένα κλειδιά «IdioktitisID» και «SkafosID».
Αν ανοίξεις τις σχέσεις των πινάκων θα δεις πως οι 3 πίνακες συνδέονται και πως η σχέση πολλά προς πολλά υλοποιήθηκε με δύο σχέσεις 1 προς πολλά.
4) το ερώτημα «qryIdioktitesSkafι» εμφανίζει ενωμένα όλα τα δεδομένα σα να είχαμε ένα πίνακα.
5) Τη φόρμα «frmIdioktitesSkafiALL» περιέχει ένα χειριστήριο καρτέλας (Tab).
Η πρώτη καρτέλα «Ιδιοκτήτες» παρουσιάζει για κάθε ιδιοκτήτη τα σκάφη του. Σ’ αυτήν μπορούν να προστεθούν ιδιοκτήτες και να επιλεχθούν τα σκάφη που έχουν.
Η δεύτερη καρτέλα «Σκάφη» παρουσιάζει για κάθε σκάφος τους ιδιοκτήτες του. Σ’ αυτήν μπορούν να προστεθούν σκάφη και να επιλεχθούν οι ιδιοκτήτες τους.
6) Οι υπόλοιπες φόρμες είναι βοηθητικές.
Με λίγη προσπάθεια θα μπορούσες να εφαρμόσεις το παραπάνω σχήμα στη βάση σου.
Πιστεύω ότι με την ανάγνωση του άρθρου: Βασικές αρχές σχεδίασης βάσης δεδομένων - Access - Microsoft Office θα κατανοούσες καλύτερα πως γίνεται η κατανομή των δεδομένων σε πίνακες και τις σχέσεις τους.

Φιλικά/Γιώργος
ΥΓ. Φίλε Νίκο φαίνεται ότι δουλεύαμε ταυτόχρονα

soc07 25-02-11 18:41

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

Σας ευχαριστω και τους δυο, παρα πολυ για την βοήθεια.

pant 26-02-11 06:41

Καλημέρα

TASOS Πολυ καλο το προγραμματακι accsearchform
Το εβαλα σε μια εφαρμογη να κανει αναζητηση σε 7000 περιπου εγγραφες αλλα ο κερσορας δεν μετακινιοταν στον επομενο χαρακτηρα παρεμενε στην ιδια θεση.
Οταν διεγραψα 2000 περιπου εγγραφες δουλεψε κανονικα.
Καμμια λύση???????

Ευχαριστω Φιλικα Γρηγορης

Tasos 26-02-11 13:10

Καλημέρα Γρηγόρη!
Η λογική που έχω εφαρμόσει στο παράδειγμα μου είναι να μην μπορεί ο χρήστης να συνεχίσει
να πληκτρολογεί στο πεδίο της αναζήτησης (δεν θα έχει νόημα) όταν με το ηδη πληκτρολογημένο περιεχόμενο δεν
βρεθούν εγγραφές δηλ. όταν το αποτέλεσμα είναι 0 εγγραφές.

Για παράδειγμα:

Έστω ότι πληκτρολογείς τη λέξη "παπα".

Η αναζήτηση ελέγχει πρώτα με τη συνάρτηση DCount() αν στο ερώτημα (to Recordset της φόρμας() υπάρχουν εγγραφές που περιέχουν τη λέξη "παπα"
και αν η τιμή της DCount() είναι μεγαλύτερη από 0 τότε συνεχίζει στην εφαρμογή φίλτρου.

Διαφορετικά, αν η τιμή της DCount() είναι 0 τότε σου περνάει την αμέσως παλαιότερη τιμή του πεδίου
και δεν συνεχίζει στην εφαρμογή φίλτρου αφού δεν θα επιστρέψει κάποιες εγγραφές.

Αυτός ο έλεγχος γίνεται κάθε φορά που πληκτρολογείς ένα χαρακτήρα στην αναζήτηση.

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

Θα σου πρότεινα επίσης να ελέγξεις αν έχεις κάνει τις κατάλληλες προσαρμογές στον κώδικα και στο ερώτημα.

Δεν έχει να κάνει με το πλήθος των εγγραφών.

Εμπειρικά να αναφέρω ότι ακόμα και σε 50.000 εγγραφές, η ταχύτητα αναζήτησης τρομερά γρήγορη.

Φιλικά

Τάσος

pant 26-02-11 16:57

1 Συνημμένο(α)
Αγαπητε ΤΑΣΟ

Ευχαριστω για την αναλυτικη απαντηση . Καταλαβα πως λειτουργει .
Δες σε παρακαλω το αρχειακι και πες μου που βρισκετε το λαθος.Αν το βρεις διορθωσε το και στειλτο μου,
Ευχαριστω Γρηγορης


Η ώρα είναι 15:36.

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


Search Engine Optimization by vBSEO 3.3.2