Je suis en train de réaliser un projet pour mon sujet de gestion de base de données. Je ne peux pas comprendre comment ajouter un montant à un montant ajouté précédemment. Pour l'instant, je ne peux que mettre à jour le montant. Voici le code. Je suis désolé si je ne peux pas bien l'expliquer.VB.net/MS Accès Dons mensuels Assistance système
J'ai 2 formes. Mon premier formulaire me permet d'entrer un nom de famille et de récupérer les données dans ma liste.
Mon deuxième formulaire me permet de récupérer les données que j'ai saisies dans mon premier formulaire et il apparaîtra sur une vue de liste séparée avec un onglet "Nom | Montant".
J'ai deux zones de texte. Un pour le nom de famille mis en lecture seule pour désactiver l'édition, et un autre pour le montant que je veux entrer.
Après avoir saisi un montant, disons 20, il mettra à jour sur la listview et ma base de données 20.
Le problème est que quand je rentre dans un nouveau montant pour le même nom de famille, disons 30, la 30 va remplacer le 20 mais il devrait être 50 parce que 20 + 30 = 50.
Je comprends la logique et j'ai essayé d'ajouter une autre zone de texte pour l'addition mais je ne connais tout simplement pas les codes pour cela.
Imports System.Data.OleDb
Public Class Form2
Dim conString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Israel De Leon\Documents\testing.accdb;"
Dim con As OleDbConnection = New OleDbConnection(conString) 'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Database2.accdb
Dim cmd As OleDbCommand
Dim adapter As OleDbDataAdapter
Dim dt As DataTable = New DataTable()
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'SET LISTVIEW PROPERTIES
ListView1.View = View.Details
ListView1.FullRowSelect = True
'Construct Columns
ListView1.Columns.Add("Last Name", 100)
ListView1.Columns.Add("Amount", 100)
End Sub
Private Sub UpdateLV(lname As String)
'Updates last name and amount entered into the database
Dim sql As String = "UPDATE Table1 SET LastName='" + TextBox1.Text + "',Amount='" + TextBox2.Text + "' WHERE LastName='" + lname + "'"
cmd = New OleDbCommand(sql, con)
'OPEN CON, EXECUTE, UPDATE, CLOSE
Try
con.Open()
adapter = New OleDbDataAdapter(cmd)
adapter.UpdateCommand = con.CreateCommand()
adapter.UpdateCommand.CommandText = sql
If (adapter.UpdateCommand.ExecuteNonQuery() > 0) Then
MsgBox("Successfully Updated")
End If
con.Close()
Retrieve()
ClearBox()
Catch ex As Exception
MsgBox(ex.Message)
con.Close()
End Try
End Sub
Private Sub Retrieve()
ListView1.Items.Clear()
'SQL STM
Dim sql As String = "SELECT * FROM Table1 "
cmd = New OleDbCommand(sql, con)
'OPEN CON, RETRIEVE, FILL LISTVIEW
Try
con.Open()
adapter = New OleDbDataAdapter(cmd)
adapter.Fill(dt)
'LOOP THROUGH DT
For Each row In dt.Rows
Populate(row(0), row(1)) 'Index of database row
Next
'CLEAR DATATABLE
dt.Rows.Clear()
con.Close()
Catch ex As Exception
MsgBox(ex.Message)
con.Close()
End Try
End Sub
Private Sub Populate(lname As String, aamount As String)
'ROW ARRAY
Dim row As String() = New String() {lname, aamount}
Dim item As ListViewItem = New ListViewItem(row)
'ADD TO ROWS COLLECTION
ListView1.Items.Add(item)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Retrieve()
End Sub
Private Sub ListView1_MouseClick(sender As Object, e As MouseEventArgs) Handles ListView1.MouseClick
Dim llname As String = ListView1.SelectedItems(0).SubItems(0).Text
Dim amounts As String = ListView1.SelectedItems(0).SubItems(1).Text
TextBox1.Text = llname
TextBox2.Text = amounts
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim amounts As String = ListView1.SelectedItems(0).SubItems(0).Text
UpdateLV(amounts)
End Sub
Private Sub ClearBox()
TextBox1.Text = ""
TextBox2.Text = ""
End Sub
End Class
Ceci est un prototype d'ailleurs. Ne me dérange pas la conception, j'ai vraiment besoin d'aide pour les fonctions. Je vous remercie!! –
Aviez-vous vraiment un champ de base de données nommé _Amounts_ de type string (text in access)? – Steve
@Steve Le type de données est un numéro bon monsieur. –