jokeefe1130
asked on
Problem Updating a Database
I am having a problem updating information to a MS Access Database.
Before i code this much more, i simply have a link to a MS Access Database, a DataGridView, a TextBox, and a Button on Form1.
The database is linked and when running the program it pulls the columns from the database and populates the DataViewGrid. This DataViewGrid will not allow changes, i want the changes to occur in textboxs and that information then updated back to the database.
i am able to make the DataGridView change with the updated information from Textbox1, however that information is not being written back to the actual database and i can't seem to figure out why..
The code below is my source code for all of Form1, and Button1_Click.
Before i code this much more, i simply have a link to a MS Access Database, a DataGridView, a TextBox, and a Button on Form1.
The database is linked and when running the program it pulls the columns from the database and populates the DataViewGrid. This DataViewGrid will not allow changes, i want the changes to occur in textboxs and that information then updated back to the database.
i am able to make the DataGridView change with the updated information from Textbox1, however that information is not being written back to the actual database and i can't seem to figure out why..
The code below is my source code for all of Form1, and Button1_Click.
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'CsvFileDS.CSVFILE' table. You can move, or remove it, as needed.
Me.CSVFILETableAdapter.Fill(Me.CsvFileDS.CSVFILE)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim TempTable As DataTable = CsvFileDS.Tables("CSVFILE")
Dim NewEntry As DataRow = TempTable.NewRow
NewEntry("DOS") = TextBox1.Text
TempTable.Rows.Add(NewEntry)
End Sub
End Class
Me.CSVFILETableAdapter.Upd ate(YourDa taSetNameH ere)
ASKER
OK, that worked and i was able to update the information in the database, but now i have another problem... "NullReferenceException was unhandled", "Object reference not set to an instance of an object"
Dim TempTable As DataTable = Database1DataSet.Tables("CsvFile")
Dim NewEntry As DataRow = TempTable.NewRow '<--ERROR IS HERE
NewEntry("DOS") = "2009-07-08"
NewEntry("LOS") = "BLS"
NewEntry("PTNAME") = "DOE, JOHN"
TempTable.Rows.Add(NewEntry)
CsvTableTableAdapter.Update(Database1DataSet.CsvTable)
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Your Solution worked prefectly!
I will update the "Accept Solutions" shortly,
If you able to, i am also in need of a few other specifics with this same database.
1. Update an existing row/cell in the row
2. Delete the row
Your help is greatly appreciated, i havent worked with programming in many years and so much of the syntax and funcations have changed. Last time i worked with programming, the database interface was "recordset..." VB '97
Thank you very much
I will update the "Accept Solutions" shortly,
If you able to, i am also in need of a few other specifics with this same database.
1. Update an existing row/cell in the row
2. Delete the row
Your help is greatly appreciated, i havent worked with programming in many years and so much of the syntax and funcations have changed. Last time i worked with programming, the database interface was "recordset..." VB '97
Thank you very much
Hi
The .net database approach is slightly different then old VB. Then main idea is:
1. Connect to database, get info (TableAdapter(s).Fill), disconnect
2. Working with dataset (like database mirror) - adding new records, modifying, deleting in memory
3. Finally - connect to database again, update changes (tableAdapter(s).Update), disconnect.
3.1 Dataset.GetChanges gives changed records
3.2 Dataset.AcceptChanges marks those records as unchanged to repeat 2-3 steps
So, if using BindingSourse(s):
1. Connect to DB (Fill adapters)
2. set bindingsource(s) DataSource(=DataSet) and DatatMember(s)(=TableName( s))
3. Work wit bindingsourse(s)
3.1. Navigate: bs.Position=bs.Find("LOS", "BLS")
3.2 Add New (see my previous post)
3.3 Change Cells: bs("PTNAME")="whatever", bs("otherColumn") = "newString"
3.4 Delete bs.DeleteCurrent (or bs.Delete(bs(bs.Find("LOS" ,"BLS")))
3.4. Accept (bs.EndEdit) or discard (bs.CancelEdit) in-memory changes
4. Update DataBase (TableAdapter.Update)
The .net database approach is slightly different then old VB. Then main idea is:
1. Connect to database, get info (TableAdapter(s).Fill), disconnect
2. Working with dataset (like database mirror) - adding new records, modifying, deleting in memory
3. Finally - connect to database again, update changes (tableAdapter(s).Update), disconnect.
3.1 Dataset.GetChanges gives changed records
3.2 Dataset.AcceptChanges marks those records as unchanged to repeat 2-3 steps
So, if using BindingSourse(s):
1. Connect to DB (Fill adapters)
2. set bindingsource(s) DataSource(=DataSet) and DatatMember(s)(=TableName(
3. Work wit bindingsourse(s)
3.1. Navigate: bs.Position=bs.Find("LOS",
3.2 Add New (see my previous post)
3.3 Change Cells: bs("PTNAME")="whatever", bs("otherColumn") = "newString"
3.4 Delete bs.DeleteCurrent (or bs.Delete(bs(bs.Find("LOS"
3.4. Accept (bs.EndEdit) or discard (bs.CancelEdit) in-memory changes
4. Update DataBase (TableAdapter.Update)