come faccio s semplificare questa query?
inoltre vorrei estrarre i record e ordinarli in base ad ogni categoria associata e alla fine di ogni estrazione degli articoli della categoria aggiungere una riga nel datagrid con i totali parziali e alla fine di tutto i totali definitivi.
tipo nell'esempio in allegato
esempio
codice:
Dim anagr As System.Data.OleDb.OleDbDataReader
Dim dbComm As OleDbCommand = New OleDbCommand("SELECT * FROM articoli", conn)
dbComm.CommandType = CommandType.Text
Try
anagr = dbComm.ExecuteReader()
Catch ex As Exception
Exit Sub
End Try
Do While anagr.Read
Dim anagr3 As System.Data.OleDb.OleDbDataReader
Dim dbComm3 As OleDbCommand = New OleDbCommand("SELECT qta,prezzoV_1 FROM scarico where codice=@cod and data between @dat_i and @dat_f", conn) ' group by prezzoV_1,prezzoV_2", conn)
dbComm3.Parameters.AddWithValue("@cod", anagr("codice").ToString) '
dbComm3.Parameters.AddWithValue("@dat_i", dtinizio.Text)
dbComm3.Parameters.AddWithValue("@dat_f", dtfine.Text)
dbComm3.CommandType = CommandType.Text
Try
anagr3 = dbComm3.ExecuteReader()
Catch ex As Exception
Exit Sub
End Try
Dim prezzo As Decimal = "0,00"
Do While anagr3.Read
tot_scar = CDec(tot_scar) + CDec(anagr3("prezzoV_1"))
q_scar = q_scar + CDec(anagr3("qta"))
prezzo = anagr3("prezzoV_1")
Loop
Try
q_res = anagr("quantita").ToString
tot_res = CDec(prezzo * q_res)
Catch
End Try
Dim anagr2 As System.Data.OleDb.OleDbDataReader
Dim dbComm2 As OleDbCommand = New OleDbCommand("SELECT quantita, prezzo FROM documenti_acq where codice=@cod", conn)
dbComm2.Parameters.AddWithValue("@cod", anagr("codice").ToString)
dbComm2.CommandType = CommandType.Text
Try
anagr2 = dbComm2.ExecuteReader()
Catch ex As Exception
Exit Sub
End Try
Do While anagr2.Read
Try
q_car = q_car + anagr2("quantita")
tot_car = tot_car + (CDec(anagr2("prezzo") * anagr2("quantita")))
Catch
End Try
'tot_car = tot_car * q_car
Loop
DataGrid.Rows.Add(anagr("codice").ToString, anagr("descrizione").ToString, q_car, FormatNumber(CDec(tot_car), 2, TriState.UseDefault), q_scar, FormatNumber(CDec(tot_scar), 2, TriState.UseDefault), FormatNumber(CDec(tot_scar) - CDec(tot_car), 2, TriState.UseDefault), q_res, FormatNumber(CDec(tot_res), 2, TriState.UseDefault), q_scar - q_car)
q_scar = 0
tot_scar = "0,00"
q_car = 0
tot_car = "0,00"
q_res = 0
tot_res = "0,00"
Loop