Εμφάνιση ενός μόνο μηνύματος
  #2  
Παλιά 24-02-20, 10:52
Το avatar του χρήστη Tasos
Tasos Ο χρήστης Tasos δεν είναι συνδεδεμένος
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

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

Έχουμε έναν πίνακα με το όνομα "tbl1" με τα πεδία:

ID (αναγνωριστικό)

και

MemoString (Μεγάλο κείμενο)

Ο κώδικας SQL σε ερώτημα που θα σου επιστρέψει όσες εγγραφές περιέχουν λέξεις μήκους 36 χαρακτήρων μπορεί να είναι ο εξής:

Κώδικας:
SELECT tbl1.ID, ' ' & [MemoString] & ' ' AS MyText
FROM tbl1
WHERE (((' ' & [MemoString] & ' ') Like "* " & String$(36,"?") & " *"));
Τα κριτήρια μπορούν να χρησιμοποιηθούν και σε άλλες συναρτήσεις (DLOOKUP() κλπ.)

Για να εμφανίσουμε μόνο το τμήμα των 36 χαρακτήρων τροποποιούμε τον κώδικα του ερωτήματος έτσι:

Κώδικας:
SELECT tbl1.ID, GetWordFromLengtn([MemoString],36) AS TheWord
FROM tbl1
WHERE (((' ' & [MemoString] & ' ') Like "* " & String$(36,"?") & " *"));
όπου η GetWordFromLengtn() είναι η συνάρτηση VBA που μας επιστρέφει τη λέξη των 36 χαρακτήρων και πρέπει να περαστεί σε μια λειτουργική μονάδα (Module)

Ο κώδικας της συνάρτησης:
Κώδικας:
Public Function GetWordFromLengtn(strWord As String, iLen As Integer) As String
    Dim VarArray() As String
    Dim i As Integer
    strWord = Replace(strWord, "  ", " ")
    VarArray = Split(strWord)
    For i = 0 To UBound(VarArray)
        If Len(Trim(VarArray(i))) = iLen Then
            GetWordFromLengtn = Trim(VarArray(i))
            Exit Function
        End If
    Next
End Function
Ελπίζω να βοήθησα.

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

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 24-02-20 στις 15:43. Αιτία: Διόρθωση κώδικα
Απάντηση με παράθεση