Newsgroup: it.comp.appl.access
Titolo: Utilizzo DMAX con criterio in VBA

Salve a tutti,
ho un DB per la creazione delle fatture della mia azienda... Fino ad
ora avevo una sola causale di emissione delle fatture (Vendita) e
quindi avevo una formula impostata, all'interno della proprietà
"Valore Predefinito" del campo numero, che mi permetteva l'inserimento
automatizzato dei numeri fattura. Ecco il codice da me impostato:
=Format(Date();"aa") & "/" &
Format(IIf(IsNull(DMax("[Numero]";"[Fattura]";"[Numero] like '" &
Format(Date();"aa") & "/?????'"));
1;Right(DMax("[Numero]";"[Fattura]";"[Numero] like '" &
Format(Date();"aa") & "/?????'");5)+1);"00000")
Fin qui tutto OK, nel senso che le mie fatture hanno una numerazione
di questo tipo:
10/00001
10/00002
ecc...
Da quest'anno ho aggiunto una nuova causale e quindi anche la
fatturazione dovrà avere due numerazioni differenti, vorrei far
apparire A nel caso di vendita davanti alle prime due cifre (che come
avrete capito raprresentano l'anno) e una C nel caso della
consulenza... pertanto il codice modificato è il seguente:
=IIf([Tipo]='Consulenza';"C" & Format(Date();"aa") & "/" &
Format(IIf(IsNull(DMax("[Numero]";"[Fattura]";"[Numero] like '" & "C"
& Format(Date();"aa") & "/?????'"));
1;Right(DMax("[Numero]";"[Fattura]";"[Numero] like '" & "C" &
Format(Date();"aa") & "/?????'");5)+1);"00000");"A" &
Format(Date();"aa") & "/" &
Format(IIf(IsNull(DMax("[Numero]";"[Fattura]";"[Numero] like '" & "A"
& Format(Date();"aa") & "/?????'"));
1;Right(DMax("[Numero]";"[Fattura]";"[Numero] like '" & "A" &
Format(Date();"aa") & "/?????'");5)+1);"00000"))
Fin qui tutto ok!!!! Il problema sorge quando sull'evento "Su
Modifica" del campo TIPO (ovvero il campo dove specifico la causale)
provo ad avventurarmi in VBA.... per il momento sono riuscito a
risolvere la prima parte del numero... in questo modo:
Dim NumeroFattura As String
Dim TipoFattura As String
TipoFattura = Me.Tipo.Value
If (TipoFattura = "Consulenza") Then
NumeroFattura = "C" & Format(Date, "yy") & "/"
Else
NumeroFattura = "A" & Format(Date, "yy") & "/"
End If
Me.Numero.Value = NumeroFattura
Il problema è che non riesco con la funzione DMAX ad impostare nel
giusto modo il criterio e anche ad abbinare la funzione RIGHT!!!
Nessuno di voi mi potrebbe indicare la strada da percorrere?! Grazie a
tutti
SimoneB


Ecco il codice, a forza di riprovare ci sono riuscito:
Dim NumeroFattura As String
Dim TipoFattura As String
TipoFattura = Me.Tipo.Value
If (TipoFattura = "Consulenza") Then
NumeroFattura = "C" & Format(Date, "yy") & "/" &
Format(IIf(IsNull(DMax("Numero", "Fattura", "Numero like '" & "C" &
Format(Date, "yy") & "/?????'")), 1, Right(DMax("Numero", "Fattura",
"Numero like '" & "C" & Format(Date, "yy") & "/?????'"), 5) + 1),
"00000")
Else
NumeroFattura = "A" & Format(Date, "yy") & "/" &
Format(IIf(IsNull(DMax("Numero", "Fattura", "Numero like '" & "A" &
Format(Date, "yy") & "/?????'")), 1, Right(DMax("Numero", "Fattura",
"Numero like '" & "A" & Format(Date, "yy") & "/?????'"), 5) + 1),
"00000")
End If
Me.Numero.Value = NumeroFattura
Grazie a tutti quelli che mi hanno letto e chiedo scusa se sono
arrivato alla soluzione dopo aver postato il seguente messaggio....
spero che serva a qualcuno nel futuro
SimoneB