Προς το περιεχόμενο

Απορία σε sql ερωτημα για access


jamespr

Προτεινόμενες αναρτήσεις

Δημοσ.

κ. nspyrou ήταν αυτό που προσπαθούσα να κάνω τόσο καιρό και προσπαθούσα με τρόπο πολύ δυσκολότερο. Το κάνατε να φαίνεται τόσο απλό. Για ακόμα μία φορά σας ευχαριστώ πάρα πάρα πολύ για το χρόνο σας.

Υ.Γ.1: εμφάνιζε μία εγγραφή γιατί ήταν σε μονή φόρμα όταν το βάζω σε συνεχείς φόρμες όλα είναι μια χαρά.

 

Υ.Γ.2: Αυτές τις μέρες είπα να φτιάξω βάση όπου οι πίνακες να είναι με σωστή κανονικοποίηση και όχι όλα τα δεδομένα σε έναν πίνακα. Εκεί που κολλάω είναι ότι όταν αποθηκεύω στον κεντρικό data π.χ. τόπους κατοικίας από πίνακα που έχει όλους τους πιθανούς τόπους κατοικίας τους αποθηκεύω πλέον στον κεντρικό με τον κωδικό τους και όχι με το όνομα. Το πρόβλημά μου είναι ότι μετά πως εμφανίζω τα δεδομένα με αυτό που συμβολίζει ο κωδικός γιατί δεν μπορεί να βγάζω εγγραφή και να λέει τόπος κατοικίας 4.... Που θα πάει θα τα καταφέρω πειράματα να δείτε που κάνω... όποτε βρίσκω χρόνο, συνήθως κόβω από τον ύπνο.

Και πάλι χίλια ευχαριστώ για τη βοήθειά σας. Να περνάτε πάντα καλά

Δημοσ.
κ. nspyrou ήταν αυτό που προσπαθούσα να κάνω τόσο καιρό και προσπαθούσα με τρόπο πολύ δυσκολότερο. Το κάνατε να φαίνεται τόσο απλό. Για ακόμα μία φορά σας ευχαριστώ πάρα πάρα πολύ για το χρόνο σας.

Υ.Γ.1: εμφάνιζε μία εγγραφή γιατί ήταν σε μονή φόρμα όταν το βάζω σε συνεχείς φόρμες όλα είναι μια χαρά.

 

Υ.Γ.2: Αυτές τις μέρες είπα να φτιάξω βάση όπου οι πίνακες να είναι με σωστή κανονικοποίηση και όχι όλα τα δεδομένα σε έναν πίνακα. Εκεί που κολλάω είναι ότι όταν αποθηκεύω στον κεντρικό data π.χ. τόπους κατοικίας από πίνακα που έχει όλους τους πιθανούς τόπους κατοικίας τους αποθηκεύω πλέον στον κεντρικό με τον κωδικό τους και όχι με το όνομα. Το πρόβλημά μου είναι ότι μετά πως εμφανίζω τα δεδομένα με αυτό που συμβολίζει ο κωδικός γιατί δεν μπορεί να βγάζω εγγραφή και να λέει τόπος κατοικίας 4.... Που θα πάει θα τα καταφέρω πειράματα να δείτε που κάνω... όποτε βρίσκω χρόνο, συνήθως κόβω από τον ύπνο.

Και πάλι χίλια ευχαριστώ για τη βοήθειά σας. Να περνάτε πάντα καλά

 

 

Σου είπα και σε προηγούμενο post, οτι είμαστε εδώ για να βρίσκουμε λύσεις όλοι μαζί στα πράγματα που μας προβληματίζουν, όπου μπορεί ο κάθένα να βοηθήσει ..

 

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

 

Το τελευταίο πρόβλημα που μου περιγράφεις είναι καθαρά ένα απλό lookup field. Αυτό σημαίνει οτι θες να παρουσιάζεις μια τιμή, ενός πεδίου, κάποιας εγγραφής, ενός διαφορετικού πίνακα που συνδέεται με τον παρόντα πίνακά σου μέσω ενός foreign key.

 

Για να το κάνεις εύκολα λοιπόν ...

1. Άνοιξε τον πίνακα ΔΕΔΟΜΕΝΑ σε κατάσταση σχεδίασης.

2. Επέλεξε Insert/LookUp Field ...

3. Ακολούθα τα βήματα του Wizard ...

4. Κάνε save και βάλε το νέο πεδίο στη φόρμα σου.

 

Παράδειγμα για το πως μοιάζει, σου στέλνω attached. Πίνακας ΔΕΔΟΜΕΝΑ πεδίο Nationality. Παρουσιαστικά δες τη φόρμα DataFreeForm, τελευταίο πεδίο.

 

:-)

jamespr.zip

Δημοσ.

κ. nspyrou νιώθω ότι πραγματικά δεν θα μπορέσω ποτέ να σας ανταποδώσω όλα αυτά που κάνετε για μένα. Προτίστως ο χρόνος που διαθέτετε και οι γνώσεις σας. Η βάση που σας στέλνω τη βρήκα στο ίντερνετ και μαζί με κάποια βιβλία που δανείστηκα από τη βιβλιοθήκη νομίζω ότι αυτό εννοούν λέγοντας κανονικοποίηση στους πίνακες. Αν μπείτε στον πίνακα Π_ΥΠΗΚΟΟΤΗΤΑ και πατήσετε το σταυρό θα σας δείξει τις εγγραφές π.χ. που είναι Έλληνες, έτσι στον πίνακα δεδομένων αποθηκεύετε ο κωδικός της υπηκοότητας άρα μικρότερος πίνακας σε όγκο και ταχύτερος στην αναζήτηση. Το πρόβλημά μου είναι ότι όταν πάω να εμφανίσω τα δεδομένα μου βγάζει τον αριθμό και όχι την υπηκοότητα. Με τον τρόπο που μου δείξατε και χρησιμοποιούσα και εγώ μέχρι τώρα, γεμίζω τον πίνακα με τα ίδια δεδομένα π.χ. Έλληνας ενώ το βιβλίο λέει καλύτερα να έχει αριθμό. Μάλιστα μου δείχνει και τη σχέση μεταξύ των πινάκων.

Αυτό παλεύω......

Δημοσ.
κ. nspyrou νιώθω ότι πραγματικά δεν θα μπορέσω ποτέ να σας ανταποδώσω όλα αυτά που κάνετε για μένα. Προτίστως ο χρόνος που διαθέτετε και οι γνώσεις σας. Η βάση που σας στέλνω τη βρήκα στο ίντερνετ και μαζί με κάποια βιβλία που δανείστηκα από τη βιβλιοθήκη νομίζω ότι αυτό εννοούν λέγοντας κανονικοποίηση στους πίνακες. Αν μπείτε στον πίνακα Π_ΥΠΗΚΟΟΤΗΤΑ και πατήσετε το σταυρό θα σας δείξει τις εγγραφές π.χ. που είναι Έλληνες, έτσι στον πίνακα δεδομένων αποθηκεύετε ο κωδικός της υπηκοότητας άρα μικρότερος πίνακας σε όγκο και ταχύτερος στην αναζήτηση. Το πρόβλημά μου είναι ότι όταν πάω να εμφανίσω τα δεδομένα μου βγάζει τον αριθμό και όχι την υπηκοότητα. Με τον τρόπο που μου δείξατε και χρησιμοποιούσα και εγώ μέχρι τώρα, γεμίζω τον πίνακα με τα ίδια δεδομένα π.χ. Έλληνας ενώ το βιβλίο λέει καλύτερα να έχει αριθμό. Μάλιστα μου δείχνει και τη σχέση μεταξύ των πινάκων.

Αυτό παλεύω......

 

Η σχέση των πινάκων ως master/detail είναι ακριβώς όπως τις έχεις ορίσει. Στην βάση που μου έστειλες και έχω φτιάξει μια φόρμα Employees, θα δείς οτι σου εμφανίζω και τον κωδικό εθνικότητας και την περιγραφή της αλλά μόνο ο κωδικός εθνικότητας αποθηκεύεται στον πίνακα των Υπαλλήλων. Μελέτησε τη φόρμα και ρίξε μια νέα εγγραφή στις ήδη υπάρχουσες ορίζοντας τον κωδικό της εθνικότητας που θες στο αντίστοιχο πεδίο. Το περιγραφικό πεδίο εθνικότητας (τελευταίο) γεμίζει αυτόματα.

 

Το ζήτημα της "κανονικοποίησης" με την ευρύτερη έννοια του όρου χρησιμοποιείται στο data mining. Συμπεριλαμβάνει τις ενέργειες εκείνες που "τυποποιούν" τα δεδομένα σου σε μια ενιαία μορφολογική σειρά. Δηλαδή οι κωδικοί σου είναι μορφοποιημένοι σε ενιαία μορφή, οι περιγραφές σου, τα ονόματα των πεδίων σου, οι τύποι δεδομένων σου κλπ κλπ ... Με λίγα λόγια είναι οι ενέργειες εκείνες που βελτιστοποιούν την απόδοση, τόσο σε επίπεδο δεδομένων όσο και σε επίπεδο facilitation ώστε να μειωθεί στο ελάχιστο η χρήση των resources άρα στο τέλος (μοιραία) αυξάνεται και η απόδοση ...

 

Μελέτησε τη φόρμα και θα βρείς την απάντηση ... ;)

jamespr.zip

Δημοσ.

άρα η συνδεση των πινάκων είναι αυτή που βοηθάει στην αυτόματη συμπλήρωση του τελευταίου πεδίου;

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

Εγώ ψάχνω με αυτά αργά που βρίσκω λίγο χρόνο και αφαιρώ από τον ύπνο.

Για ακόμα μία φορά σας ευχαριστώ για όλα.

Να είστε πάντα καλά

Δημοσ.

άρα η συνδεση των πινάκων είναι αυτή που βοηθάει στην αυτόματη συμπλήρωση του τελευταίου πεδίου;

 

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

 

Εγώ ψάχνω με αυτά αργά που βρίσκω λίγο χρόνο και αφαιρώ από τον ύπνο.

 

Για ακόμα μία φορά σας ευχαριστώ για όλα.

 

Να είστε πάντα καλά

 

Το να συνδέεις του πίνακες σου δίνει πολλά πλεονεκτήματα αλλά και μειωνεκτήματα. Ας τα πάρουμε όμως από την αρχή. Η σύνδεση των πινάκων και η αναφορά πεδίων σε άλλους πίνακες (foreign keys, κλπ κλπ), εμπίπτει στο μοντέλο των "Σχεσιακών Βάσεων Δεδομένων". Το να μην έχεις συνδέσεις μεταξύ των πινάκων, λέγεται "Ελεύθερο Μοντέλο". Όπως θα έχει καταλάβει ήδη, τα lookups γίνονται ευκολότερα όταν παίζεις με το σχεσιακό μοντέλο. Αλλά σκέψου οτι ανάλογα με τις συνδέσεις που έχεις μεταξύ των πινάκων, (1 to many, many to 1, many to many, 1 to 1), διαφοροποιείς και τον τρόπο καταχώρησης όπως και τα validations που γίνονται κατά την καταχώρηση. Πχ, να μην γίνονται καταχωρήσεις εγγραφών για τιμές που δεν υπάρχουν σε κάποιους πίνακες. Για παράδειγμα την καταχώρηση ενός παραστατικού με τύπο παραστατικού που δεν υπάρχει στον πίνακα των τύπων παραστατικών. Αυτό θα ήταν καταστροφικό αν κρατούσες λογιστικές εγγραφές σε κάποιο πίνακα κινήσεων!

 

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

 

Τώρα στο ερώτημά σου για το πως μπορείς να υλοποιήσεις αυτό το ιδιαίτερο lookup: Ένας τρόπος θα ήταν να γεμίζεις ένα unbound combobox με τις τιμές του πίνακα των εθνικοτήτων, και ως ItemIndex να ορίσεις τον κωδικό του πίνακα που έχεις στις εθνικότητες. Έτσι επιλέγοντας από το combo την εθνικότητα και στο αντίστοιχο event (αν θυμάμαι καλά είναι το OnItemSelected??!) να ορίζεις στο πεδίο του πίνακα των ατόμων το ItemIndex σαν κωδικό εθνικότητας. Βέβαια θα πρέπει να ελέγχεις πρώτα αν η εγγραφή είναι σε κατάσταση Insert ή Edit, ειδάλλως θα πρέπει να τη βάζεις σε μια τέτοια κατάσταση πχ Recordset.Edit() και μετά [ΥΠΗΚΟΟΤΗΤΑ] = NationalityCombo.ItemIndex. Οπότε κάνεις και ένα Recordset.Update και είσαι έτοιμος.

 

Αν κατάλαβα καλά το ερώτημά σου,, αυτά σου αρκούν για να προχωρήσεις ... ;)

Δημοσ.

Με γεια μας το νέο Look του insomnia. Με όλα αυτά που μου γράψατε νομίζω με καλύψατε και μου βάλατε υλικό για διάβασμα.

 

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

 

Θα τα πούμε πάλι. Να είστε καλά και να περνάτε ακόμα καλύτερα.

Δημοσ.

Με γεια μας το νέο Look του insomnia. Με όλα αυτά που μου γράψατε νομίζω με καλύψατε και μου βάλατε υλικό για διάβασμα.

 

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

 

Θα τα πούμε πάλι. Να είστε καλά και να περνάτε ακόμα καλύτερα.

 

Καμία ταλαιπωρία,, αρκεί να μπορέσεις να λύσεις το πρόβλημά σου ...

 

να'σαι καλά κι εσύ! ;)

Αρχειοθετημένο

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

  • Δημιουργία νέου...