Problema con un campo formattato come Testo Lungo

di Barsyk il
106 risposte

106 Risposte - Pagina 6

  • Ciao a tutti,
    se posso mi intrometto ;-)

    Personalmente farei questa cosa…

    inserirei alcuni controlli e definizioni per non ricevere errore nella Query quando per esempio il testo sottoposto a “Riduzione” possa risultare vuoto o null

    Per esempio scriverei in un Modulo di Codice la function  di nome MyRetrieveNumberWords che richiede due Parametri :

    Esempio :  MyRetrieveNumberWords(TuoTesto, NumeroParole)
    Dove:
    TuoTesto = rappresenta il testo o la stringa dalla quale estrarre un certo numero di parole a partire da Sinistra
    NumeroParole = il numero di parole da ritornare 

    Per esempio… MyRetrieveNumberWords ("Oggi è una bella giornata", 3) 
    La function ritornera le prime 3 parole a partire da Sinistra  = “Oggi è una”

    Option Compare Database
    Option Explicit
    
    ' RETURN A NUMBER OF WORDS
    Public Function MyRetrieveNumberWords(stringText As Variant, numberWords As Integer) As String
    Dim Words() As String
    Dim i As Integer
    Dim j As Integer
    Dim stringReturn As String
    ' check text
    If IsNull(stringText) Or Len(stringText) = 0 Then
        MyRetrieveNumberWords = ""
        Exit Function
    End If
    ' split text
    Words = Split(stringText, " ")
    ' set default function return
    stringReturn = ""
    ' word extraction
    For i = LBound(Words) To UBound(Words)
        If Len(Words(i)) > 0 Then
            stringReturn = stringReturn & Words(i) & " "
            ' check exit for
            j = j + 1
            If j = numberWords Then Exit For
        End If
    Next i
    ' set function return
    MyRetrieveNumberWords = RTrim(stringReturn)
    End Function
    

    Esempio per impostare la function in una Query…. poniamo di avere una tabella di questo tipo con tre colonne che contengono dei testi:


    In una query supponiamo di voler estrarre dalle colonne della tabella alcune parole dai testi:
    da Testo1 si estraggono 3 parole
    da Testo2 si estraggono 6 parole
    e da Testo3 si estraggono 2 parole

    Quindi nella query scriverò:


    il risultato che si ottiene sarà di questo tipo :

    e nell'ultima riga, la colonna TreParole e DueParole, non si riceve errore se nella tabella questi campi non risultano valorizzati.


    In UnaParola è tutto ciò che ti hanno già ben illustrato e spiegato nei post precedenti… ora devi solo mettere le cose nel posto giusto e nel modo giusto…. e deve fuzionà  ;-)

    Ciao.

    Edit:
    ti lascio nel dettaglio come scrivere nella query:

  • Antony73, no, non ci sono altri campi.

    Vi faccio avere lo screenshot.

  • 23/03/2024 - Barsyk ha scritto:


    Come faccio ad allegare il file zippato?

    Usa un sito di sharing gratuito e mostra qui il link

    E magari si risolve subito, prima di arrivare ai 100 post

  • Prima mi dava un altro tipo di errore. Vi faccio avere l'altro.

  • Questo è il primo tipo di errore.

  • Nel 1° screenshot, dentro la parentesi quadra devi scrivere [Soggetti].
    Il mio codice VBA non prevede campi Null.
    Il mio sospetto è il Modulo1 non standard. Lo hai creato da paletta CREA, poi click su Modulo (all'estrema destra)?

  • Attento a quello che scrivi…

    questo funziona

    Public Function fT4P(Soggetti) As String
    Dim strRidotto As String, strTL As String
    Dim bySpazio As Byte, K As Byte
    strTL = Soggetti
    For K = 1 To 4
    bySpazio = InStr(strTL, " ")
    If bySpazio > 0 Then
      strRidotto = strRidotto & " " & Left(strTL, bySpazio - 1)
      strTL = Replace(strTL, Left(strTL, bySpazio), "")
      Else
      strRidotto = strRidotto & " " & strTL
      GoTo Fine
    End If
    Next K
    Fine:
    fT4P = strRidotto
    End Function


    1°campo :Soggetti
    2°campo :Soggetto_Corto: fT4P([Soggetti])

    devi sempre scrivere Soggetti

    e non una volta soggetto ed un'altra soggetti…

  • Osvaldo, ci sto riprovando, sto rifacendo tutto, anche il Modulo.

    Il Modulo l'ho fatto comparire cliccando sulla sinistra in alto, sì.

  • Attenzione che ci sono più parole nei testi Soggetti che sono spaziati con due spazi invece di uno e ti estrae una parola in meno … 3 parole invece di 4

  • Ho rifatto tutto, ma adesso mi dà un altro tipo di errore e mi evidenzia fT4P

  • Hai sistemato il nome ( giusto) del campo nella query.

    Ora controlla nella funzione all' interno del modulo 1

    Se hai inserito il nome del campo Soggetti.

  • FINALMENTE! Ci sono riuscito anche se solo in parte. Ho cambiato il nome della funzione, ho messo SoggettoCorto, che poi ho ripetuto nella query. Tuttavia mi dà errore perché non prevede NULL. Funziona, ma non capisco perché non per tutti i Soggetti (alcuni sono rimasti lunghi. Segue lo screenshot dell'ultimo errore.

Devi accedere o registrarti per scrivere nel forum
106 risposte