Newsgroup: it.comp.appl.access
Titolo: Modifica testo

Come faccio a formattare in automatico attraverso una routine una casella di
testo eliminando tutti
gli spazi tra le varie righe. In poche parole come faccio a fare questo?
vorrei trasformare la casella di testo da cosě:
- @@@@@@@@@@@@@
-&&&&&&&&&&&&&&&&&
-$$$$$$$$$$$$$$$$$$$$$$$$$$
a cosě
-@@@@@@@@@@@@@@
-&&&&&&&&&&&&&&&&&&
-$$$$$$$$$$$$$$$$$$$$$$$$$$$
Ciao e grazie.

 news:nzbT9.97291$Ou4.3...@twister2.libero.it...

    Quegli a capo potrebbero anche essere dovuti alla presenza di caratteri
di "nuova riga", oltre che a spazi in eccesso. Come stanno effettivamente le
cose? Comunque consulta la guida a proposito delle funzioni Trim, Split,
Replace, Join & C.
--
Ciao :-)
Maurizio
--------
?SPQR(C)
 X
--------

 ha scritto nel messaggio
news:nzbT9.97291$Ou4.3...@twister2.libero.it...
[CUT]
Non vorrei sbagliarmi ma non è la prima volta che posti questo messaggio.
Perché continui a postarlo?
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


Prova così a fronte dell'evento su disattivato di un controllo che si chiama
Testo0 e che contiene la stringa:
Private Sub Testo0_LostFocus()
Dim MiaStringa As String
MiaStringa = Me.Testo0
'Dim POS As Integer
Dim i As Integer, s As Integer
On Error Resume Next
For i = 1 To Len(MiaStringa)
    s = Asc(Mid(MiaStringa, i, 1))
    If s = 13 Then
    MiaStringa = Mid(MiaStringa, 1, i - 1) & Mid(MiaStringa, i + 2,
Len(MiaStringa))
    End If
Next i
'POS = InStr(1, MiaStringa, (vbCrLf + vbCrLf))
Me.Testo0 = MiaStringa
End Sub
Nella tua stringa ci sono due combinazioni di ritorno a capo e avanzamento
riga (cioè due vbcrlf).
Scrivendo POS = InStr(1, MiaStringa, (vbCrLf + vbCrLf)) avrei ottenuto il
valore 16 e quindi avrei individuato la prima occorrenza della combinazione.
Il punto è che tu vuoi comunque un ritorno a capo (e non due) quindi mi
sarebbe stato più difficile scrivere del codice per ottenere il risultato.
Ecco perchè ho preferito usare la prima occorrenza di Asc(chr(13)) per
costruire la nuova Stringa.
Chissà se qualcuno del NG ha una soluzione più veloce.
Ciao, Carlo

 Chissŕ se qualcuno del NG ha una soluzione piů veloce.
    Ciao, Carlo.
    Velocita' a parte, posto la seguente funzione giusto per capire se
stiamo parlando della stessa cosa.
Public Function EliminaInPiů_Test()
  Const c_sTesto$ _
    = "- @@@@@@@@@@@@@" & vbNewLine _
    & "       " & vbNewLine _
    & "- &&&&&&&&&&&&&&&&&" & vbNewLine & vbNewLine _
    & "            " & vbNewLine _
    & "- $$$$$$$$$$$$$$$$$$$$$$$$$$" _
    & " " & vbNewLine
  Dim sTesto  As String
  sTesto = EliminaInPiů(c_sTesto)
  Debug.Print "**********"
  Debug.Print sTesto
  Debug.Print "**********"
  Debug.Print
End Function
Public Function EliminaInPiů( _
  ByVal Testo As String _
) As String
  Dim a_sTesto()  As String
  Dim lIndex      As Long
  Dim lLen        As Long
  a_sTesto = Split(Testo, vbNewLine)
  For lIndex = LBound(a_sTesto) To UBound(a_sTesto)
    a_sTesto(lIndex) = Trim$(a_sTesto(lIndex))
  Next
  EliminaInPiů = Join(a_sTesto, vbNewLine)
  Do
    lLen = Len(EliminaInPiů)
    EliminaInPiů _
      = Replace( _
            EliminaInPiů _
          , vbNewLine & vbNewLine _
          , vbNewLine)
  Loop While lLen <> Len(EliminaInPiů)
End Function


CUT

Sě Maurizio stiamo parlando della stessa cosa e la tua soluzione la trovo
molto elegante e piena di numerosi spunti come Split, Trim, LBound, Join e
vbNewLine.
Al posto di vbNewLine avrei usato vbCrLf  visto che vbNewLine č specifica
della piattaforma (PC o MAC), ma questa č solo una questione di scelta visto
che per PC hanno lo stesso valore e sono entrambe corrette.
Ora aspettiamo solo di vedere se abbiamo ben capito quello che chiedeva
Sefin S.p.a.
Ciao, Carlo

ma split è una funzione che non si trova in access97 vero?

 ma split è una funzione che non si trova in access97 vero?
    Vero. :-( Neppure Join, Replace...
    Capito adesso perche' l'ottimo oizirbaF dopo la firma scrive sempre:
        (Access XP (sp2), Win ME, P4 1Ghz, 320 RAM)
?
    Oltre a quanto scrive Carlo, potresti anche consultare la KB MS per
ottenere le funzioni che emulano Split e Replace...


 della piattaforma (PC o MAC),
[...]
    Io la interpreto al contrario :-) vbCrLf *e' specifico* per la
piattaforma PC mentre vbNewLine *non e' specifico* e, nella piattaforma PC,
come anche tu affermi, assume il valore vbCrLf. Nel caso particolare poi si
dovrebbe verificare di quali caratteri effettivamente si tratti e come e
perche' siano arrivati nella casella di testo in questione...


 ha scritto nel messaggio
news:avk538$fvofi$1...@ID-52090.news.dfncis.de...

Concordo, anche se la guida recita:
vbNewLine = Chr(13) + Chr(10) o, in Macintosh, Chr(13) : Carattere di nuova
riga specifico della piattaforma, a seconda del carattere appropriato per la
piattaforma corrente
Ciao, Carlo

 piattaforma corrente
    Ecco, appunto, vedi... Io "traduco" che il valore di vbNewLine e' uguale
a quello specifico della piattaforma in cui gira il programma, quindi
vbNewLine non ha un valore specifico ma e' specifico il suo valore. :-))))
    Insomma, vbNewLine e' una costante... incostante.
