Ho un database con le due seguenti tabelle:
1) Registro_ordinanze, con i campi seguenti:
ID (Contatore)
VIA (Testo)
Cod_via (Numerico)
Ordinanza (Numerico)
2) Codici, con i campi seguenti:
Cod_new (Numerico), collegato con Cod_via di Registro_ordinanze
Toponimo (Testo)
Ogni toponimo corrisponde a uno e un solo cod_new numerico nella tabella codici. A cod_via di registro_ordinanze corrispondono più valori di ordinanza. Ho creato un form per l'inserimento di nuove ordinanze; l'utente sceglie la via da una casella combinata e una casella di testo visualizza automaticamente il numero di cod_via corrispondente (questo sono riuscito a farlo, riporto il codice di seguito).
- Codice: Seleziona tutto
Private Sub MascVia_AfterUpdate()
Dim rstCodici As New ADODB.Recordset
rstCodici.Open "codici", CurrentProject.Connection, adOpenForwardOnly
Do Until rstCodici.EOF
If rstCodici!Toponimo = MascVia Then
TestoCodVia = rstCodici!Cod_new
Exit Sub
Else
rstCodici.MoveNext
End If
Loop
rstCodici.Close
Set rstCodici = Nothing
End Sub
Ora il problema: vorrei inserire un'altra casella di testo che visualizzi il nuovo numero di ordinanza, che deve essere ovviamente maggiorato di uno rispetto al valore più alto corrispondente al cod_via. Esempio: se seleziono cod_via=253 e ad essa corrisponde MaxOrdinanza=4, il nuovo valore da attribuire dovrà essere MaxOrdinanza+1.
Ho provato a inserire nel codice il riferimento ad una query all'uopo predisposta (Max_ordinanza), la riporto:
- Codice: Seleziona tutto
SELECT codici.Cod_new, codici.Tipo, codici.Toponimo, Max(Registro_ordinanze.Ordinanza) AS MaxDiOrdinanza
FROM Registro_ordinanze RIGHT JOIN codici ON Registro_ordinanze.Cod_Via = codici.Cod_new
GROUP BY codici.Cod_new, codici.Tipo, codici.Toponimo;
ma non ha sortito l'effetto desiderato.
In sostanza ho provato a inserire nel codice sopra riportato il riferimento al valore della query per scrivere nella casella di testo NumOrd il nuovo numero di ordinanza.
- Codice: Seleziona tutto
Private Sub MascVia_AfterUpdate()
Dim rstCodici As New ADODB.Recordset
Dim rstOrd As New ADODB.Recordset
rstCodici.Open "codici", CurrentProject.Connection, adOpenForwardOnly
rstOrd.Open "Max_ordinanza", CurrentProject.Connection, adOpenForwardOnly
Do Until rstCodici.EOF
If rstCodici!Toponimo = MascVia Then
TestoCodVia = rstCodici!Cod_new
NumOrd = rstOrd!MaxDiOrdinanza + 1
Exit Sub
Else
rstCodici.MoveNext
End If
Loop
rstCodici.Close
rstOrd.Close
Set rstCodici = Nothing
Set rstOrd = Nothing
End Sub
Come posso fare per risolvere il problema?
Grazie per l'aiuto!