Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [VB.NET] somma da database access in textbox

    Salve,
    sto realizzando un applicazione che possa gestire un file access esterno.
    Fino ad ora, grazie soprattutto al vostro aiuto, sono riuscito a caricare i dati su un datagridview, da quest'ultimo posso aggiungere dei record tramite delle textbox.
    Quello che vorrei riuscire ad ottenere è una textbox (nel mio caso textbox4) che in fase di caricamento della form mi visualizzi la somma dei campi "quantità" appartenenti alla tabella "fede" nel file "prova2".
    Cosa ancora più straordinaria sarebbe quella di applicare anche un filtro a questa somma tramite un'altro campo della stessa tabella.
    Spero di essere stato comprensibile..
    Grazie in anticipo e scusatemi per eventuali errori grossolani di programmazione...

    codice:
    Imports System.Data.OleDb
    
    Public Class Form1
        Private Sub aggiorna()
            Dim cn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Federico\Desktop\prova2.accdb;Persist Security Info=False;")
    
            Dim sql As String = "SELECT id, nome, quantità, scarica FROM fede ORDER BY quantità"
            Dim query As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(sql, cn)
            Dim ds As DataSet = New DataSet()
            cn.Open()
            query.Fill(ds)
    
            DataGridView1.AutoGenerateColumns = True
            DataGridView1.DataSource = ds.Tables(0)
    
            cn.Close()
            cn.Dispose()
            cn = Nothing
        
    End Sub
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
            aggiorna()
    
         End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles aggiungi.Click
            Using cn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Federico\Desktop\prova2.accdb;Persist Security Info=False;")
    
    cn.Open()
    
    Dim cminserisci As New OleDbCommand("INSERT INTO fede (id, nome, quantità, scarica) VALUES(?, ?,?, ?)", cn)
    
    cminserisci.Parameters.Add(New OleDb.OleDbParameter("@id", OleDb.OleDbType.Integer))
    cminserisci.Parameters.Add(New OleDb.OleDbParameter("@nome", OleDb.OleDbType.VarWChar))
    cminserisci.Parameters.Add(New OleDb.OleDbParameter("@quantità", OleDb.OleDbType.Integer))
    cminserisci.Parameters.Add(New OleDb.OleDbParameter("@scarica", OleDb.OleDbType.Boolean))
    
                cminserisci.Parameters(0).Value = TextBox1.Text
                cminserisci.Parameters(1).Value = TextBox2.Text
                cminserisci.Parameters(2).Value = TextBox3.Text
                cminserisci.Parameters(3).Value = CheckBox1.Checked
    
                cminserisci.ExecuteNonQuery()
                cn.Close()
                aggiorna()
            End Using
        End Sub
    
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Form2.Show()
        End Sub
    
        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
            Me.FedeTableAdapter.Fill(Me.Prova2DataSet.fede)
        End Sub
    End Class
    Ultima modifica di MItaly; 18-06-2014 a 00:30 Motivo: tag CODE

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    106
    Ciao,
    che framework usi? Comunque hai principalmente due strade:
    1) lo fai da query semplicemente aggiungendo un SUM(quantità).
    2) lo fai tramite linq (necessita del framework >= 3.5)

    Migliorie:
    1) nella sub aggiorna, usi giustamente un
    OleDbDataAdapter, quindi non devi gestire te la connessione!
    2) nella sub aggiorna, non usare mai accenti per chiamare i campi nel db!!!
    3) nella sub aggiorna, se tiri fuori una collezione unica, in questo caso una tramite query, usa un datatable non un dataset (un consiglio, non un errore!)
    4) nel click del button1, usa
    AddWithValue per passare parametri alla query, così non ti complichi la vita.


  3. #3
    Grazie mille per i consigli, cercherò di metterli subito in pratica.
    Il framework che utilizzo è il 4.0; nonostante ciò preferirei utilizzare la query con SUM.
    Avevo già provato, ma ho difficoltà a trasferire il risultato della query nella textbox4. Ti chiedo gentilmente di suggerirmi delle righe di codice..
    Grazie ancora

  4. #4
    Crdo di aver risolto con queste righe di codice:

    codice:
    Dim sql2 As String = "SELECT SUM(quantita) FROM fede WHERE nome = 'farina'"
    Dim sumquery As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(sql2, cn)
    Dim sumds As DataTable = New DataTable()
    sumquery.Fill(sumds)
    Me.TextBox4.Text = sumds.Rows(0).Item(0)
    Se voleste comunicarmi errori o eventuali migliorie ve ne sarei grato!
    Ultima modifica di MItaly; 18-06-2014 a 00:30 Motivo: Tag CODE

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    106
    In questi casi, è bene utilizzare executescalar
    http://msdn.microsoft.com/it-it/libr...v=vs.110).aspx

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.