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/1027-aytomati-emfanisi-stoixeion.html)

triton21 19-03-11 21:42

Αυτόματη εμφάνιση στοιχείων
 
1 Συνημμένο(α)
Καλησπέρα σας,
θέλω να ρωτήσω σχετικά με μια Βάση "lexiko" που επισυνάπτω .
Πρόκειται για ένα ελληνογερμανικό λεξικό.

Ανοίγοντας τη φόρμα ΚΑΤΑΧΩΣΗΣΗ βλέπουμε 2 πεδία
Ελληνικά Γερμανικά.

Θα ήθελα να πληκτρολογώ ένα γράμμα στα Γερμανικά και να εμφανίζεται όλη η λέξη αυτόματα .
Μπορεί να γίνει αυτό;

Tasos 19-03-11 23:39

1 Συνημμένο(α)
Καλησπέρα Βασίλη και καλωσόρισες στο φόρουμ!

Πολύ καλή η προσπάθεια σου! Weiter so!!

Πριν συνεχίσεις όμως οτιδήποτε θα πρέπει να γνωρίζεις:
  • Η εφαρμογή δεν θα τρέξει σε υπολογιστή που έχει διαφορετική τοπική ρύθμιση από την ελληνική.
    Με άλλα λόγια δεν θα μπορέσει να τρέξει σ ένα γερμανικό υπολογιστή.
  • Θα πρέπει να μετατρέψεις τη βάση σε μορφή Access 2000. Έχει καλύτερη απόδοση
    ειδικά σε πεδία με Unicode χαρακτήρες.
  • Κατά την την ταπεινή μου γνώμη:
    Το να εμφανίζεις μία και μοναδική λέξη αυτόματα καθώς πληκτρολογείς δεν βοηθά και πολύ.
    Μήπως είναι καλύτερο να εμφανίζονται όλες οι λέξεις σε λίστα που τα πρώτα τους
    γράμματα είναι ίδια με όσα έχεις πληκτρολογήσει και να επιλέξεις την επιθυμητή;
  • Ποιος χρησιμοποιεί την εφαρμογή; Ελληνόφωνος ή γερμανόφωνος;
    Αν είναι Ελληνόφωνος ίσως θα πρέπει να χρησιμοποιηθεί αλγόριθμος για φωνητική αναζήτηση (Phonetische Suche).

    Αν είναι γερμανόφωνος θα πρέπει να ορθογραφήσεις κάποια ουσιαστικά (Anfangsbuchstabe)
    αλλά και να διευκρινήσεις σε κάποια άλλα αν πρόκειται για "Trinken (das) ή trinken (Verb)".
    Διαφορετικά η αναζήτηση ναι μεν θα επιστρέψει αποτελέσματα αλλά η πληροφορία που θα πάρει ο χρήστης μπορεί να είναι λανθασμένη.
Τώρα από τεχνικής πλευράς....
Σου επισυνάπτω ένα παράδειγμα αναζήτησης εγγραφών σε μορφή Access 2000
χωρίς ούτε μια ετικέτα με ελληνικό όνομα
(τρέχει σε οποιονδήποτε υπολογιστή),
που ελπίζω να σε βοηθήσει.

Με εκτίμηση

Τάσος

triton21 20-03-11 00:02

Αυτόματη εμφάνιση στοιχείων
 
Τάσο , σ΄ ευχαριστώ πολύ για την απάντησή σου.

*Η εφαρμογή θα τρέξει σε ελληνικό υπολογιστή οπότε κανένα πρόβλημα

*Ναι, έχεις δίκιο να εμφανίζονται όλες οι λέξεις που τα γράμματά τους είναι ίδια με εκείνα που έχω πληκτρολογήσει.
Κάτι σαν εκείνες τις εφαρμογές "καταχώρησης αποδείξεων" στις οποίες πληκτρολογούμε τα πρώτα ψηφία του ΑΦΜ και εμανίζονται τα υπόλοιπα στοιχεία.

triton21 20-03-11 09:31

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

Tasos 20-03-11 10:57

Καλημέρα σε όλους!
Παράθεση:

...Θα ήθελα να πληκτρολογώ ένα γράμμα στα Γερμανικά και να εμφανίζεται όλη η λέξη αυτόματα...
Αγαπητέ μου, δυστυχώς το ζητούμενο σου δεν αποτελεί κάποια έστω και κρυφή δυνατότητα της Access
και έτσι η ευεργετική χρήση της VBA αποτελεί μονόδρομο για την περίπτωση σου.

Από την άλλη, είναι στο χέρι σου να εμβαθύνεις τις γνώσεις σου (αν το επιθυμείς) για να μπορείς να αντιμετωπίζεις τέτοιες καταστάσεις με μεγαλύτερη ευκολία.

Το φόρουμ θα σε βοηθήσει πάνω σ αυτό αν φυσικά το θελήσεις κι εσύ.

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


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

Με εκτίμηση

Τάσος

ΤΖΙΜΗΣ 21-03-11 11:23

Φίλε Τάσο μπορείς να μας πεις δυο λόγια για τον κώδικα που έγραψες κατά την αλλαγή στο πλαίσιο κειμένου και κατά την φόρτωση στο φόρμα.
Ευχαριστώ

Tasos 21-03-11 12:35

Καλημέρα Τζίμη!
Βεβαίως!

Κώδικας:

Option Compare Database
Option Explicit

Const strSQL1 As String = "SELECT DEGR.ID, DEGR.DE, DEGR.GR FROM DEGR WHERE DEGR.DE Like '"
Const strSQL2 As String = "' & ""*"""
Const strSQL3 As String = " ORDER BY DEGR.[DE], DEGR.[GR]"


Private MyList As Access.ListBox

''Ο χρόνος απόκρισης της μεταβλητής  "MyList" είναι κατά πολύ μικρότερος από το χρόνο
'απόκρισης αντικειμένων της φόρμας (πχ. Me.ListDict).

'Αν βάλω τη μεταβλητή μέσα στο  txtSearch_Change()
'θα πρέπει σε κάθε εκτέλεση του συμβάντος να αναζητείται το  Me.ListDict και να φορτωθεί
'στη μνήμη.

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

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


'Το ίδιο γίνεται και με τις σταθερές  strSQL1, strSQL2, strSQL3
'Αν τις βάλω στο txtSearch_Change() θα πρέπει κάθε φορά που εκτελείται να φορτώνονται εκ
'νέου στη μνήμη.


Private Sub Form_Load()
    Set MyList = Me.ListDict
End Sub


Private Sub txtSearch_Change()
    MyList.RowSource = strSQL1 & Me.txtSearch.Text & strSQL2 & strSQL3
   
    'Για να δείς τα αποτελέσματα πρόσθεσε αφαίρεσε την απόστροφο από αυτή την παρακάτω γραμμή
    'Debug.Print strSQL1 & Me.txtSearch.Text & strSQL2 & strSQL3
    'Για να εμφανίσεις το παραπάνω αποτέλεσμα πάτησε τα πλήκτρα CTRL+G
   

End Sub

'RowSource = Προέλευση γραμμής του πλαισίου λίστας.

'Me.txtSearch.Text = Το κείμενο που περιέχεται  στο πεδίο όταν πληκτρολογείται.

'Η ιδιότητα "Text" ενός πεδίου κειμένου είναι διαθέσιμη μόνο όταν το πεδίο έχει την εστίαση
'(Όταν ο κέρσορας είναι μέσα στο πεδίο).

Έτσι λοιπόν έχουμε:

 'MyList.RowSource = strSQL1 & Me.txtSearch.Text & strSQL2 & strSQL3
 'όπου Me.txtSearch.Text ) = το κείμενο προς αναζήτηση πχ. "Bevor"

'που σημαίνει ορίζουμε την Προέλευση γραμμής του πλαισίου λίστας εκ νέου

'με τη συμβολοσειρά  strSQL1 & Me.txtSearch.Text & strSQL2 & strSQL3

'που αν την μετατρέψουμε σε απλό κείμενο θα μας δώσει:

'SELECT DEGR.ID, DEGR.DE, DEGR.GR FROM DEGR WHERE DEGR.DE Like 'Bevor' & "*"
'ORDER BY DEGR.[DE], DEGR.[GR]



'Με τη νέα Προέλευση γραμμής που ορίσαμε το πλαίσιο λίστας θα μας εμφανίσει αυτές τις
'εγγραφές που
αρχίζουν με τη συμβολοσειρά Bevor.

Φιλικά

Τάσος

ΤΖΙΜΗΣ 21-03-11 13:14

Τάσο ήταν πολύ κατατοπιστικό, και αρκετά δύσκολο για μας που κάνουμε τα πρώτα βήματα σε VBA.
Να είσαι πάντα καλά.


Η ώρα είναι 14:13.

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


Search Engine Optimization by vBSEO 3.3.2