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/546-afairesi-teleytaioy-xaraktira.html)

Jim 14-04-10 12:05

Αφαίρεση τελευταίου χαρακτήρα
 
Καλησπέρα σε όλους
Θα ήθελα την βοήθειά σας. Έχω δύο φόρμες στην μία περνώ τα στοιχεία των υπαλλήλων όπου ένα από αυτά είναι το πεδίο [fldFullName] Το οποίο περιέχει επώνυμα που καταλήγουν σε ( ς ) π.χ. Καραμανωλάκης , Ζαγωράκης πώς γίνεται Στην δεύτερη φόρμα πού ζητώ κάποιο από αυτά τα ονόματα να καταχωρείται στο αντίστοιχο πεδίο της δεύτερης φόρμας αλλά χωρίς το τελευταίο γράμμα το ς
Φιλικά Δημήτρης

mdragon 14-04-10 12:42

Καλησπέρα,

μπορείς να δοκιμάσεις αυτό:
Left([ΟνομαΠεδίου];InStr([ΟνομαΠεδίου];"ς")-1)


Μάρω

editolis 14-04-10 15:07

Δοκιμασε στο OnCurrent της 2ης Φορμας
να βαλεις αυτον τον κωδικα...

Οπου LResult το πεδιο σου

'========================================

LResult = Replace ([fldFullName], "ς", "")

'=======================================

Jim 15-04-10 09:47

Καλημέρα σε όλους
 
Σε ευχαριστώ για την απάντηση πέζει μόνο όταν στο πεδίο υπάρχει το ΄ς ΄ όταν δενΥπάρχει Βγαίνει Invalid procedure or argument. Υπάρχει λύση?? Όσο για την απάντηση του Τόλι ΝΑΙ έπαιξε και στις δύο περιπτώσεις χωρίς το Dim LResult As String τι δηλώνουμε με την προηγούμενη πρόταση Τόλι??? Εγώ πάντως οφείλω ένα μεγάλο ευχαριστώ και στους δύο… Όντος αν δεν ρωτούσα δεν θα μαθαίναμε…..Φιλικότατα Δημήτρης :drinks:

editolis 15-04-10 10:04

Χαιρομαι που ελυσες το προβλημα σου.

Το "Dim LResult As String" το εβαλα για να σου δειξω
πως θα το οριζες εαν εφτιαχνες δικο σου κωδικα.

stavros2244 01-05-10 18:17

Ωραίο θέμα αυτό.Μου χρειάστηκε και εμένα στη βάση μου. Τα ονόματα που καταχωρώ όμως είναι σε κεφαλαία.

Πώς θα μπορούσε να παραμετροποιηθεί ο κώδικας έτσι ώστε να βλέπει εάν δεν υπάρχει άλλο γράμμα μετά και το τελευταίο είναι Σ να το αντικαθιστά με το κενό?

Ευχαριστώ

Jim 01-05-10 19:16

Η απάντηση είναι
 
Στο μετά από ενημέρωση του πεδίου
a1 = Replace([a1], "Σ", " ")

Όπου [a1] είναι το πεδίο που καταχωρείς το Όνομα
Φιλικά Δημήτρης

stavros2244 01-05-10 20:44

Εάν το βάλω στην ιδιότητα της φόρμας onCurrent δουλεύει μια χαρά. Το πρόβλημα είναι ότι κόβονται και τα υπόλοιπα Σ που μπορεί να υπάρχουν στο όνομα. Πώς θα μπορούσα να το αποφύγω αυτό?

mdragon 01-05-10 23:13

Δοκιμάστε τον τύπο που έχω δώσει παραπάνω.
Δουλέυει και στα κεφαλαία και στα μικρά



Φιλικά,
Μάρω

Tasos 03-05-10 17:26

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

Για την αφαίρεση του τελικού Σίγμα, σε κάθε περίπτωση θα δουλέψει ο παρακάτω κώδικας:

Κώδικας:

Private Sub Text1_AfterUpdate()
Dim txt$
    If Len(Nz(Me.Text1, vbNullString)) Then
        txt = Me.Text1
        If AscW(Right$(txt, 1)) = 962 Then Me.Text1 = Left$(txt, Len(txt) - 1)
    End If
End Sub

Φιλικά

Τάσος

stavros2244 03-05-10 20:28

Δεν ξέρω γιατί αλλά δεν δουλεύει. Μήπως πρέπει να συμπεριλάβω κάποια συνάρτηση?Η να ενεργοποιήσω κάτι?

Ευχαριστώ.

Tasos 04-05-10 08:52

1 Συνημμένο(α)
Καλημέρα Σταύρο!

Δεν ξέρω τι κάνεις γιατί δε βλέπω τη βάση σου.

Δες αν θέλεις ένα παράδειγμα στο συνημμένο παρακάτω.

Παράλληλα, αν έχεις χρόνο μελέτησε το συνημμένο: http://www.ms-office.gr/forum/access....html#post2608

Φιλικά

Τάσος

stavros2244 04-05-10 10:47

Μάλλον κατάλαβα τι φταίει. Η φόρμα μου είναι συνεχής. Το δοκίμασα με κανονικό text box και δουλεύει μια χαρά.

Με συνεχή φόρμα όμως δεν δουλεύει γιατί τραβάει τα ονόματα από έναν πίνακα. Μήπως θα μπορούσε να γίνει κάτι για να φεύγει για παράδειγμα ο τελευταίος χαρακτήρας από τον πίνακα κατευθείαν?

Tasos 04-05-10 11:11

Σταύρο, η φόρμα του παραδείγματος μου είναι συνεχής και το πεδίο txt1 είναι συνδεδεμένο με το αντίστοιχο πεδίο στον πίνακα οπότε:

Ότι συμβαίνει στο πεδίο της φόρμας, συμβαίνει και στο πεδίο του πίνακα.

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

Φιλικά

Τάσος

stavros2244 05-05-10 10:42

ΟΚ! Βρήκα τι έφταιγε..Δούλευε αλλά μόνο για τον πεζό χαρακτήρα
Ο δεκαδικός του Σ είναι το 931 ενώ του ς είναι το 962 που είναι και στο sample code.
Τώρα δουλεύει μια χαρά!

Ευχαριστώ πολύ για την βοήθεια

stavros2244 10-05-10 10:59

Έχω μία τελευταία ερώτηση..
Η φόρμα μου είναι συνεχής και διαβάζει τα ονόματα από έναν πίνακα με την φόρτωση αυτής. Πώς μπορώ με την φόρτωση να περνάει όλες τις εγγραφές της συνεχούς φόρμας και να αφαιρεί τον χαρακτήρα? Το afterupdate δεν λειτουργεί αλλά το onClick λειτουργεί. Που θα μπορούσα να βάλω το
Dim txt$
If Len(Nz(Me.Lastname, vbNullString)) Then
txt = Me.Lastname
If AscW(Right$(txt, 1)) = 931 Then Me.Lastname = Left$(txt, Len(txt) - 1)
End If

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

Ευχαριστώ

Tasos 10-05-10 13:50

Καλησπέρα!
Σταύρο, εξηγησε μου, είναι συνδεμένα τα πεδία σου με πεδία του πίνακα;

Τάσος

stavros2244 10-05-10 14:38

Το πεδίο Lastname της συνεχούς φόρμας είναι ουσιαστικά το πεδίο ενός πίνακα tblEmpl έτσι ώστε η συνεχής φόρμα εμφανίζει όλες τις καταχωρήσεις του πίνακα (μόνο το πεδίο Επώνυμο)

Tasos 10-05-10 16:31

Καλησπέρα!
Με την παρακάτω συνάρτηση μπορείς να αφαιρέσεις τα τελικά Σίγμα από το πεδίο
"Lastname" του πίνακα "tblEmpl":

Κώδικας:

Function RemoveAscW_962()
    Dim strSQL$
    strSQL = "Update [tblEmpl]  SET [Lastname ] = IIf(AscW(Right$([Lastname ], 1)) = 962," & _
            "Left$([Lastname ], Len([Lastname ]) - 1),[Lastname ])  WHERE [Lastname ] <> Null"
    CurrentDb.Execute strSQL
End Function

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

Φιλικά

Τάσος

stavros2244 12-05-10 10:32

Ευχαριστώ πολύ!Έβαλα την συνάρτηση στο onLoad της φόρμας μου και δουλεύει μια χαρά!

Ευχαριστώ πολύ!

vasilis_x_l 12-05-10 12:55

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

vasilis_x_l 12-05-10 12:59

Εαν το χρειάζεσαι σε εκτυπωτικά καλό θα ειναι να περάσεις την συνάρτηση στον καθολικό κώδικα και να την καλεις στο πεδίιο που θέλεις


Η ώρα είναι 20:21.

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


Search Engine Optimization by vBSEO 3.3.2