First time ever attempting to mix VB.Net and SQL Server--Newbie
Ok, here's what I'm trying to do. With the assistance of wBob I got my t-sql statement to work perfectly in a sql query for inserting my xml file into my sql table. I have 4 xml files that I need to import into seperate tables daily.
I'm wanting/trying to do a few different things.
1. Get the T-SQL statement to execute. I keep on getting "Incorrect syntax near '@xml'. Incorrect syntax near '*'. Incorrect syntax near the keyword 'FROM'."
2. Have the AO_Name (xml file) automatically change in the T_SQL Statement: so todays would be "C:\ABC_AO_20091130.xml" and tomorrows would be "C:\ABC_AO_20091201.xml"
Private
Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Y As String = Microsoft.VisualBasic.Format(Today.AddDays(-1), "yyyyMMdd")
Dim AO_Name As New String("C:\ABC_AO_" & (Y) & ".xml")
Console.WriteLine(AO_Name)
Dim AOSQL As String
AOSQL = "DECLARE @xml XML" + _
"SELECT @xml = x.y" + _
"FROM OPENROWSET( BULK '(AO_Name)', SINGLE_BLOB ) x(y)" + _
"Insert into ABC_AO" + _
"SELECT * " + _
"FROM " + _
"(SELECT " + _
"summary.x.value('NAME[1]', 'VARCHAR(30)') AS ASSET_OWNER_NAME,summary.x.value('SCHEDULED_DATE[1]', 'VARCHAR(10)') AS SCHEDULED_DATE,line_items.x.value('CHG_TYP_ID[1]', 'VARCHAR(MAX)') AS CHG_TYP_ID,SUBSTRING(stlmt_typ.x.value('STLMT_TYP_CD[1]', 'VARCHAR(30)'), 2, 30 ) AS STLMT_TYP_CD,stlmt_typ.x.value('(STLMT_TYP_CD/@INVOICE)[1]', 'VARCHAR(10)') AS INVOICE, stlmt_typ.x.value('OPERATING_DATE[1]', 'VARCHAR(10)') AS OPERATING_DATE,stlmt_typ.x.value('AMT[1]', 'DECIMAL(10,2)') AS AMT,FROM @xml.nodes('SUMMARY') AS summary(x),CROSS APPLY summary.x.nodes('LINE_ITEMS/CHG_TYP') line_items(x),CROSS APPLY line_items.x.nodes('STLMT_TYP') stlmt_typ(x),) x,PIVOT ( MAX( AMT ) FOR CHG_TYP_ID In ( [DA_ADMIN], [DA_ASM_REG] ) ) pvt"
Dim conn As New SqlConnection("Data Source=D09\DEVDB;Initial Catalog=AODB;Trusted_Connection=True")
Dim cmd As New SqlCommand
With cmd
.Connection = conn
.CommandType = CommandType.Text
.CommandText = (AOSQL)
End With
conn.Open()
cmd.ExecuteNonQuery()
conn.Close()
End Sub
Any assistance would be greatly welcomed,
Terry