Newsgroup: it.comp.appl.access
Titolo: Problemi con funzione Replace all'interno di un ciclo

Ciao a tutti ho delle problematiche con la funzione Replace all’interno di un ciclo.
Cercherò di spiegarmi meglio .
Il codice funzionante è questo :
Dim MioRS As recorset
Dim strDescrizione As string
strDescrizione = Nomesottomaschera!descrizione
        For i = 1 To Nrighe
            Print #1, "<DettaglioLinee>";                                            
            Print #1, "<NumeroLinea>" & i & "</NumeroLinea>";                                
            'Print #1, "<Descrizione>" & MioRS!descrizione & "</Descrizione>";
      Next i
Ovviamente ho sintetizzato perché le altre righe di codice non interessano.
In sostanza i dati vengono recuperati da una sottomaschera.
Come si evince dalla parte di codice, mi si creano  “N” righe a seconda delnumero di record che si generano nella sottomaschera.
Il problema nasce quando in uno dei records nel campo descrizionecompaiono dei caratteri accentati o speciali.
Per ovviare al problema utilizzo la funzione Replace. creo (come spiegatomi da Karl nel lead precedente)
Una stringa       strDescrizione alla quale associo i vari Replace “risolutivi2 (faccio qualche esempio)
strDescrizione = Replace(strDescrizione, "à", "a")
strDescrizione = Replace(strDescrizione, "ò", "o")
e così via......
Se nel codice poi sostituisco il campo descrizione :
            'Print #1, "<Descrizione>" & MioRS!descrizione & "</Descrizione>"; con 
       'Print #1, "<Descrizione>" & strDescrizione & "</Descrizione>"; 
succede che il ciclo mi riporta sempre la descrizione della prima riga.
Il problema nasce probabilmente dal campo Nomesottomaschera!descrizione che associo alla stringa
Dovrei associare MioRS!descrizione alla stringa strDescrizione (alla quale sono associati i vari Replace), ma il codice non me lo permette perché MioRS è dichiarato come recordset.
Come posso fare per risolvere il problema.
Grazie in anticipo


secondo me ti stai incasinando la vita per nulla
 
quello che devi fare è crearti il recordset delle tue righe fattura
 
 
fai un ciclo sulle rige del recordset
 
per ogni riga, quando è ora di scrivere la descrizione riga, scrivi
 
while...
 
...
Print #1, "<Descrizione>" & FunzionePulisci(tuoRS.fields("descrizione") 
) & "</Descrizione>"
 
...
next
 
 
dove FunzionePulisci
 
è una funzione a cui passi la tua descrizione
 
dentro la funzione metti tutti i replace e ulteriori controlli che vuoi 
fare alla descrizione
 
Private FunzionePulisci(dapulire as string) as string	
      dapulire = Replace(dapulire , "à", "a")
      dapulire = Replace(dapulire , "ò", "o")
etc etc
 
funzionePulisci=dapulire
 
 
end function
 
 
 
 
BFS

grazie BFS provo e ti faccio sapere


Ciao BFS, una domanda ma la la funzione Pulisci la inserisco in un modulo e la faccio diventare pubblica?
Altra domanda, essendo la riga Print #1, "<Descrizione>" & FunzionePulisci(tuoRS.fields("descrizione") 
) & "</Descrizione>"
 
All’interno di un ciclo For posso evitare di inserire il ciclo While ..Wend???
Grazie mille aspettotue in merito



la puoi mettere pubblica se ti serve in altre parti del programma
il mio while era inteso per ciclare le righe fattura, se tu usi for 
ovviamente non serve
 
 
ciao
 
 
 
 

Ciao BFS, grazie al tuo consiglio ho risolto il problema.
Ho semplificato il tutto creando nella sottomaschera un campo “Descpulita”, al quale associo il valore del campo descrizione e lo faccio pulire dai replace nell’evento afterupdate del campo descrizione
Dim strdesc As String
strdesc = Me.descrizione
strdesc = Replace(strdesc, "à", "a")
strdesc = Replace(strdesc, "ò", "o")
strdesc = Replace(strdesc, "ù", "u")
Me.Descpulita = strdesc
 
Grazie ancora


 Grazie ancora
 
 
non mi convince come soluzione
perchè i caratteri "strampalati" che l'xml non digerisce potresti averli 
anche nel nome del cliente, nei campi delle causali documento etc.
 
quindi aveva più senso fare una funzione di pulitura come ti ho scritto 
da poter usare ogni volta che devi scrivere un campo tipo testo del xml
 
 
ciao
BFS

Hai perfettamente ragione, in realtà nno te l’ho detto ,ma ho creato un str indirizzo e un str nome cliente gestite entrambe dai Replace.
Nel caso del nome cliente e dell’indirizzo, ovviamente non essendoci il ciclo For no ho problemi della descrizione.
Dino
