Problema con un campo formattato come Testo Lungo

di il
106 risposte

106 Risposte - Pagina 6

  • Re: Problema con un campo formattato come Testo Lungo

    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:

  • Re: Problema con un campo formattato come Testo Lungo

    Antony73, no, non ci sono altri campi.

    Vi faccio avere lo screenshot.

  • Re: Problema con un campo formattato come Testo Lungo

    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

  • Re: Problema con un campo formattato come Testo Lungo

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

  • Re: Problema con un campo formattato come Testo Lungo

    Questo è il primo tipo di errore.

  • Re: Problema con un campo formattato come Testo Lungo

    Oregon, ho visto che posso fare il collegamento qui. Ci provo.

    ProvaPerMascheraTitoli.zip

  • Re: Problema con un campo formattato come Testo Lungo

    23/03/2024 - Barsyk ha scritto:


    Oregon, ho visto che posso fare il collegamento qui. Ci provo.

    ProvaPerMascheraTitoli.zip

    Hai sbagliato il nome del campo… si chiama Soggetti e non Soggetto  ;-)

  • Re: Problema con un campo formattato come Testo Lungo

    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)?

  • Re: Problema con un campo formattato come Testo Lungo

    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…

  • Re: Problema con un campo formattato come Testo Lungo

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

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

  • Re: Problema con un campo formattato come Testo Lungo

    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

  • Re: Problema con un campo formattato come Testo Lungo

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

  • Re: Problema con un campo formattato come Testo Lungo

    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.

  • Re: Problema con un campo formattato come Testo Lungo

    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.

  • Re: Problema con un campo formattato come Testo Lungo

Devi accedere o registrarti per scrivere nel forum
106 risposte