Risolto Campo Calcolato ...

U

Utente cancellato 4920

Guest
Buondì a tutti, sto implementando un mio DB che uso al lavoro dove per evitare di inserire il link manualmente alla cartella dove ci andranno i pdf creati e vorrei automatizzarlo, in parte ci sono riuscito, non riesco a NON fargli fare uno \ nel caso manca un campo successivo.
Ovvero:
Visual Basic:
[Perc] & "\" & [CartellaCliente] & "\" & [Disegno] & "\" & [CartellaMacc] & "\" & [Variabile]
Può capitare che l'ultimo campo VARIABILE non sia presente perchè viene utilizzato per indicare il numero di revisione disegno, o altro, e se rimane vuoto mi inserisce lo \

\\NomePC\CartellaCliente\NumeroDisegno o Nome particolare\CartellaMacchina ---- Link corretto se escudo il campo Variabile dal codice

\\NomePC\CartellaCliente\NumeroDisegno o Nome particolare\CartellaMacchina\ ---- Link NON corretto nel caso manca la variabile

\\NomePC\CartellaCliente\NumeroDisegno o Nome particolare\CartellaMacchina\Variabile ---- Link corretto con variabile nel codice

Come posso evitare che mi insersca lo \ come nel esempio sopra in rosso
 

Powerwin

VBA Expert
Expert
17 Marzo 2016
5.487
215
vicino a Milano
2019
146
da adattare

Visual Basic:
Se Dir([Perc] & "\" & [CartellaCliente] & "\" & [Disegno], vbDirectory) <> vbNullString Then
   [Perc] & "\" & [CartellaCliente] & "\" & [Disegno] & "\" & [CartellaMacc] & "\" & [Variabile]
Else
   [Perc] & "\" & [CartellaCliente] & "\" & [Disegno] & "\" & [CartellaMacc]
End If
 
U

Utente cancellato 4920

Guest
Grazie FLavio, non devo fare il controllo sulla directory, cosi ho capito dal tuo codice, ma devo controllare che il campo "Variabile" è vuoto o pieno ... provo a metterlo in codice:
=IIF (identificativo di SE per excel) variabile è vuota, allora compila questi campi
Visual Basic:
[Perc] & "\" & [CartellaCliente] & "\" & [Disegno] & "\" & [CartellaMacc]
se è piena questi
Visual Basic:
[Perc] & "\" & [CartellaCliente] & "\" & [Disegno] & "\" & [CartellaMacc] & "\" & [Variabile]
Visual Basic:
=IIF ([Variable] ="" else [Perc] & "\" & [CartellaCliente] & "\" & [Disegno] & "\" & [CartellaMacc] Then [Perc] & "\" & [CartellaCliente] & "\" & [Disegno] & "\" & [CartellaMacc] & "\" & [Variabile])
 
U

Utente cancellato 4920

Guest
Se VARIABILE è vuota THEN Scrivi questi campi, ELSE scrivi in questi ....
Visual Basic:
=IIF ([Variabile] = "" THEN [Perc] & "\" & [CartellaCliente] & "\" & [Disegno] & "\" & [CartellaMacc]; ELSE [Perc] & "\" & [CartellaCliente] & "\" & [Disegno] & "\" & [CartellaMacc] & "\" & [Variabile])

Prima o poi ci arriverò da solo :confusostelle:
 

giulianovac

Access/VBA Expert
Expert
9 Giugno 2018
3.344
145
Italy
2019
247
@

Stai sbagliando completamente la sintassi della funzione IIF.

Non ti capisco: perché invece di chiedere ad un forum non ti studi PRIMA la guida?

Poi, tutte quelle parentesi quadre non a che servono?
 
U

Utente cancellato 4920

Guest
Non ti capisco: perché invece di chiedere ad un forum non ti studi PRIMA la guida?

Poi, tutte quelle parentesi quadre non a che servono?
Se inserisco i campi senza la IIF funziona tutto, ho provato a capirci da solo ma se ci arrivavo da solo non chiedevo aiuto.

Le parentesi quadre le inserisce ACCESS per identificare i campi del quando si usa lo strumento Generatore di espressioni e si dà conferma al campo suggerito in fase di scrittura
 
U

Utente cancellato 4920

Guest
Credendo che poteva andare bene il codice VBA e adattato.
Sbagliando si impara, ho sbagliato aproccio ....
 

giulianovac

Access/VBA Expert
Expert
9 Giugno 2018
3.344
145
Italy
2019
247
Devi spiegare il contesto. Altrimenti è difficile capire cosa suggerire.

A cosa serve?
Ad impostare un percorso? Ad aprire un file o una cartella? Dove è come richiami la query?
 
U

Utente cancellato 4920

Guest
Devi spiegare il contesto. Altrimenti è difficile capire cosa suggerire.
Ok provo a ri-spiegarlo:
Ho una maschera dove inserisco di dati prelevati da Caselle Combinate.
Man mano che inserisco i dati mi deve generare un link con i campi compilati, dove l'ultimo chiamato [Variabile] non è sempre compilato, ma viene usato in casi di cambio materiale che ha lo stesso disegno, revisioni di disegno o altro.

I campi che vengono riempieti sono appunto quelli tra le due [ ....]
Visual Basic:
[Perc] & "\" & [CartellaCliente] & "\" & [Disegno] & "\" & [CartellaMacc] & "\" & [Variabile]
al momento creo il link dalla tabella con il comando Campo Calcolato senza usare nessuna query.

Una volta che il campo [LINK] è completo con un evento doppio click mi si apre la directory generata.
Visual Basic:
Private Sub Link_DblClick(Cancel As Integer)

Dim valore As String

valore = "" & Link.Value
Me.Application.FollowHyperlink Address:=valore, NewWindow:=True

End Sub
il campo calcolato deve crearmi il link funzionante che il campo Variabile sia compilato che NON compliato, e non deve inserire lo \ alla fine

senza IIF funziona, se gli metto la condizione mi crea sempre l'errore di sintassi
 

giulianovac

Access/VBA Expert
Expert
9 Giugno 2018
3.344
145
Italy
2019
247
Se lo dicevi subito, ci saremmo risparmiati 15 post!
Ti serve per il futuro. ';)

Ti basta verificare: se l'ultimo carattere è il backslash "\" lo togli.
Tradotto in codice:
Codice:
valore =  "" & Link.Value     '''<<< Questa è la tua istruzione
valore = Iif(Right$(valore,1) = "\", Left$(valore, Len(valore) - 1), valore)
 
U

Utente cancellato 4920

Guest
Se lo dicevi subito, ci saremmo risparmiati 15 post!
Eh ... avevo descritto al post #1, ma forse non era chiara la spiegazioe

Provo


edit:
Visual Basic:
Dim valore As String
valore = "" & Link.Value      '''<<< Questa è la tua istruzione
valore = IIf(Right$(valore, 1) = "\", Left$(valore, Len(valore) - 1), valore)
Me.Application.FollowHyperlink Address:=valore, NewWindow:=True
End Sub
COn il tuo codice dovrebbe togliere lo \ se manca l'ultimo campo ?
Se è cosi non lo toglie e il risultato è:
\\NomePC\CartellaCliente\NumeroDisegno o Nome particolare\CartellaMacchina\

invece di:
\\NomePC\CartellaCliente\NumeroDisegno o Nome particolare\CartellaMacchina

Con anche l'ultimo campo il risultato corretto deve essere:
\\NomePC\CartellaCliente\NumeroDisegno o Nome particolare\CartellaMacchina\Variabile
 
Ultima modifica di un moderatore:

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!