Forum

Αναζήτηση στο ms-office.gr

Πάμε!
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Ένωση συναρτήσεων σε ερωτημα

Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια!

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 19-11-19, 23:19
Το avatar του χρήστη alex
Όνομα: Αλέξανδρος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-01-2010
Περιοχή: ΑΡΤΑ
Μηνύματα: 510
Προεπιλογή Ένωση συναρτήσεων σε ερωτημα

Καλησπέρα στη παρέα!
Προσπαθώ να κάνω ένα ερώτημα και θέλω να συνδέσω τα παρακάτω. Δεν ξέρω που κάνω λάθος.Από την φόρμα καλώ τις δύο συναρτήσεις που η φόρμα συνδέεται με το ερώτημα.
NewText: (SmallToCapital([textbox2])) & (ReplaceEndSigma([textbox2]))
Πως μπορώ να συνδέσω το SmallToCapital([textbox2]) με το ReplaceEndSigma([textbox2]) στο ερώτημα; Μέσα απο το Module μπορώ να τις βάλω μαζί και να δουλεύει υπάρχει ένας τρόπος αλλά μέσα στο ερώτημα πιθανόν κάποια αγκύλη κάνω λάθος δεν ξέρω.
Συνημμένα Αρχεία
Τύπος Αρχείου: zip Test_1.zip (52,5 KB, 3 εμφανίσεις)
__________________
Με εκτίμηση

Αλέξανδρος

Τελευταία επεξεργασία από το χρήστη alex : 20-11-19 στις 15:48.
Απάντηση με παράθεση
  #2  
Παλιά 20-11-19, 18:55
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.060
Προεπιλογή

Καλησπέρα

Θα πρέπει να αποσαφηνίσουμε το ζητούμενο:

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
Δες και το ερώτημα qryTest στη συνημμένη ΒΔ
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb Test_1.mdb (864,0 KB, 4 εμφανίσεις)
Απάντηση με παράθεση
  #3  
Παλιά 20-11-19, 19:21
Το avatar του χρήστη alex
Όνομα: Αλέξανδρος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-01-2010
Περιοχή: ΑΡΤΑ
Μηνύματα: 510
Προεπιλογή

Καλησπέρα Γιώργο!
Θέλω να βάλω τις συναρτήσεις που έχω στο 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
Συνημμένα Αρχεία
Τύπος Αρχείου: zip Replace3_SmallToCapital - New.zip (53,1 KB, 2 εμφανίσεις)
__________________
Με εκτίμηση

Αλέξανδρος

Τελευταία επεξεργασία από το χρήστη alex : 20-11-19 στις 22:39.
Απάντηση με παράθεση
  #4  
Παλιά 21-11-19, 09:22
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.060
Προεπιλογή

Καλημέρα

Αφού έχεις έτοιμες δοκιμασμένες συναρτήσεις, δε χρειάζεται να τις ενσωματώσεις σε μία.

Για την επίτευξη του ζητούμενου απαιτείται ένθεση.

Για παράδειγμα: SmallToCapital(ReplaceEndSigma(txt)).

Η εσωτερική συνάρτηση μετατρέπει στο κείμενο txt το τελικό «σ» σε «ς» και η εξωτερική, ενεργώντας στο τροποποιημένο txt, μετατρέπει στο επιθυμητό κεφαλαίο.

Δες το συνημμένο.

Σύμφωνα με τη Microsoft Το πεδίο «Long Text» παλιό «Memo» αποθηκεύει μέχρι 1 GB, αλλά τα σχετικά χειριστήρια μπορούν να εμφανίσουν μόνο τους 64.000 πρώτους χαρακτήρες.
Συνημμένα Αρχεία
Τύπος Αρχείου: zip Replace3_SmallToCapital - New2.zip (53,6 KB, 1 εμφανίσεις)
Απάντηση με παράθεση
  #5  
Παλιά 21-11-19, 10:04
Το avatar του χρήστη alex
Όνομα: Αλέξανδρος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-01-2010
Περιοχή: ΑΡΤΑ
Μηνύματα: 510
Προεπιλογή

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

Κώδικας:
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  
Παλιά 21-11-19, 11:26
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.060
Προεπιλογή

Αλέξανδρε δοκίμασε τη συνάρτηση:

Κώδικας:
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  
Παλιά 21-11-19, 11:40
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.060
Προεπιλογή

Ο παραπάνω κώδικας θα μπορούσε να συντομευτεί στον:

Κώδικας:
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  
Παλιά 21-11-19, 12:15
Το avatar του χρήστη alex
Όνομα: Αλέξανδρος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-01-2010
Περιοχή: ΑΡΤΑ
Μηνύματα: 510
Προεπιλογή

Γιώργο δεν δουλεύει ουτε με την πρώτη ούτε με την δεύτερη ρουτίνα. Εκτός και αν εχω λαθος το ερώτημα Routina: ReplaceEndSigmaSmallToCapital([textbox2])ανεβάζω την βάση.
Συνημμένα Αρχεία
Τύπος Αρχείου: zip Replace3_COMPLETE - NEW.zip (124,5 KB, 3 εμφανίσεις)
__________________
Με εκτίμηση

Αλέξανδρος
Απάντηση με παράθεση
  #9  
Παλιά 21-11-19, 13:05
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.060
Προεπιλογή

Στη συνάρτηση που ανέβασες έχεις τις γραμμές κώδικα:

Κώδικας:
    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("ς ", "ς.", "ς,", "ς:", "ς;")    '<--θα αντικαταστήσουν τα παραπάνω
Όταν κάνεις copy/paste φρόντισε το πληκτρολόγιο να είναι στα ελληνικά.
Απάντηση με παράθεση
  #10  
Παλιά 21-11-19, 13:13
Το avatar του χρήστη alex
Όνομα: Αλέξανδρος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-01-2010
Περιοχή: ΑΡΤΑ
Μηνύματα: 510
Προεπιλογή

Ωχ συγνώμη Γιώργο δεν το πρόσεξα από ταχύτητα. Σε ευχαριστώ πάντως για όλα και για τις δύο εναλλαγές της ρουτίνας. Πολύτιμη η βοήθειά σου και τα χρειάζομαι για μια εργασία που κάνω σε ένα μεταπτυχιακό. Χίλια ευχαριστώ!!
__________________
Με εκτίμηση

Αλέξανδρος
Απάντηση με παράθεση
Απάντηση στο θέμα

Εργαλεία Θεμάτων
Τρόποι εμφάνισης

Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[Συναρτήσεις] συνχωνευση 2 συναρτησεων Quenya Excel - Ερωτήσεις / Απαντήσεις 2 30-08-15 17:43
[ Ερωτήματα ] Ένωση πινάκων σε ερώτημα lammis Access - Ερωτήσεις / Απαντήσεις 10 14-03-14 09:18
[Συναρτήσεις] Συνδυασμός συναρτήσεων; psammotettix Excel - Ερωτήσεις / Απαντήσεις 3 19-06-13 12:27
[Συναρτήσεις] Προσθήκη συναρτήσεων nakosg Excel - Ερωτήσεις / Απαντήσεις 7 15-07-12 13:08
Ένωση εγγραφών από 2 πίνακες σε ένα ερώτημα mdragon Access - Ερωτήσεις / Απαντήσεις 5 18-04-10 16:37


Η ώρα είναι 08:01.