Newsgroup: it.comp.appl.access
Titolo: Replace

Importo numerosi record che presentano caratteri strani tipo ï¿œ oppure ï¿œ 
probabilmente perchï¿œ provenienti da Mac.
 
Da codice provo a fare pulizia sostituendo il carattere strano con il 
corrispondente (ï¿œ, ï¿œ ...)
 
Il problema ï¿œ che ï¿œ corrisponde all'apostrofo  e quando provo a 
sostituirlo mi dï¿œ errore
 
DoCmd.RunSQL
"UPDATE miaTAB SET mioCAMPO = myReplace(mioCAMPO, 'ï¿œ', ''');"
 
Come risolvo?
 
Grazie

 Grazie
 
non si mette doppio apostrofo?


 
Ho altre stringhe scritte cos� e funzionano perfettamente
"UPDATE miaTAB SET mioCAMPO = myReplace(mioCAMPO, '�', '�');"
 
Ho provato a utilizzare CHR(39) in questo modo
"UPDATE miaTAB SET mioCAMPO = myReplace(mioCAMPO, '�', " & Chr(39) & ");"
 
Ma mi da operatore mancante

 Ma mi da operatore mancante
 
Scusate ... mi dice errore di sintassi
 

 Grazie
 
"UPDATE miaTabella SET Campo1 = " & "pro'va " ....
 
usi le virgolette per delimitare la stringa e ' (apostrofo come carattere)
 
non so come hai strutturato myReplace dovrebbe restituire la stringa che vuoi utilizzare
 
"UPDATE miaTabella SET Campo1 = " & chr(34) & myRepalce(...) & chr(34)
 

>
 
Ho risolto semplicemente mettendo il chr(34) dentro il replace senza 
nessuna virgoletta
"UPDATE miaTAB SET mioCAMPO = myReplace(mioCAMPO, '�', Chr(34));"
 

Come gi� detto tutto funziona bene ...
L'unico problema � che 10/12 UPDATE diversi su 3 campi il tutto ci mette 
qualche minuto anche con solo una 30ina di record
 
Esiste un modo per velocizzare?

 Esiste un modo per velocizzare?
 
Sicuramente si...ma se non mostri la tua funzione non so come....è impossibile tutto quel tempo.
Poi
"UPDATE miaTAB SET mioCAMPO = ' " & myReplace(mioCAMPO, 'Æ', Chr(34)) & " ' "
e non usare RunSQL ma execute che è membro di Database
 
Nella tua maniera lasci fare ad Access, nella seconda deleghi a jet, saltando Access

 Nella tua maniera lasci fare ad Access, nella seconda deleghi a jet, saltando Access
 
Ti ringrazio per la risposta.
La funzione �:
 
Public Function myReplace(strExpression As String, _
                           strFind As String, _
                           strReplace As String, _
                           Optional lngStart As Long = 1, _
                           Optional lngCount As Long = -1, _
                           Optional lngCompare As Long = 1)
 
     myReplace = Replace(strExpression, strFind, _
                 strReplace, lngStart, lngCount, lngCompare)
End Function
 
Intanto provo a studiarmi execute ... non ho capito bene come applicarlo 
nel mio caso.
 

 Intanto provo a studiarmi execute ...
 
 > "UPDATE miaTAB SET mioCAMPO = ' " & myReplace(mioCAMPO, '�', Chr(34)) 
& " '"
 
Modificando la stringa come dicevi tu mi d� errore sul secondo apice 
(prima di �) sbaglio qualcosa?
 
In quanto a execute ho fatto ...
CurrentDb.Execute "UPDATE miaTAB SET mioCAMPO = myReplace(mioCAMPO, '�', 
Chr(39))WHERE (mioCAMPO Is Not Null);"
 
Ho cronometrato un tempo di 5 sec per 1 solo record.
Il campo dove avviene la sostituzione � un campo memo.
 
Considerando che devo fare abitualmente 10 sostituzioni in 3 campi per N 
record ...
Sempre meglio che farlo a mano ... ma i tempi diventano decisamente lunghi.
 
 
 

 Sempre meglio che farlo a mano ... ma i tempi diventano decisamente lunghi.
 
Beh su un campo memo il discorso è un po' diverso, prestazionalmente....
 
cmq prova
 
Dim StrSql as string
 
StrSql = "UPDATE miaTAB SET mioCAMPO = " & myReplace(mioCAMPO, 'Æ', '''') & " WHERE mioCAMPO Is Not Null"
 
CurrentDb.Execute StrSql, dbfailonerror+dbseechanges