[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

Macro to insert in SQL 2008

Posted on 2016-07-14
11
Medium Priority
?
61 Views
Last Modified: 2016-07-16
Hello,
can you please help.
Attached is a sample data.
I need to insert a note to each order into my SQL database.
need to find the highest NoteNumber, then add 1.

Option Explicit
Sub Insert_Notes()
Dim sh As Worksheet
Dim cnn As adodb.Connection
Set sh = Sheets("Import")
Dim rs As New adodb.Recordset
Dim sql As String
Set cnn = New adodb.Connection

cnn.Open "Provider=SQLOLEDB.1;User ID=sa; password=xxxx;Initial Catalog=xxxx;Data Source=111.111.111.111;"

SET IDENTITY_INSERT ActiverNotes ON
INSERT INTO ActiveNotes (NoteNumber,OrderNo,NoteText,EnteredBy,EnteredOnDate,IsPublicNote,OrderNoteTypeID) VALUES (MAX(NoteNumber)+1,Order Numbers from Column "AL",'Tracking from Column "AK"','System','Date from Column "AM"',4)
SET IDENTITY_INSERT ActiveNotes OFF
Commit
End Sub

Your help is very much Appreciated.
Book1.xls
0
Comment
Question by:W.E.B
  • 6
  • 5
11 Comments
 
LVL 43

Expert Comment

by:Eugene Z
ID: 41711483
if your NoteNumber is auto-incremental - it will be populated for each insert

if it is not you need - please clarify


Sub Insert_Notes()
Dim sh As Worksheet
Dim cnn As adodb.Connection
Set sh = Sheets("Import")
Dim rs As New adodb.Recordset
Dim sql As String
Set cnn = New adodb.Connection

cnn.Open "Provider=SQLOLEDB.1;User ID=sa; password=xxxx;Initial Catalog=xxxx;Data Source=111.111.111.111;"


INSERT INTO ActiveNotes (OrderNo,NoteText,EnteredBy,EnteredOnDate,IsPublicNote,OrderNoteTypeID) 
VALUES ( 'Order Numbers', 'from Column "AL"','Tracking from Column "AK"','System','Date from Column "AM"',4)

Commit
End Sub

Open in new window

0
 

Author Comment

by:W.E.B
ID: 41711487
Hello,
I need to insert the next note Number.
0
 
LVL 43

Expert Comment

by:Eugene Z
ID: 41711499
if your ActiveNotes  table's column NoteNumber is set as the identity column <=> auto incremental
you'll get the next number

---

if it is not  or you have some specific  logic (it is just an idea)
you can try this not

SET IDENTITY_INSERT ActiverNotes ON
INSERT INTO ActiveNotes (NoteNumber,OrderNo,NoteText,EnteredBy,EnteredOnDate,IsPublicNote,OrderNoteTypeID) 
Select (select MAX(NoteNumber)+1 from ActiveNotes ) as MAX_NoteNumber,'Order Numbers ','from Column "AL"','Tracking from Column "AK"','System','Date from Column "AM"',4
SET IDENTITY_INSERT ActiveNotes OFF

Open in new window

0
Get your Disaster Recovery as a Service basics

Disaster Recovery as a Service is one go-to solution that revolutionizes DR planning. Implementing DRaaS could be an efficient process, easily accessible to non-DR experts. Learn about monitoring, testing, executing failovers and failbacks to ensure a "healthy" DR environment.

 

Author Comment

by:W.E.B
ID: 41711506
Ho w do I insert the orders one after another?
Dim i as Integer,
next i,...

I wanted it to go through the orders one after another till last raw in column?
Thanks
0
 
LVL 43

Expert Comment

by:Eugene Z
ID: 41711512
did you review the posted above code?
0
 

Author Comment

by:W.E.B
ID: 41711520
HI EugeneZ
What I meant
'Order Numbers ','from Column "AL"',
'Tracking from Column "AK"','
'Date from Column "AM"'

How do I get these into my Insert?
0
 
LVL 43

Expert Comment

by:Eugene Z
ID: 41711536
so far
we know from you code

that table  ActiveNotes
has columns
NoteNumber,OrderNo,NoteText,EnteredBy,EnteredOnDate,IsPublicNote,OrderNoteTypeID

can you tell more about
'Order Numbers ','from Column "AL"',
'Tracking from Column "AK"','
'Date from Column "AM"'?

for example from what table is AL column?

what does it mean 'Order Numbers ','from Column "AL"',?
can you illustrate?
0
 

Author Comment

by:W.E.B
ID: 41711547
In My original question, I attached  a sample excel.
in Column AL , I have my order numbers
Column AK, I Have the NoteText
Column AM, I have the Date

I Get the excel sheet daily with Different order numbers (Column AL), notes (Column AK), dates (cOLUMN AM).

I need to insert into the database.

I'll  put the values into Column AL, AK, AM.

so,
Insert into My database the value for Note, date,.. for orderNumber in Raw 2
then, Raw 3, Then Raw 4,.... till last.

Thanks,
0
 
LVL 43

Accepted Solution

by:
Eugene Z earned 2000 total points
ID: 41711553
I see
in order to import data from excel
using vbscript you can use this code as an example from http://tomaslind.net/2013/12/26/export-data-excel-to-sql-server/

Sub Button1_Click()
     
    Dim conn As New ADODB.Connection
    Dim iRowNo As Integer
    Dim sCustomerId, sFirstName, sLastName As String
  
    With Sheets("Sheet1")
            
        'Open a connection to SQL Server
        conn.Open "Provider=SQLOLEDB;Data Source=ASUSBOOK\SQL2012;Initial Catalog=ExcelDemo;Integrated Security=SSPI;"
            
        'Skip the header row
        iRowNo = 2
            
        'Loop until empty cell in CustomerId
        Do Until .Cells(iRowNo, 1) = ""
            sCustomerId = .Cells(iRowNo, 1)
            sFirstName = .Cells(iRowNo, 2)
            sLastName = .Cells(iRowNo, 3)
                
            'Generate and execute sql statement to import the excel rows to SQL Server table
            conn.Execute "insert into dbo.Customers (CustomerId, FirstName, LastName) values ('" & sCustomerId & "', '" & sFirstName & "', '" & sLastName & "')"
 
            iRowNo = iRowNo + 1
        Loop
            
        MsgBox "Customers imported."
            
        conn.Close
        Set conn = Nothing
             
    End With
 
End Sub

Open in new window

0
 

Author Comment

by:W.E.B
ID: 41711612
EugeneZ,
Thank you very much,
This worked.
0
 

Author Closing Comment

by:W.E.B
ID: 41714885
Thank you.
0

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

Question has a verified solution.

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

This article describes how you can use Custom Document Properties to store settings and other information in your workbook so that they will be available the next time you open the workbook.
This shares a stored procedure to retrieve permissions for a given user on the current database or across all databases on a server.
This Micro Tutorial demonstrates using Microsoft Excel pivot tables, how to reverse engineer competitors' marketing strategies through backlinks.
This Micro Tutorial will demonstrate the scrolling table in Microsoft Excel using the INDEX function.

872 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