Newsgroup: it.comp.appl.access
Titolo: Problema con il carattere "invio".

Ciao a tutti, a chi è in vacanza e a chi, come me, non ci è ancora 
andato.
Avrei bisogno di un piccolo consiglio; vi spiego il problema.
Io ho la necessità di esportare una tabella in un database in formato 
dBase-4.
Purtroppo questo formato non accetta il carattere "invio" nei campi tipo 
"note".
Conoscendo l'utente finale del mio database sono sicuro al 100% che una 
scritta del tipo "non premete il tasto invio" non basterebbe di sicuro. 
La mia intenzione sarebbe quella di scrivere qualche riga di VBA che a 
fronte di un evento tipo Update o Clik vada a sostituire al carattere 
"invio" una serie di caratteri "spazio", che sono ben accetti 
dall'AS-400 sul quale sarà poi elaborato.
Esiste qualche comando in VB che mi possa effettuare questa 
sostituzione? In realtà io vorrei utilizzare il comando Mid, am non ho 
idea di come possa far trovare il carattere "invio".
Grazie a tutti coloro che mi risponderanno.
-- 
Saluti, Alessandro
==============================
Villa Alessandro
sito: 
http://www.alevilla.it
sito: 
http://www.volo-vela-mottarone.it
email: 
alessand...@alevilla.it
ICQ#:  37735366
cell:  3403301623 

 Saluti, Alessandro
E se cercassi il Chr(13) sostituendolo con il carattere che vuoi? Magari 
potresti fare un parsing della stringa prima dell'esportazione.
Ciao, Carlo 

 idea di come possa far trovare il carattere "invio".
Dipende un po' della tua versione segreta di Access.
In versioni >=A00 puoi usare Replace p.e. in un campo calcolato
di una query che usi per esportare:
Replace([TuoCampo];Chr$(13) & Chr$(10);" ")
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
+ Conferenza Italiana per Sviluppatori di Access (CISA) 

 Ciao, Carlo
Ho risolto il problema. Il campo incriminato era X_NOTER1 e ho 
semplicemente creato una funzione come segue:
    Private Sub X_NOTER1_AfterUpdate()
    Me!X_NOTER1 = Replace(X_NOTER1, Chr(13), "      ")
    End Sub
Magicamente funziona!!!!


 Replace([TuoCampo];Chr$(13) & Chr$(10);" ")
Domande:
1 - che differenza c'è tra il comando Chr(xx) e il comando Chr$(xx) ? Io 
ho provato senza il "$" e funziona lo stesso.
2 - il codice 13 mi dice che è il Carriage Return (CR) e il 10 è il Line 
Feed (LF). Che differenza c'è tra questi due?
Ora il mio codice funzionante è il seguente:
Me!X_NOTER1 = Replace(X_NOTER1, Chr$(13) & Chr$(10), "      ")
Però ora sorge un altro problema: se cancello il contenuto della casella 
di testo, Access mi fa spuntare una casellina che dice
    Errore di run-time '94':
    Utilizzo non valido di Null
E in effetti ha ragione a dirmi una cosa del genere, perché il codice si 
aspetta di trovre qualcosa nel campo X_NOTER1. A me non fa nulla premere 
poi il tasto "Fine" e far sparire la fnestrella, ma sono sicuro che 
all'end-user una cosa del genere provocherebbe un attacco di cuore...
Come faccio a gestire un evento del genere?
Grazie mille!!!!! 

 di cuore... Come faccio a gestire un evento del genere?
If Not IsNull(Me!X_NOTER1) Then
    Me!X_NOTER1 = Replace(Me!X_NOTER1, vbCrLf, "      ")
End If


 il secondo muove il carello una riga più in alto...
-- 


 Troppo tempo che non ho usato la mia macchina da scrivere.
Perche a dx? Sempre a sinistra Karl, sempre a sinistra ;<)
La "vacanza" e' quella cosa per cui non si e' presenti.
Per estensione e' quindi quella cosa, che, non essendo
presenti, si pensa a un impegno ("occupanza") in qualcosa d'altro
e di piu' "ludico".
Il problema nasce per quelli, che come me, sono "va(g)anti"
365,25 giorni l'anno. In questo caso il concetto di "vacanza"
e' come un "null".
Piccola digressione di "vagante" in "vacanza".
In particolar modo di testa.
--
a.cara

>>
dimenticai l' OT. ai beg iu padon.
--
a.cara

 ...
Nonononono, guarda: 
http://en.wikipedia.org/wiki/Image:Typewriter.jpg
Mentre si scrive il carello si muove a sinistra. Alla fine di una riga
si spinge il carella con la leva all'estrema destra per poter
continuare di scrivere al margine sinistra della carta.
Vedi anche Step 9 qui: 
http://www.ehow.com/how_2997_typewriter.html
-- 
:-)


 End If
Purtroppo l'errore run-time 94 rimane lo stesso. Il mio listato è 
questo:
    Private Sub X_NOTER1_AfterUpdate()
    If Not IsNull(Me!X_NOTER1) Then
        Me!X_NOTER1 = Replace(Me!X_NOTER1, vbCrLf, "      ")
    End If
    Me!X_NOTER1 = Replace(X_NOTER1, Chr(13) & Chr(10), "      ")
    End Sub
Ho provato anche a mettere prima il "replace" e poi la struttura "if 
then", ma non funziona lo stesso. Ho provato a fare il debug e si 
evidenzia di giallo questa linea:
        Me!X_NOTER1 = Replace(X_NOTER1, Chr(13) & Chr(10), "      ")
Come devo fare???
Grazie ancora di tutto!! 

 ha scritto nel messaggio
news:ZYhMe.74559$fm.50...@news4.tin.it...

Ciao Alessandro,
la tua istruzione Replace fuori dall'IF è inutile la sostituzione avviene
già prima sostanzialmente
Me!X_NOTER1 = Replace(Me!X_NOTER1, vbCrLf, "      ")    è equivalente a
Me!X_NOTER1 = Replace(X_NOTER1, Chr(13) & Chr(10), "      ")
dunque la tua funzione diventerà:
  Private Sub X_NOTER1_AfterUpdate()
    If Not IsNull(Me!X_NOTER1) Then
        Me!X_NOTER1 = Replace(Me!X_NOTER1, vbCrLf, "      ")
     End If
 End Sub
Saluti
Cinzia

 End Sub
Ok, questa è un'ottima soluzione. Però nella mia testolina malata ho 
"elaborato" una soluzione moooolto meno elegante della tua che è la 
seguente:
Private Sub X_NOTER1_AfterUpdate()
    If IsNull(Me!X_NOTER1) Then
        Me!X_NOTER1 = " "
    End If
    Me!X_NOTER1 = Replace(X_NOTER1, Chr(13) & Chr(10), "      ")
End Sub
Praticamente gli vado a dire che se dopo aver editato il campo esso non 
contiene nulla, allora gi faccio mettere uno "spazio" e poi, anche se 
inutilmente, vado ad eseguire la sostituzione.
Approfitto della tua gentilezza e ti chiedo un'altra cosa.
In questo programma devo importare un file DBF. Per fare ciò ho creato 
una macro che ho associato ad un pulsante. La macro è fatta di tante 
azioni tra cui, ed è la più importante, c'è "TrasferisciDatabase". 
Questa azione richiede che io nel campo "Nome database" gli inserisca il 
percorso della directory che contiene il file DBF (tipo c:\access\) e 
nel campo "Origine" il nome del file vero e proprio (tipo database.dbf).
Ovviamente ad oggi queste posizioni sono fisse sicché, se l'utente mette 
il file nella cartella sbagliata, l'errore è assicurato.
Domandone: è possibile fare in modo che quando l'utente clicca sul 
tastino "Importa database esterno" gli esca la classica finestrella che 
gli chiede di selezionare il file DBF da importare? Per intenderci 
quella che esce quando in tutti i programmi selezioni la voce "apri" dal 
menù "file".
Una possibile soluzione sarebbe anche quella di fargli aprire la 
finestra di importazione di un nuovo database, per intenderci quella che 
è associata al pulsantino "importa". Esiste il codice VBA per fargli 
aprire quella finestrella?
Grazie mille della pazienza e delle risposte. 

 Grazie mille della pazienza e delle risposte.
Ciao
Cinzia

 solo i tipi di files cheinteressano a te.
Ho provato a cercare FileDialog nella guida di Access ma non è uscito 
nessu risultato utile.
In un certo modo ho più o meno risolto senza usare 
Application.FileDialog.Show, ora ti spiego.
In un primo momento all'evento click di un pulsante ho associato 
l'esecuzione di una macro che era formata da tre funzioni: la prima era 
un "Esegui Comando" e gli facevo eseguire proprio il comando "importa"; 
la seconda e la terza erano l'apertura di una maschera.
Purtroppo così non funzionava: appena facevo partire la macro si apriva 
la finestra di importazione, sceglievo il file DBF ma poi la macro si 
bloccava.
Allora poi ho praticamente scisso la macro su due pulsanti: sul primo è 
associato SOLO il DoCmd.RunCommand acCmdImport, mentre al secondo ho 
associato le altre due azioni.
Diciamo che mi va anche abbastanza bene questa soluzione "doppio click" 
(senza scomodare FileDialog che non ho mica capito come si usa, ma 
ammetto che devo ancora cercare bene), però mi piacerebbe che si potesse 
fare il tutto premendo un pulsante solo.
Qualche idea?????
Grazie mille!