lithium1976
Member
- Joined
- Sep 11, 2008
- Messages
- 6
- Programming Experience
- Beginner
Hello, this is my first post here, and I am hoping it is a vb.net question, although I am using sql stored procedures also.
I am having some trouble inserting a record into its related table.
I am desinging my database front end in vs2008 vb.net, and the database itself is just 2 tables in SQL Server Management Studio Express -
tblCustomers
customerID (primary key)
customerName
customerAddress
tblBookings
BookingsID (primary key)
customerID
datebookingplaced
I am using two datagridviews to display the two the tables - dgvCustomers, and dgvBookings. I have set up the vb.net relationship between the two tables - one Customer has many Bookings (one customerID eg 001 can have many bookingsID's)
So, firstly I select/highlight a customer (eg customerID 001) from dgvCustomers. Next, I select an empty row from dgvBookings which creates a unique bookingsID for that row and adds customerID 001 to the customerID column in dgvBookings.
This is working ok up to this point. What I cannot next do is actually save/inesert/update the related customerID in dgvBookings into tblBookings. If I press the update button the row just goes blank and nothing gets saved. To make the save work I have to delete the related customerID from dgvBookings and type it in myself. Then I hit my update button. When I type in myself it puts the datagridview into EditMode (the pencil icon appears).
How do I save the related bookingsID and customerID in dgvBookings to my tblBookings without having to type into the datagridview? I want it to work like this - when I select an empty row in dgvBookings the bookingsID is created and the related customerID is added. I just want to click my update button to save the data from dgvbookings into tblBookings - without having to delete the customerID and type it back in myself.
Here is the code I am using -
My update button is -
My insert and update stored procedures are -
I am having some trouble inserting a record into its related table.
I am desinging my database front end in vs2008 vb.net, and the database itself is just 2 tables in SQL Server Management Studio Express -
tblCustomers
customerID (primary key)
customerName
customerAddress
tblBookings
BookingsID (primary key)
customerID
datebookingplaced
I am using two datagridviews to display the two the tables - dgvCustomers, and dgvBookings. I have set up the vb.net relationship between the two tables - one Customer has many Bookings (one customerID eg 001 can have many bookingsID's)
So, firstly I select/highlight a customer (eg customerID 001) from dgvCustomers. Next, I select an empty row from dgvBookings which creates a unique bookingsID for that row and adds customerID 001 to the customerID column in dgvBookings.
This is working ok up to this point. What I cannot next do is actually save/inesert/update the related customerID in dgvBookings into tblBookings. If I press the update button the row just goes blank and nothing gets saved. To make the save work I have to delete the related customerID from dgvBookings and type it in myself. Then I hit my update button. When I type in myself it puts the datagridview into EditMode (the pencil icon appears).
How do I save the related bookingsID and customerID in dgvBookings to my tblBookings without having to type into the datagridview? I want it to work like this - when I select an empty row in dgvBookings the bookingsID is created and the related customerID is added. I just want to click my update button to save the data from dgvbookings into tblBookings - without having to delete the customerID and type it back in myself.
Here is the code I am using -
VB.NET:
Dim conn As New SqlConnection("Integrated Security=SSPI;Persist Security Info=False;" & "Initial Catalog=bookingsdbNEW;Data Source=TOM-PC\SQLEXPRESS")
Dim ds As New DataSet
Dim datatable As DataTable
'tblcustomers
Dim CustomersDataAdapter As New SqlDataAdapter("SELECT * from tblcustomers", conn)
Dim CustomersBindingSource As New BindingSource() 'for tblcustomers
'tblbookings
Dim BookingsDataAdapter As New SqlDataAdapter("SELECT * from tblbookings", conn)
Dim BookingsBindingSource As New BindingSource() 'for tblbookings
Private Sub test_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Preparing tblcustomers
CustomersDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
CustomersDataAdapter.Fill(ds, "tblcustomers")
datatable = ds.Tables("tblcustomers")
CustomersBindingSource.DataSource = ds
CustomersBindingSource.DataMember = "tblCustomers"
dgvCustomers.DataSource = CustomersBindingSource
'Preparing tblCustomers-tblBookings Relationship
BookingsDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
BookingsDataAdapter.Fill(ds, "tblbookings")
datatable = ds.Tables("tblbookings")
Dim relation As New DataRelation("CustomersBookings", _
ds.Tables("tblCustomers").Columns("CustomerID"), _
ds.Tables("tblbookings").Columns("CustomerID"))
ds.Relations.Add(relation)
BookingsBindingSource.DataSource = CustomersBindingSource
BookingsBindingSource.DataMember = "CustomersBookings"
dgvBookings.DataSource = BookingsBindingSource
'Insert Customer to Bookings table
Dim AddCustomerToBookingsInsertCommand As New SqlCommand("testInsert", conn)
AddCustomerToBookingsInsertCommand.CommandType = CommandType.StoredProcedure
AddCustomerToBookingsInsertCommand.Parameters.Add("@bookingsID", SqlDbType.Int, 100, "bookingsID")
AddCustomerToBookingsInsertCommand.Parameters.Add("@customerID", SqlDbType.Int, 100, "customerID")
BookingsDataAdapter.InsertCommand = AddCustomerToBookingsInsertCommand
'Update Customer to Bookings
Dim AddCustomerToBookingsUpdateCommand As New SqlCommand("testUpdate", conn)
AddCustomerToBookingsUpdateCommand.CommandType = CommandType.StoredProcedure
AddCustomerToBookingsUpdateCommand.Parameters.Add("@customerID", SqlDbType.Int, 100, "customerID")
BookingsDataAdapter.UpdateCommand = AddCustomerToBookingsUpdateCommand
My update button is -
VB.NET:
BookingsDataAdapter.Update(ds, "tblBookings")
My insert and update stored procedures are -
VB.NET:
ALTER PROCEDURE [dbo].[testInsert]
(@bookingsID as int,
@customerID as int)
AS
SET IDENTITY_INSERT tblbookings ON
INSERT INTO tblBookings (bookingsID, customerID)
VALUES(@bookingsID,@customerID)
ALTER PROCEDURE [dbo].[testUpdate]
(@customerID as int)
AS
UPDATE tblBookings SET
customerID = @customerID
WHERE customerID = @customerID