views:

73

answers:

2

I've just started to learn VB.Net and SQL. Now I'm creating my first software but I have a problem: I have two tables in my database and I managed to transfer data from table1 to table2. How can I just insert specific rows from table1 to table2. I don't want to copy all the data in table1 to table2; I just want to copy the selected rows.

Here's my code:

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click       
        cmd.CommandText = "INSERT INTO returns(Department, Purpose, Item_details, Requested_by, Approved_by, ReturnDate) SELECT Department, Purpose, Items_Details, Requested_by, Approved_by, Date FROM borrow WHERE Date= '" & Today.Date.ToShortDateString & "';"
        cmd.Connection = con
        Try
            con.Open()
            cmd.ExecuteNonQuery()
        Finally
            con.Close()
        End Try                
End Sub

I have a listbox which has a sourcebinding which is borrow and I only want the selected items single row to be transferred to my table returns but I don't know how to do it. Whenever I click the button, everything in table borrow will be copied to table returns.

A: 

You need to get the selected row criteria from the listbox and add that to the where clause of your sql.

Beth
Thank you.. can u give me a sample code on how to get row criteria in a listbox?..
Joegabb
http://www.startvbdotnet.com/controls/listbox.aspx
Beth
Hi i made some changes but im getting "Public member 'Selected' on type 'DataRowView' not found." when i run my code..
Joegabb
You may need more help than I can provide here. To refer to the selected row in a listbox, see @Tim Murphy 's example, using param.Value = listBox.SelectedValueYou'll need to iterate through all of the listbox's selected values if you're allowing more than one.
Beth
+2  A: 

As suggested in other comments is a good idea to get in the habit of not to use string concatenation for parameter values in a SQL statement.

The following code demonstrates how to use SQL parameters and get the row criteria from the list box.

Private Sub Button1_Click(ByVal sender As System.Object,
                      ByVal e As System.EventArgs
) Handles button1.Click

    ' Note that I am using an XML literal to improve code readability. '
    Dim insertCommand = <xml>
        INSERT INTO returns(
            Department, 
            Purpose, 
            Item_details, 
            Requested_by, 
            Approved_by, 
            ReturnDate
        ) 
        SELECT
            Department, 
            Purpose, 
            Items_Details, 
            Requested_by, 
            Approved_by, 
            Date 
        FROM borrow 
        WHERE BorrowId = @BorrowId;
    </xml>

    Dim param = cmd.CreateParameter()
    param.ParameterName = "@BorrowId"
    param.Value = listBox.SelectedValue

    cmd.CommandText = insertCommand.Value
    cmd.Parameters.Add(param)

    cmd.Connection = con
    Try
        con.Open()
        cmd.ExecuteNonQuery()
    Finally
        con.Close()
    End Try

End Sub
Tim Murphy
Thanks for teaching me how to work with parameters^^.. really appreciate it.. but still can't figure out how to add only the rows i selected..
Joegabb
Im getting an error No mapping exists from object type System.Data.DataRowView to a known managed provider native type.
Joegabb
What UI are using WinForms or WPF?
Tim Murphy
I now see you've started a new question http://stackoverflow.com/questions/3775543/vb-net-im-getting-an-error for this error. Lets move the conversation to that question we I believe its not related to your original question.
Tim Murphy