Solved

Loop to insert multiple records

Posted on 2008-10-06
5
450 Views
Last Modified: 2013-11-27
Hi all, if I have the following, how would I set this up to loop through and insert multiple rows??   Like in the Select statement I could have a JB_ID with several lines to it, so then I would need the insert to insert multiple lines.. in Visual Studio 2005 VB??

Thanks
Dim BP_Req As Integer

        Dim IT_ID As String

        Dim BP_Desc As String

        Dim BP_Print_Desc As String

        Dim BP_DispOrder As Integer
 

        Dim sql6 As String = "Select BP_Req, IT_ID, BP_Desc, BP_Print_Desc, BP_DispOrder from bomPriEquip where JB_ID = @JB_ID"

        Using conn As New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("HCISDataCARsConnectionString").ConnectionString)

            Dim cmd As New SqlCommand(sql5, conn)

            cmd.Parameters.AddWithValue("@JB_ID", JB_ID)

            Dim reader As SqlClient.SqlDataReader

            cmd.Connection.Open()

            reader = cmd.ExecuteReader

            reader.Read()

            BP_Req = reader("BP_Req")

            IT_ID = reader("IT_ID")

            BP_Desc = reader("BP_Desc")

            BP_Print_Desc = reader("BP_Print_Desc")

            BP_DispOrder = reader("BP_DispOrder")

            cmd.Connection.Close()

        End Using
 

        Dim sql2 As String = "INSERT  INTO [bomPriEquip] (BP_Req, IT_ID, BP_Desc, BP_Print_Desc, BP_DispOrder) VALUES (@BP_Req, @IT_ID, @BP_Desc, @BP_Print_Desc, @BP_DispOrder)"

        Using conn As New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("HCISDataCARsConnectionString").ConnectionString)

            Dim cmd As New SqlCommand(sql1, conn)

            cmd.Parameters.Add(New SqlParameter("@BP_Req", BP_Req))

            cmd.Parameters.Add(New SqlParameter("@IT_ID", IT_ID))

            cmd.Parameters.Add(New SqlParameter("@BP_Desc", BP_Desc))

            cmd.Parameters.Add(New SqlParameter("@BP_Print_Desc", BP_Print_Desc))

            cmd.Parameters.Add(New SqlParameter("@BP_DispOrder", BP_DispOrder))

            cmd.Parameters.Add(New SqlParameter("@JB_IDNew", JB_IDNew))

            conn.Open()

            cmd.ExecuteNonQuery()

            cmd.Connection.Close()

        End Using

Open in new window

0
Comment
Question by:ratkinso666
  • 3
  • 2
5 Comments
 
LVL 15

Accepted Solution

by:
rob_farley earned 500 total points
ID: 22656013
Do it in one T-SQL command, rather than two:

INSERT  INTO [bomPriEquip] (BP_Req, IT_ID, BP_Desc, BP_Print_Desc, BP_DispOrder)
Select BP_Req, IT_ID, BP_Desc, BP_Print_Desc, BP_DispOrder from bomPriEquip where JB_ID = @JB_ID

This will put the results of the SELECT query straight into the INSERT statement - regardless of how many rows there are.

Hope this helps,

Rob
0
 

Author Comment

by:ratkinso666
ID: 22659392
I am trying this:
INSERT  INTO [bomPriEquipT] (JB_ID, BP_Req, IT_ID, BP_Desc, BP_Print_Desc, BP_DispOrder) values (@JB_IDNew, (Select BP_Req, IT_ID, BP_Desc, BP_Print_Desc, BP_DispOrder from bomPriEquip where JB_ID = @JB_ID))

but am getting this error:
Subqueries are not allowed in this context. Only scalar expressions are allowed.

I have to replace the JB_ID with the new one...
0
 

Author Comment

by:ratkinso666
ID: 22659467
I got it to work like this,
INSERT  INTO [bomPriEquipT] (JB_ID, BP_Req, IT_ID, BP_Desc, BP_Print_Desc, BP_DispOrder) Select @JB_IDNew, BP_Req, IT_ID, BP_Desc, BP_Print_Desc, BP_DispOrder from bomPriEquipT where JB_ID = @JB_ID

Thanks,
Randy
0
 

Author Closing Comment

by:ratkinso666
ID: 31503579
Thank you for your EXCELLENT solution!!!
0
 
LVL 15

Expert Comment

by:rob_farley
ID: 22665028
No worries. I'm pleased it's working for you.

And yes, you can't combine the VALUES and SELECT statements. But you can make a SELECT statement which just includes whatever you need to make it essentially the same as using VALUES.

Rob
0

Featured Post

What is SQL Server and how does it work?

The purpose of this paper is to provide you background on SQL Server. It’s your self-study guide for learning fundamentals. It includes both the history of SQL and its technical basics. Concepts and definitions will form the solid foundation of your future DBA expertise.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Why is this different from all of the other step by step guides?  Because I make a living as a DBA and not as a writer and I lived through this experience. Defining the name: When I talk to people they say different names on this subject stuff l…
This article explains how to reset the password of the sa account on a Microsoft SQL Server.  The steps in this article work in SQL 2005, 2008, 2008 R2, 2012, 2014 and 2016.
Via a live example, show how to shrink a transaction log file down to a reasonable size.
Using examples as well as descriptions, and references to Books Online, show the documentation available for datatypes, explain the available data types and show how data can be passed into and out of variables.

895 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now