| Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
![]() |
| | Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
| |
|
#1
| |||
| |||
|
Καλησπέρα στη παρέα! Προσπαθώ να κάνω ένα ερώτημα και θέλω να συνδέσω τα παρακάτω. Δεν ξέρω που κάνω λάθος.Από την φόρμα καλώ τις δύο συναρτήσεις που η φόρμα συνδέεται με το ερώτημα. NewText: (SmallToCapital([textbox2])) & (ReplaceEndSigma([textbox2])) Πως μπορώ να συνδέσω το SmallToCapital([textbox2]) με το ReplaceEndSigma([textbox2]) στο ερώτημα; Μέσα απο το Module μπορώ να τις βάλω μαζί και να δουλεύει υπάρχει ένας τρόπος αλλά μέσα στο ερώτημα πιθανόν κάποια αγκύλη κάνω λάθος δεν ξέρω. Τελευταία επεξεργασία από το χρήστη alex : 20-11-19 στις 14:48. |
|
#2
| |||
| |||
|
Καλησπέρα Θα πρέπει να αποσαφηνίσουμε το ζητούμενο: 1) Αν τελικός μας στόχος είναι η μετατροπή του κειμένου σε κεφαλαία, δεν απαιτείται να δημιουργήσουμε κάποια συνάρτηση χρήστη. Μπορούμε να χρησιμοποιήσουμε τον τύπο: Replace(UCase([Textbox2]);"ς";"Σ"). 2) Αν όμως θέλουμε, διατηρώντας την πεζή γραφή, να αλλάξουμε το τελικό «σ» σε «ς», χρειάζεται συνάρτηση χρήστη. Μια τέτοια είναι η παρακάτω. Κώδικας: Public Function ReplaceEndSigma(str As Variant) As Variant
Dim s As Variant, sF As Variant, sR As Variant, i As Long
sF = Array("σ ", "σ.", "σ,", "σ:", "σ;") '<--πρέπει να αντικατασταθούν
sR = Array("ς ", "ς.", "ς,", "ς:", "ς;") '<--θα αντικαταστήσουν τα παραπάνω
s = str
If Len(s) > 0 Then
For i = 0 To UBound(sF)
s = Replace(s, sF(i), sR(i))
Next
End If
ReplaceEndSigma = s
End Function
|
|
#3
| |||
| |||
|
Καλησπέρα Γιώργο! Θέλω να βάλω τις συναρτήσεις που έχω στο module σε ένα νέο NewTextBox: στο ερώτημα που να διορθώνει το (σ) σε (ς) όταν είναι μετά από κάποιες συνθήκες πχ ακολουθεί κενό κλπ αλλά ταυτόχρονα να διορθώνει σε κεφαλαίο μετά από τελεία και κενό αν βρίσκει το πρώτο γραμμα μικρό να το διορθώνει και να το κάνει κεφαλαίο. Έχω την συνάρτηση.Κοίταξε το ερώτημα σε προβολή σχεδίασης δεν έχω καλή την σύνταξη να βάλω και τις δύο συναρτήσεις μαζί να διορθώνει ένα κείμενο και όχι ξεχωριστά Γιώργο μέχρι πόσους χαρακτήρες χωράει "Το μεγάλο κείμενο σε ένα πίνακα; Στο παρακάτω κώδικα ενσωμάτωσα τις δύο ρουτίνες σε μία για να μου δώσει το επιθυμητό αποτέλεσμα στο κείμενο αλλά υπάρχει πρόβλημα στη σειρά με το κόκκινο.Αν είχα τα δύο fuctions ξεχωριστά σε ένα module τότε στο ερώτημα τί τύπο θα χρησιμοποιήσω για να έχω τις διορθώσεις στο ίδιο κείμενο; Κώδικας: Public Function ReplaceEndSigmaSmallToCapital(str As Variant) As Variant
Dim s As Variant, sF As Variant, sR As Variant, i As Long, P As Variant
sF = Array("σ ", "σ.", "σ,", "σ:", "σ;") '<--πρέπει να αντικατασταθούν
sR = Array("ς ", "ς.", "ς,", "ς:", "ς;") '<--θα αντικαταστήσουν τα παραπάνω
s = str
If Len(s) > 0 Then
For i = 0 To UBound(sF)
s = Replace(s, sF(i), sR(i))
Next
End If
ReplaceEndSigmaSmallToCapital = s
'Από εδώ ξεκινά η συνάρτηση για την αντικατάσταση του πρώτου γράμματος μετά από τελεία και κενό.
'Dim P As Variant
'Dim i As Long
If Nz(str, "") <> "" Then
P = Split(Trim(str), ".")
For i = 0 To UBound(P)
P(i) = Trim(P(i))
If Len(P(i)) > 1 Then
P(i) = UCase(Left(P(i), 1)) & Mid(P(i), 2)
Else
P(i) = UCase(P(i))
End If
Next
'SmallToCapital = Join(P, ". ")
ReplaceEndSigmaSmallToCapital = Join(P, ". ")
End If
'End If
End Function
Τελευταία επεξεργασία από το χρήστη alex : 20-11-19 στις 21:39. |
|
#4
| |||
| |||
|
Καλημέρα Αφού έχεις έτοιμες δοκιμασμένες συναρτήσεις, δε χρειάζεται να τις ενσωματώσεις σε μία. Για την επίτευξη του ζητούμενου απαιτείται ένθεση. Για παράδειγμα: SmallToCapital(ReplaceEndSigma(txt)). Η εσωτερική συνάρτηση μετατρέπει στο κείμενο txt το τελικό «σ» σε «ς» και η εξωτερική, ενεργώντας στο τροποποιημένο txt, μετατρέπει στο επιθυμητό κεφαλαίο. Δες το συνημμένο. Σύμφωνα με τη Microsoft Το πεδίο «Long Text» παλιό «Memo» αποθηκεύει μέχρι 1 GB, αλλά τα σχετικά χειριστήρια μπορούν να εμφανίσουν μόνο τους 64.000 πρώτους χαρακτήρες. |
|
#5
| |||
| |||
|
Ευχαριστώ πολύ Γιώργο, μια τελευταία διόρθωση αν μπορείς στη διατύπωση του κώδικα στην ενσωμάτωση στο κώδικα(εντελώς πληροφοριακά πως πρέπει να ενσωματωθεί η ρουτίνα;) στη κόκκινη γραμμή κώδικα πώς πρέπει να γραφεί ο κώδικας για να λειτουργεί σωστά; Κώδικας: Public Function ReplaceEndSigmaSmallToCapital(str As Variant) As Variant
Dim s As Variant, sF As Variant, sR As Variant, i As Long, P As Variant
sF = Array("σ ", "σ.", "σ,", "σ:", "σ;") '<--πρέπει να αντικατασταθούν
sR = Array("ς ", "ς.", "ς,", "ς:", "ς;") '<--θα αντικαταστήσουν τα παραπάνω
s = str
If Len(s) > 0 Then
For i = 0 To UBound(sF)
s = Replace(s, sF(i), sR(i))
Next
End If
ReplaceEndSigmaSmallToCapital = s
'Από εδώ ξεκινά η συνάρτηση για την αντικατάσταση του πρώτου γράμματος μετά από τελεία και κενό.
'Dim P As Variant
'Dim i As Long
If Nz(str, "") <> "" Then
P = Split(Trim(str), ".")
For i = 0 To UBound(P)
P(i) = Trim(P(i))
If Len(P(i)) > 1 Then
P(i) = UCase(Left(P(i), 1)) & Mid(P(i), 2)
Else
P(i) = UCase(P(i))
End If
Next
'SmallToCapital = Join(P, ". ")
ReplaceEndSigmaSmallToCapital = Join(P, ". ")
End If
'End If
End Function
|
|
#6
| |||
| |||
|
Αλέξανδρε δοκίμασε τη συνάρτηση: Κώδικας: Public Function ReplaceEndSigmaSmallToCapital(str As Variant) As Variant
Dim s As Variant, sF As Variant, sR As Variant, i As Long, P As Variant
sF = Array("σ ", "σ.", "σ,", "σ:", "σ;") '<--πρέπει να αντικατασταθούν
sR = Array("ς ", "ς.", "ς,", "ς:", "ς;") '<--θα αντικαταστήσουν τα παραπάνω
If Len(str) > 0 Then
s = str & " "
For i = 0 To UBound(sF)
s = Replace(s, sF(i), sR(i))
Next
'Από εδώ ξεκινά η συνάρτηση για την αντικατάσταση του πρώτου γράμματος μετά από τελεία και κενό.
P = Split(Trim(s), ".")
For i = 0 To UBound(P)
P(i) = Trim(P(i))
If Len(P(i)) > 1 Then
P(i) = UCase(Left(P(i), 1)) & Mid(P(i), 2)
Else
P(i) = UCase(P(i))
End If
Next
End If
ReplaceEndSigmaSmallToCapital = Join(P, ". ")
End Function
|
|
#7
| |||
| |||
|
Ο παραπάνω κώδικας θα μπορούσε να συντομευτεί στον: Κώδικας: Public Function ReplaceEndSigmaSmallToCapital(str As Variant) As Variant
Dim s As Variant, sF As Variant, sR As Variant, i As Long, P As Variant
sF = Array("σ ", "σ.", "σ,", "σ:", "σ;") '<--πρέπει να αντικατασταθούν
sR = Array("ς ", "ς.", "ς,", "ς:", "ς;") '<--θα αντικαταστήσουν τα παραπάνω
If Len(str) > 0 Then
s = str & " "
For i = 0 To UBound(sF)
s = Replace(s, sF(i), sR(i))
Next
'Από εδώ ξεκινά η συνάρτηση για την αντικατάσταση του πρώτου γράμματος μετά από τελεία και κενό.
P = Split(Trim(s), ".")
For i = 0 To UBound(P)
P(i) = Trim(P(i))
P(i) = UCase(Left(P(i), 1)) & Mid(P(i), 2)
Next
End If
ReplaceEndSigmaSmallToCapital = Join(P, ". ")
End Function
|
|
#8
| |||
| |||
|
Γιώργο δεν δουλεύει ουτε με την πρώτη ούτε με την δεύτερη ρουτίνα. Εκτός και αν εχω λαθος το ερώτημα Routina: ReplaceEndSigmaSmallToCapital([textbox2])ανεβάζω την βάση.
|
|
#9
| |||
| |||
|
Στη συνάρτηση που ανέβασες έχεις τις γραμμές κώδικα: Κώδικας: sF = Array("s ", "s.", "s,", "s:", "s;") '<--p??pe? ?a a?t??atasta????
sR = Array("? ", "?.", "?,", "?:", "?;") '<--?a a?t??atast?s??? ta pa?ap???
Έχουν καμιά σχέση με τις: Κώδικας: sF = Array("σ ", "σ.", "σ,", "σ:", "σ;") '<--πρέπει να αντικατασταθούν
sR = Array("ς ", "ς.", "ς,", "ς:", "ς;") '<--θα αντικαταστήσουν τα παραπάνω
|
|
#10
| |||
| |||
|
Ωχ συγνώμη Γιώργο δεν το πρόσεξα από ταχύτητα. Σε ευχαριστώ πάντως για όλα και για τις δύο εναλλαγές της ρουτίνας. Πολύτιμη η βοήθειά σου και τα χρειάζομαι για μια εργασία που κάνω σε ένα μεταπτυχιακό. Χίλια ευχαριστώ!!
|
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
| Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
| [Συναρτήσεις] συνχωνευση 2 συναρτησεων | Quenya | Excel - Ερωτήσεις / Απαντήσεις | 2 | 30-08-15 16:43 |
| [ Ερωτήματα ] Ένωση πινάκων σε ερώτημα | lammis | Access - Ερωτήσεις / Απαντήσεις | 10 | 14-03-14 08:18 |
| [Συναρτήσεις] Συνδυασμός συναρτήσεων; | psammotettix | Excel - Ερωτήσεις / Απαντήσεις | 3 | 19-06-13 11:27 |
| [Συναρτήσεις] Προσθήκη συναρτήσεων | nakosg | Excel - Ερωτήσεις / Απαντήσεις | 7 | 15-07-12 12:08 |
| Ένωση εγγραφών από 2 πίνακες σε ένα ερώτημα | mdragon | Access - Ερωτήσεις / Απαντήσεις | 5 | 18-04-10 15:37 |
Η ώρα είναι 21:37.


Υβριδικός τρόπος

