Public Function non interpreta valori Null

di il
7 risposte

Public Function non interpreta valori Null

Ho una query con un campo che fa riferimento a una Public Function scritto così:
Città, Luogo: CittàLuogo([Città];[Luogo])

Poi ho questa


Public Function CittàLuogo(Città As String, Luogo As String) As String
Dim strCL As String
If (Città = "0") And (Len(Luogo & vbNullString) = 0) Then strCL = ""
If (Città = "0") And (Len(Luogo & vbNullString) > 0) Then strCL = Luogo
If (Città <> "0") And (Len(Luogo & vbNullString) = 0) Then strCL = Città
If (Città <> "0") And (Len(Luogo & vbNullString) > 0) Then strCL = Città & ", " & Luogo
CittàLuogo = strCL
End Function

Accade che se in Luogo vi è Null, nella query appare #Errore oppure #Tipo. Per il momento ho aggirato il problema sostituendo tutti i Null in Luogo con stringa-lunghezza-zero…ma…
Forse invece di tante If, meglio Select Case? Ma non riesco a scrivere la sintassi adeguata!
Dove sbaglio? Consigli?

7 Risposte

  • Re: Public Function non interpreta valori Null

    Se il problema è solo il Null puoi usare la funzione Nz così:

    Public Function CittàLuogo(Città As String, Luogo As String) As String
    
    Select case Città
    Case "0"
    	CittàLuogo = Nz(Luogo;"") 
    Case Else
      	If isnull(Luogo) then CittàLuogo = Città Else: CittàLuogo = Città & ", " & Luogo  
    End Select
    End Function
  • Re: Public Function non interpreta valori Null

    Non capisco cosa hai contro la funzione Len(). Perché sostieni di stare ad aggirare il problema?

  • Re: Public Function non interpreta valori Null

    25/02/2023 - Antony73 ha scritto:


    Non capisco cosa hai contro la funzione Len(). Perché sostieni di stare ad aggirare il problema?

    Ti riferisci a me? Proprio perchè credevo di conoscerla bene ho usato tale sintassi. Ma non so perchè non funziona quando Luogo è Null.
    Ho la sensazione che è infelice l'idea dei 4 If disposti in quella maniera…ma…boh!

  • Re: Public Function non interpreta valori Null

    Ad ogni modo io avrei pensato subito di ricorrere ad una iif annodata anziché a una funzione.

  • Re: Public Function non interpreta valori Null

    La funzione è scritta male… non è LEN il problema… serve capire sempre bene.

    Se il parametro che hai dichiarato è Type String non può accettare null.

    Se deve accettare null devi dichiararlo VARIANT.

  • Re: Public Function non interpreta valori Null

    25/02/2023 - @Alex ha scritto:


    Se il parametro che hai dichiarato è Type String non può accettare null.

    Se deve accettare null devi dichiararlo VARIANT.

    Vero, dopo tanto tempo lo avevo dimenticato. Riscritto il primo rigo così

    Public Function CittàLuogo(Città, Luogo) As String

    ora funziona.

    Grazie.

  • Re: Public Function non interpreta valori Null

    Abituati a Dichiarare sempre… lo fa chi è esperto… per questione di visibilità e pulizia… per chi ha poca dimestichezza il METODO dovrebbe essere la prima cosa da imparare, le assunzioni di Default non sono indice di esperienza… anzi.

    Public Function CittàLuogo(Città As Variant, Luogo As Variant) As String
Devi accedere o registrarti per scrivere nel forum
7 risposte