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

Rispondi quotando