Public Sub rigenera()
query = "Select data, proprietario,importo From Entrate where id_ana=" & id_condominio & " and anno=" & id_anno & " order by proprietario"
cmd = New OleDbCommand(query, cnn)
cnn.Open()
dr = cmd.ExecuteReader
While dr.Read
Dim vdata As String = MonthName(Month(dr(0)))
Dim vproprietario As String = dr(1)
Dim vimporto As Double = dr(2)
query2 = "SELECT condomino, id FROM proprietari WHERE condomino='" & vproprietario & "' and id_ana=" & id_condominio & " AND anno=" & id_anno & " ORDER BY condomino"
cmdproprietari = New OleDbCommand(query2, cnn)
drproprietari = cmdproprietari.ExecuteReader
If drproprietari.HasRows Then
drproprietari.Read()
Dim vId As String = drproprietari(1)
drproprietari.Close()
query2 = "Update proprietari set " & vdata & "=" & vdata & "+" & vimporto & " where id=" & vId
cmdproprietari = New OleDbCommand(query2, cnn)
cmdproprietari.ExecuteNonQuery()
End If
End While
cnn.Close()
MsgBox("Fine lavoro")
End sub
Le linee che mi danno errore sono di sintassi nella query UPDATE sono le seguenti:
query2 = "Update proprietari set " & vdata & "=" & vdata & "+" & vimporto & " where id=" & vId
cmdproprietari = New OleDbCommand(query2, cnn)
cmdproprietari.ExecuteNonQuery().
In sintesi,l'errore è dovuto al fatto che vimporto può contenere valore anche decimali.
L'errore non è più rilevato da Access se sostituisco le "," con il punto "."
Ho provato ad usare Replace su query2 ,ma la query continua a contenere il valore decimale con la virgola.
L'uso di arrotondamenti non è possibile,perchè il calcolo deve essere preciso.