Private Sub Proc_Translate_Orders_To_SqlDb(ByRef oEdiDoc As ediDocument, ByRef sAppPath As String)
Dim sSegmentID As String
Dim sLoopSection As String
Dim nArea As Integer
Dim sSql As String = ""
Dim sNadQlfr As String = ""
Dim sQlfr As String = ""
Dim sValue As String = ""
Dim sEdiFileName As String = txtEdiFile.Text.Trim()
' Specify EDI document to read.
oEdiDoc.LoadEdi(sEdiFileName)
'Open connection to SQL database
oConnection = New SqlConnection(sConnection)
oConnection.Open()
' Gets the first data segment in the EDI document.
Dim oSegment As ediDataSegment = oEdiDoc.FirstDataSegment
' Loop that will traverse through the EDI document from top to bottom. This
' is required for FORWARD-ONLY cursor.
Do While Not oSegment Is Nothing
' Data segments are uniquely identified by their segment Identifier (ID).
' The loop section and the area (or table) properties of the data segment
' are read for each iteration of the loop.
sSegmentID = oSegment.ID
sLoopSection = oSegment.LoopSection
nArea = oSegment.Area
If nArea = 0 Then
' Data segments that are not designated an area (i.e. area = 0) are control
' segments that are part of the Interchange or Functional Group envelopes,
' and are not part of the Message.
If sSegmentID = "UNB" Then
'insert a record into interchange table
sSql = "INSERT INTO [Interchange] (UNB01_01_SyntaxIdentifier, UNB01_02_SyntaxVersionNumber, UNB02_01_InterchangeSenderIdentification, " _
& "UNB02_02_PartnerIdentificationCodeQualifier, UNB02_03_InterchangeSenderInternalIdentification, UNB03_01_RecipientIdentification, " _
& "UNB03_02_PartnerIdentificationCodeQualifier, UNB03_03_RoutingAddress, UNB04_01_Date, UNB04_02_Time, " _
& "UNB05_InterchangeControlReference, UNB09_AcknowledgementRequest, UNB11_TestIndicator) " _
& "values " _
& "(@UNB01_01_SyntaxIdentifier, @UNB01_02_SyntaxVersionNumber, @UNB02_01_InterchangeSenderIdentification, " _
& "@UNB02_02_PartnerIdentificationCodeQualifier, @UNB02_03_InterchangeSenderInternalIdentification, @UNB03_01_RecipientIdentification, " _
& "@UNB03_02_PartnerIdentificationCodeQualifier, @UNB03_03_RoutingAddress, @UNB04_01_Date, @UNB04_02_Time, " _
& "@UNB05_InterchangeControlReference, @UNB09_AcknowledgementRequest, @UNB11_TestIndicator); " _
& "SELECT scope_identity()"
oDaInterchange.InsertCommand = New SqlCommand(sSql, oConnection)
oDaInterchange.InsertCommand.Parameters.AddWithValue("@UNB01_01_SyntaxIdentifier", oSegment.DataElementValue(1, 1)) ' Syntax identifier (0001)
oDaInterchange.InsertCommand.Parameters.AddWithValue("@UNB01_02_SyntaxVersionNumber", oSegment.DataElementValue(1, 2)) ' Syntax version number (0002)
oDaInterchange.InsertCommand.Parameters.AddWithValue("@UNB02_01_InterchangeSenderIdentification", oSegment.DataElementValue(2, 1)) ' Interchange sender identification (0004)
oDaInterchange.InsertCommand.Parameters.AddWithValue("@UNB02_02_PartnerIdentificationCodeQualifier", oSegment.DataElementValue(2, 2)) ' Partner identification code qualifier (0007)
oDaInterchange.InsertCommand.Parameters.AddWithValue("@UNB02_03_InterchangeSenderInternalIdentification", oSegment.DataElementValue(2, 3)) ' Interchange sender internal identification (0008)
oDaInterchange.InsertCommand.Parameters.AddWithValue("@UNB03_01_RecipientIdentification", oSegment.DataElementValue(3, 1)) ' Recipient identification (0010)
oDaInterchange.InsertCommand.Parameters.AddWithValue("@UNB03_02_PartnerIdentificationCodeQualifier", oSegment.DataElementValue(3, 2)) ' Partner identification code qualifier (0007)
oDaInterchange.InsertCommand.Parameters.AddWithValue("@UNB03_03_RoutingAddress", oSegment.DataElementValue(3, 3)) ' Routing address (0014)
oDaInterchange.InsertCommand.Parameters.AddWithValue("@UNB04_01_Date", oSegment.DataElementValue(4, 1)) ' Date (0017)
oDaInterchange.InsertCommand.Parameters.AddWithValue("@UNB04_02_Time", oSegment.DataElementValue(4, 2)) ' Time (0019)
oDaInterchange.InsertCommand.Parameters.AddWithValue("@UNB05_InterchangeControlReference", oSegment.DataElementValue(5)) ' Interchange control reference (0020)
oDaInterchange.InsertCommand.Parameters.AddWithValue("@UNB09_AcknowledgementRequest", oSegment.DataElementValue(9)) ' Acknowledgement request (0031)
oDaInterchange.InsertCommand.Parameters.AddWithValue("@UNB11_TestIndicator", oSegment.DataElementValue(11)) ' Test indicator (0035)
nInterchangeKey = oDaInterchange.InsertCommand.ExecuteScalar()
ElseIf sSegmentID = "UNZ" Then
sValue = oSegment.DataElementValue(1) ' Interchange control count (0036)
sValue = oSegment.DataElementValue(2) ' Interchange control reference (0020)
ElseIf sSegmentID = "UNG" Then
ElseIf sSegmentID = "UNE" Then
sValue = oSegment.DataElementValue(1) ' Group control count (0060)
sValue = oSegment.DataElementValue(2) ' Group reference number (0048)
End If ' sSegmentID = "UNE"
ElseIf nArea = 1 Then
' Data segments in area 1 are processed here.
If sLoopSection = "" Then
If sSegmentID = "UNH" Then ' Message header
sSql = "INSERT INTO [Orders_Header] (InterchangeKey, UNH01_MessageReferenceNumber, UNH02_01_MessageTypeIdentifier, UNH02_02_MessageVersionNumber, " _
& "UNH02_03_MessageReleaseNumber, UNH02_04_ControllingAgency, UNH02_05_AssociationAssignedCode, BGM01_01_DocumentMessageNameCoded, " _
& "BGM02_01_DocumentMessageNumber, BGM03_MessageFunctionCoded, DTM01_02_DeliveryDateTime, DTM01_02_DocumentDateTime, " _
& "DTM01_02_CollectionDateTime, FTX01_TextSubjectQualifier, FTX02_TextFunctionCoded, FTX04_01_FreeText, RFF01_02_DeliveryScheduleNumber, " _
& "NAD02_01_BuyerIdentification, NAD02_03_BuyerAgencyCoded, LOC02_01_BuyerLocationIdentification, CTA02_01_BuyerPurchasingContactId, " _
& "CTA02_02_BuyerPurchasingContactName, COM01_01_BuyerEmail, COM01_01_BuyerFax, COM01_01_BuyerTelephone, " _
& "NAD02_01_ShipToIdentification, NAD02_03_ShipToAgencyCoded, LOC02_01_ShipToLocationIdentification, CTA02_01_ShipToPurchasingContactId, " _
& "CTA02_02_ShipToPurchasingContactName, COM01_01_ShipToEmail, COM01_01_ShipToFax, COM01_01_ShipToTelephone, " _
& "NAD02_01_SupplierIdentification, NAD02_03_SupplierAgencyCoded, LOC02_01_SupplierLocationIdentification, CTA02_01_SupplierPurchasingContactId, " _
& "CTA02_02_SupplierPurchasingContactName, COM01_01_SupplierEmail, COM01_01_SupplierFax, COM01_01_SupplierTelephone, " _
& "MOA01_02_TotalMonetaryAmount, CNT01_01_ControlQualifier, CNT01_02_ControlValue) " _
& "values " _
& "(@InterchangeKey, @UNH01_MessageReferenceNumber, @UNH02_01_MessageTypeIdentifier, @UNH02_02_MessageVersionNumber, " _
& "@UNH02_03_MessageReleaseNumber, @UNH02_04_ControllingAgency, @UNH02_05_AssociationAssignedCode, @BGM01_01_DocumentMessageNameCoded, " _
& "@BGM02_01_DocumentMessageNumber, @BGM03_MessageFunctionCoded, @DTM01_02_DeliveryDateTime, @DTM01_02_DocumentDateTime, " _
& "@DTM01_02_CollectionDateTime, @FTX01_TextSubjectQualifier, @FTX02_TextFunctionCoded, @FTX04_01_FreeText, @RFF01_02_DeliveryScheduleNumber, " _
& "@NAD02_01_BuyerIdentification, @NAD02_03_BuyerAgencyCoded, @LOC02_01_BuyerLocationIdentification, @CTA02_01_BuyerPurchasingContactId, " _
& "@CTA02_02_BuyerPurchasingContactName, @COM01_01_BuyerEmail, @COM01_01_BuyerFax, @COM01_01_BuyerTelephone, " _
& "@NAD02_01_ShipToIdentification, @NAD02_03_ShipToAgencyCoded, @LOC02_01_ShipToLocationIdentification, @CTA02_01_ShipToPurchasingContactId, " _
& "@CTA02_02_ShipToPurchasingContactName, @COM01_01_ShipToEmail, @COM01_01_ShipToFax, @COM01_01_ShipToTelephone, " _
& "@NAD02_01_SupplierIdentification, @NAD02_03_SupplierAgencyCoded, @LOC02_01_SupplierLocationIdentification, @CTA02_01_SupplierPurchasingContactId, " _
& "@CTA02_02_SupplierPurchasingContactName, @COM01_01_SupplierEmail, @COM01_01_SupplierFax, @COM01_01_SupplierTelephone, " _
& "@MOA01_02_TotalMonetaryAmount, @CNT01_01_ControlQualifier, @CNT01_02_ControlValue); " _
& "SELECT scope_identity()"
oDaHeader.InsertCommand = New SqlCommand(sSql, oConnection)
oDaHeader.InsertCommand.Parameters.AddWithValue("@InterchangeKey", nInterchangeKey)
oDaHeader.InsertCommand.Parameters.AddWithValue("@UNH01_MessageReferenceNumber", oSegment.DataElementValue(1)) ' Message reference number (0062)
oDaHeader.InsertCommand.Parameters.AddWithValue("@UNH02_01_MessageTypeIdentifier", oSegment.DataElementValue(2, 1)) ' Message type identifier (0065)
oDaHeader.InsertCommand.Parameters.AddWithValue("@UNH02_02_MessageVersionNumber", oSegment.DataElementValue(2, 2)) ' Message version number (0052)
oDaHeader.InsertCommand.Parameters.AddWithValue("@UNH02_03_MessageReleaseNumber", oSegment.DataElementValue(2, 3)) ' Message release number (0054)
oDaHeader.InsertCommand.Parameters.AddWithValue("@UNH02_04_ControllingAgency", oSegment.DataElementValue(2, 4)) ' Controlling agency (0051)
oDaHeader.InsertCommand.Parameters.AddWithValue("@UNH02_05_AssociationAssignedCode", oSegment.DataElementValue(2, 5)) ' Association assigned code (0057)
oDaHeader.InsertCommand.Parameters.AddWithValue("@BGM01_01_DocumentMessageNameCoded", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@BGM02_01_DocumentMessageNumber", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@BGM03_MessageFunctionCoded", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@DTM01_02_DeliveryDateTime", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@DTM01_02_DocumentDateTime", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@DTM01_02_CollectionDateTime", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@FTX01_TextSubjectQualifier", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@FTX02_TextFunctionCoded", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@FTX04_01_FreeText", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@RFF01_02_DeliveryScheduleNumber", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@NAD02_01_BuyerIdentification", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@NAD02_03_BuyerAgencyCoded", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@LOC02_01_BuyerLocationIdentification", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@CTA02_01_BuyerPurchasingContactId", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@CTA02_02_BuyerPurchasingContactName", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@COM01_01_BuyerEmail", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@COM01_01_BuyerFax", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@COM01_01_BuyerTelephone", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@NAD02_01_ShipToIdentification", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@NAD02_03_ShipToAgencyCoded", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@LOC02_01_ShipToLocationIdentification", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@CTA02_01_ShipToPurchasingContactId", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@CTA02_02_ShipToPurchasingContactName", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@COM01_01_ShipToEmail", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@COM01_01_ShipToFax", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@COM01_01_ShipToTelephone", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@NAD02_01_SupplierIdentification", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@NAD02_03_SupplierAgencyCoded", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@LOC02_01_SupplierLocationIdentification", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@CTA02_01_SupplierPurchasingContactId", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@CTA02_02_SupplierPurchasingContactName", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@COM01_01_SupplierEmail", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@COM01_01_SupplierFax", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@COM01_01_SupplierTelephone", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@MOA01_02_TotalMonetaryAmount", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@CNT01_01_ControlQualifier", "")
oDaHeader.InsertCommand.Parameters.AddWithValue("@CNT01_02_ControlValue", "")
nHeaderKey = oDaHeader.InsertCommand.ExecuteScalar()
ElseIf sSegmentID = "BGM" Then ' Beginning of message
sSql = "UPDATE [Orders_Header] SET BGM01_01_DocumentMessageNameCoded = @BGM01_01_DocumentMessageNameCoded, " _
& "BGM02_01_DocumentMessageNumber = @BGM02_01_DocumentMessageNumber, BGM03_MessageFunctionCoded = @BGM03_MessageFunctionCoded " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@BGM01_01_DocumentMessageNameCoded", oSegment.DataElementValue(1, 1)) ' Document/message name, coded (1001)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@BGM02_01_DocumentMessageNumber", oSegment.DataElementValue(2, 1)) ' Document/message number (1004)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@BGM03_MessageFunctionCoded", oSegment.DataElementValue(3)) ' Message function, coded (1225)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
ElseIf sSegmentID = "DTM" Then ' Date/time/period
sQlfr = oSegment.DataElementValue(1, 1) ' Date/time/period qualifier (2005)
If sQlfr = "2" Then
sSql = "UPDATE [Orders_Header] SET DTM01_02_DeliveryDateTime = @DTM01_02_DeliveryDateTime " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@DTM01_02_DeliveryDateTime", oSegment.DataElementValue(1, 2)) ' Date/time/period (2380)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
ElseIf sQlfr = "137" Then
sSql = "UPDATE [Orders_Header] SET DTM01_02_DocumentDateTime = @DTM01_02_DocumentDateTime " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@DTM01_02_DocumentDateTime", oSegment.DataElementValue(1, 2)) ' Date/time/period (2380)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
ElseIf sQlfr = "235" Then
sSql = "UPDATE [Orders_Header] SET DTM01_02_CollectionDateTime = @DTM01_02_CollectionDateTime " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@DTM01_02_CollectionDateTime", oSegment.DataElementValue(1, 2)) ' Date/time/period (2380)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
End If
ElseIf sSegmentID = "FTX" Then ' Free text
sSql = "UPDATE [Orders_Header] SET FTX01_TextSubjectQualifier = @FTX01_TextSubjectQualifier, " _
& "FTX02_TextFunctionCoded = @FTX02_TextFunctionCoded, FTX04_01_FreeText = @FTX04_01_FreeText " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@FTX01_TextSubjectQualifier", oSegment.DataElementValue(1)) ' Text subject qualifier (4451)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@FTX02_TextFunctionCoded", oSegment.DataElementValue(2)) ' Text function, coded (4453)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@FTX04_01_FreeText", oSegment.DataElementValue(4, 1)) ' Free text (4440)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
End If ' sSegmentID
ElseIf sLoopSection = "RFF" Then
If sSegmentID = "RFF" Then ' Reference
sSql = "UPDATE [Orders_Header] SET RFF01_02_DeliveryScheduleNumber = @RFF01_02_DeliveryScheduleNumber " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@RFF01_02_DeliveryScheduleNumber", oSegment.DataElementValue(1, 2)) ' Reference number (1154)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
End If ' sSegmentID = "DTM"
ElseIf sLoopSection.StartsWith("NAD") Then
If sSegmentID = "NAD" Then ' Name and address
sNadQlfr = oSegment.DataElementValue(1)
End If
If sNadQlfr = "BY" Then 'BUYER
If sSegmentID = "NAD" Then ' Name and address
sSql = "UPDATE [Orders_Header] SET NAD02_01_BuyerIdentification = @NAD02_01_BuyerIdentification, " _
& "NAD02_03_BuyerAgencyCoded = @NAD02_03_BuyerAgencyCoded " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@NAD02_01_BuyerIdentification", oSegment.DataElementValue(2, 1)) ' Party identification (3039)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@NAD02_03_BuyerAgencyCoded", oSegment.DataElementValue(2, 3)) ' Code list responsible agency, coded (3055)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
ElseIf sSegmentID = "LOC" Then ' Place/location identification
sSql = "UPDATE [Orders_Header] SET LOC02_01_BuyerLocationIdentification = @LOC02_01_BuyerLocationIdentification " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@LOC02_01_BuyerLocationIdentification", oSegment.DataElementValue(2, 1)) ' Place/location identification (3225)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
End If ' sSegmentID
If sLoopSection = "NAD;CTA" Then
If sSegmentID = "CTA" Then ' Contact information
sSql = "UPDATE [Orders_Header] SET CTA02_01_BuyerPurchasingContactId = @CTA02_01_BuyerPurchasingContactId, " _
& "CTA02_02_BuyerPurchasingContactName = @CTA02_02_BuyerPurchasingContactName " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@CTA02_01_BuyerPurchasingContactId", oSegment.DataElementValue(2, 1)) ' Department or employee identification (3413)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@CTA02_02_BuyerPurchasingContactName", oSegment.DataElementValue(2, 2)) ' Department or employee (3412)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
ElseIf sSegmentID = "COM" Then ' Communication contact
sQlfr = oSegment.DataElementValue(1, 2)
If sQlfr = "EM" Then
sSql = "UPDATE [Orders_Header] SET COM01_01_BuyerEmail = @COM01_01_BuyerEmail " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@COM01_01_BuyerEmail", oSegment.DataElementValue(1, 1)) ' Communication number (3148)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
ElseIf sQlfr = "FX" Then
sSql = "UPDATE [Orders_Header] SET COM01_01_BuyerFax = @COM01_01_BuyerFax " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@COM01_01_BuyerFax", oSegment.DataElementValue(1, 1)) ' Communication number (3148)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
ElseIf sQlfr = "TE" Then
sSql = "UPDATE [Orders_Header] SET COM01_01_BuyerTelephone = @COM01_01_BuyerTelephone " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@COM01_01_BuyerTelephone", oSegment.DataElementValue(1, 1)) ' Communication number (3148)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
End If ' sQlfr
End If ' sSegmentID = "COM"
End If ' sLoopSection
ElseIf sNadQlfr = "ST" Then 'SHIP TO
If sSegmentID = "NAD" Then ' Name and address
sSql = "UPDATE [Orders_Header] SET NAD02_01_ShipToIdentification = @NAD02_01_ShipToIdentification, " _
& "NAD02_03_ShipToAgencyCoded = @NAD02_03_ShipToAgencyCoded " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@NAD02_01_ShipToIdentification", oSegment.DataElementValue(2, 1)) ' Party identification (3039)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@NAD02_03_ShipToAgencyCoded", oSegment.DataElementValue(2, 3)) ' Code list responsible agency, coded (3055)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
ElseIf sSegmentID = "LOC" Then ' Place/location identification
sSql = "UPDATE [Orders_Header] SET LOC02_01_ShipToLocationIdentification = @LOC02_01_ShipToLocationIdentification " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@LOC02_01_ShipToLocationIdentification", oSegment.DataElementValue(2, 1)) ' Place/location identification (3225)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
End If ' sSegmentID
If sLoopSection = "NAD;CTA" Then
If sSegmentID = "CTA" Then ' Contact information
sSql = "UPDATE [Orders_Header] SET CTA02_01_ShipToPurchasingContactId = @CTA02_01_ShipToPurchasingContactId, " _
& "CTA02_02_ShipToPurchasingContactName = @CTA02_02_ShipToPurchasingContactName " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@CTA02_01_ShipToPurchasingContactId", oSegment.DataElementValue(2, 1)) ' Department or employee identification (3413)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@CTA02_02_ShipToPurchasingContactName", oSegment.DataElementValue(2, 2)) ' Department or employee (3412)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
ElseIf sSegmentID = "COM" Then ' Communication contact
sQlfr = oSegment.DataElementValue(1, 2)
If sQlfr = "EM" Then
sSql = "UPDATE [Orders_Header] SET COM01_01_ShipToEmail = @COM01_01_ShipToEmail " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@COM01_01_ShipToEmail", oSegment.DataElementValue(1, 1)) ' Communication number (3148)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
ElseIf sQlfr = "FX" Then
sSql = "UPDATE [Orders_Header] SET COM01_01_ShipToFax = @COM01_01_ShipToFax " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@COM01_01_ShipToFax", oSegment.DataElementValue(1, 1)) ' Communication number (3148)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
ElseIf sQlfr = "TE" Then
sSql = "UPDATE [Orders_Header] SET COM01_01_ShipToTelephone = @COM01_01_ShipToTelephone " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@COM01_01_ShipToTelephone", oSegment.DataElementValue(1, 1)) ' Communication number (3148)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
End If ' sQlfr
End If ' sSegmentID = "COM"
End If ' sLoopSection
ElseIf sNadQlfr = "SU" Then ' SUPPLIER
If sSegmentID = "NAD" Then ' Name and address
sSql = "UPDATE [Orders_Header] SET NAD02_01_SupplierIdentification = @NAD02_01_SupplierIdentification, " _
& "NAD02_03_SupplierAgencyCoded = @NAD02_03_SupplierAgencyCoded " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@NAD02_01_SupplierIdentification", oSegment.DataElementValue(2, 1)) ' Party identification (3039)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@NAD02_03_SupplierAgencyCoded", oSegment.DataElementValue(2, 3)) ' Code list responsible agency, coded (3055)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
ElseIf sSegmentID = "LOC" Then ' Place/location identification
sSql = "UPDATE [Orders_Header] SET LOC02_01_SupplierLocationIdentification = @LOC02_01_SupplierLocationIdentification " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@LOC02_01_SupplierLocationIdentification", oSegment.DataElementValue(2, 1)) ' Place/location identification (3225)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
End If ' sSegmentID
If sLoopSection = "NAD;CTA" Then
If sSegmentID = "CTA" Then ' Contact information
sSql = "UPDATE [Orders_Header] SET CTA02_01_SupplierPurchasingContactId = @CTA02_01_SupplierPurchasingContactId, " _
& "CTA02_02_SupplierPurchasingContactName = @CTA02_02_SupplierPurchasingContactName " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@CTA02_01_SupplierPurchasingContactId", oSegment.DataElementValue(2, 1)) ' Department or employee identification (3413)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@CTA02_02_SupplierPurchasingContactName", oSegment.DataElementValue(2, 2)) ' Department or employee (3412)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
ElseIf sSegmentID = "COM" Then ' Communication contact
sQlfr = oSegment.DataElementValue(1, 2)
If sQlfr = "EM" Then
sSql = "UPDATE [Orders_Header] SET COM01_01_SupplierEmail = @COM01_01_SupplierEmail " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@COM01_01_SupplierEmail", oSegment.DataElementValue(1, 1)) ' Communication number (3148)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
ElseIf sQlfr = "FX" Then
sSql = "UPDATE [Orders_Header] SET COM01_01_SupplierFax = @COM01_01_SupplierFax " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@COM01_01_SupplierFax", oSegment.DataElementValue(1, 1)) ' Communication number (3148)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
ElseIf sQlfr = "TE" Then
sSql = "UPDATE [Orders_Header] SET COM01_01_SupplierTelephone = @COM01_01_SupplierTelephone " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@COM01_01_SupplierTelephone", oSegment.DataElementValue(1, 1)) ' Communication number (3148)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
End If ' sQlfr
End If ' sSegmentID = "COM"
End If ' sLoopSection
End If
End If ' sLoopSection
ElseIf nArea = 2 Then
' Data segments in area 2 are processed here.
If sLoopSection = "" Then
' Nothing to do.
ElseIf sLoopSection = "LIN" Then
If sSegmentID = "LIN" Then ' Line item
sSql = "INSERT INTO [Orders_Detail] (HeaderKey, LIN01_LineItemNumber, LIN03_01_EAN_GlobalTradeItemNumber, PIA01_ProductIdFunctionQualifier, " _
& "PIA02_01_ItemNumber, PIA02_02_ItemNumberTypeCoded, PIA03_01_ItemNumber, PIA03_02_ItemNumberTypeCoded, IMD03_04_ItemDescription, " _
& "MEA02_01_PropertyMeasuredCoded, MEA03_02_MeasurementValue, QTY01_01_QuantityQualifier, QTY01_02_QuantityInKilograms, " _
& "DTM01_02_MinimumShelfLife, DTM01_03_DateTimePeriodFormatQualifier , PRI01_02_NetPrice) " _
& "values " _
& "(@HeaderKey, @LIN01_LineItemNumber, @LIN03_01_EAN_GlobalTradeItemNumber, @PIA01_ProductIdFunctionQualifier, " _
& "@PIA02_01_ItemNumber, @PIA02_02_ItemNumberTypeCoded, @PIA03_01_ItemNumber, @PIA03_02_ItemNumberTypeCoded, @IMD03_04_ItemDescription, " _
& "@MEA02_01_PropertyMeasuredCoded, @MEA03_02_MeasurementValue, @QTY01_01_QuantityQualifier, @QTY01_02_QuantityInKilograms, " _
& "@DTM01_02_MinimumShelfLife, @DTM01_03_DateTimePeriodFormatQualifier , @PRI01_02_NetPrice); " _
& "SELECT scope_identity()"
oDaDetail.InsertCommand = New SqlCommand(sSql, oConnection)
oDaDetail.InsertCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaDetail.InsertCommand.Parameters.AddWithValue("@LIN01_LineItemNumber", oSegment.DataElementValue(1)) ' Line item number (1082)
oDaDetail.InsertCommand.Parameters.AddWithValue("@LIN03_01_EAN_GlobalTradeItemNumber", oSegment.DataElementValue(3, 1)) ' Item number (7140)
oDaDetail.InsertCommand.Parameters.AddWithValue("@PIA01_ProductIdFunctionQualifier", "")
oDaDetail.InsertCommand.Parameters.AddWithValue("@PIA02_01_ItemNumber", "")
oDaDetail.InsertCommand.Parameters.AddWithValue("@PIA02_02_ItemNumberTypeCoded", "")
oDaDetail.InsertCommand.Parameters.AddWithValue("@PIA03_01_ItemNumber", "")
oDaDetail.InsertCommand.Parameters.AddWithValue("@PIA03_02_ItemNumberTypeCoded", "")
oDaDetail.InsertCommand.Parameters.AddWithValue("@IMD03_04_ItemDescription", "")
oDaDetail.InsertCommand.Parameters.AddWithValue("@MEA02_01_PropertyMeasuredCoded", "")
oDaDetail.InsertCommand.Parameters.AddWithValue("@MEA03_02_MeasurementValue", "")
oDaDetail.InsertCommand.Parameters.AddWithValue("@QTY01_01_QuantityQualifier", "")
oDaDetail.InsertCommand.Parameters.AddWithValue("@QTY01_02_QuantityInKilograms", "")
oDaDetail.InsertCommand.Parameters.AddWithValue("@DTM01_02_MinimumShelfLife", "")
oDaDetail.InsertCommand.Parameters.AddWithValue("@DTM01_03_DateTimePeriodFormatQualifier", "")
oDaDetail.InsertCommand.Parameters.AddWithValue("@PRI01_02_NetPrice", "")
nDetailKey = oDaDetail.InsertCommand.ExecuteScalar()
ElseIf sSegmentID = "PIA" Then ' Additional product id
sSql = "UPDATE [Orders_Detail] SET PIA01_ProductIdFunctionQualifier = @PIA01_ProductIdFunctionQualifier, " _
& "PIA02_01_ItemNumber = @PIA02_01_ItemNumber, PIA02_02_ItemNumberTypeCoded = @PIA02_02_ItemNumberTypeCoded, " _
& "PIA03_01_ItemNumber = @PIA03_01_ItemNumber, PIA03_02_ItemNumberTypeCoded = @PIA03_02_ItemNumberTypeCoded " _
& "where DetailKey = @DetailKey"
oDaDetail.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaDetail.UpdateCommand.Parameters.AddWithValue("@PIA01_ProductIdFunctionQualifier", oSegment.DataElementValue(1)) ' Product id. function qualifier (4347)
oDaDetail.UpdateCommand.Parameters.AddWithValue("@PIA02_01_ItemNumber", oSegment.DataElementValue(2, 1)) ' Item number (7140)
oDaDetail.UpdateCommand.Parameters.AddWithValue("@PIA02_02_ItemNumberTypeCoded", oSegment.DataElementValue(2, 2)) ' Item number type, coded (7143)
oDaDetail.UpdateCommand.Parameters.AddWithValue("@PIA03_01_ItemNumber", oSegment.DataElementValue(3, 1)) ' Item number (7140)
oDaDetail.UpdateCommand.Parameters.AddWithValue("@PIA03_02_ItemNumberTypeCoded", oSegment.DataElementValue(3, 2)) ' Item number type, coded (7143)
oDaDetail.UpdateCommand.Parameters.AddWithValue("@DetailKey", nDetailKey)
oDaDetail.UpdateCommand.ExecuteNonQuery()
ElseIf sSegmentID = "IMD" Then ' Item description
sSql = "UPDATE [Orders_Detail] SET IMD03_04_ItemDescription = @IMD03_04_ItemDescription " _
& "where DetailKey = @DetailKey"
oDaDetail.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaDetail.UpdateCommand.Parameters.AddWithValue("@IMD03_04_ItemDescription", oSegment.DataElementValue(3, 4)) ' Item description (7008)
oDaDetail.UpdateCommand.Parameters.AddWithValue("@DetailKey", nDetailKey)
oDaDetail.UpdateCommand.ExecuteNonQuery()
ElseIf sSegmentID = "MEA" Then ' Measurements
sSql = "UPDATE [Orders_Detail] SET MEA02_01_PropertyMeasuredCoded = @MEA02_01_PropertyMeasuredCoded, " _
& "MEA03_02_MeasurementValue = @MEA03_02_MeasurementValue " _
& "where DetailKey = @DetailKey"
oDaDetail.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaDetail.UpdateCommand.Parameters.AddWithValue("@MEA02_01_PropertyMeasuredCoded", oSegment.DataElementValue(2, 1)) ' Property measured, coded (6313)
oDaDetail.UpdateCommand.Parameters.AddWithValue("@MEA03_02_MeasurementValue", oSegment.DataElementValue(3, 2)) ' Measurement value (6314)
oDaDetail.UpdateCommand.Parameters.AddWithValue("@DetailKey", nDetailKey)
oDaDetail.UpdateCommand.ExecuteNonQuery()
ElseIf sSegmentID = "QTY" Then ' Quantity
sSql = "UPDATE [Orders_Detail] SET QTY01_01_QuantityQualifier = @QTY01_01_QuantityQualifier, " _
& "QTY01_02_QuantityInKilograms = @QTY01_02_QuantityInKilograms " _
& "where DetailKey = @DetailKey"
oDaDetail.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaDetail.UpdateCommand.Parameters.AddWithValue("@QTY01_01_QuantityQualifier", oSegment.DataElementValue(1, 1)) ' Quantity qualifier (6063)
oDaDetail.UpdateCommand.Parameters.AddWithValue("@QTY01_02_QuantityInKilograms", oSegment.DataElementValue(1, 2)) ' Quantity (6060)
oDaDetail.UpdateCommand.Parameters.AddWithValue("@DetailKey", nDetailKey)
oDaDetail.UpdateCommand.ExecuteNonQuery()
ElseIf sSegmentID = "DTM" Then ' Date/time/period
sSql = "UPDATE [Orders_Detail] SET DTM01_02_MinimumShelfLife = @DTM01_02_MinimumShelfLife, " _
& "DTM01_03_DateTimePeriodFormatQualifier = @DTM01_03_DateTimePeriodFormatQualifier " _
& "where DetailKey = @DetailKey"
oDaDetail.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaDetail.UpdateCommand.Parameters.AddWithValue("@DTM01_02_MinimumShelfLife", oSegment.DataElementValue(1, 2)) ' Date/time/period (2380)
oDaDetail.UpdateCommand.Parameters.AddWithValue("@DTM01_03_DateTimePeriodFormatQualifier", oSegment.DataElementValue(1, 3)) ' Date/time/period format qualifier (2379)
oDaDetail.UpdateCommand.Parameters.AddWithValue("@DetailKey", nDetailKey)
oDaDetail.UpdateCommand.ExecuteNonQuery()
End If 'sSegmentID
ElseIf sLoopSection = "LIN;PRI" Then
If sSegmentID = "PRI" Then ' Price details
sSql = "UPDATE [Orders_Detail] SET PRI01_02_NetPrice = @PRI01_02_NetPrice " _
& "where DetailKey = @DetailKey"
oDaDetail.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaDetail.UpdateCommand.Parameters.AddWithValue("@PRI01_02_NetPrice", oSegment.DataElementValue(1, 2)) ' Price (5118)
oDaDetail.UpdateCommand.Parameters.AddWithValue("@DetailKey", nDetailKey)
oDaDetail.UpdateCommand.ExecuteNonQuery()
End If ' sSegmentID
End If ' sLoopSection
ElseIf nArea = 3 Then
' Data segments in area 3 are processed here.
If sLoopSection = "" Then
If sSegmentID = "UNS" Then ' Section control
sValue = oSegment.DataElementValue(1) ' Section identification (0081)
ElseIf sSegmentID = "MOA" Then ' Monetary amount
sSql = "UPDATE [Orders_Header] SET MOA01_02_TotalMonetaryAmount = @MOA01_02_TotalMonetaryAmount " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@MOA01_02_TotalMonetaryAmount", oSegment.DataElementValue(1, 2)) ' Monetary amount (5004)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
ElseIf sSegmentID = "CNT" Then ' Control total
sSql = "UPDATE [Orders_Header] SET CNT01_01_ControlQualifier = @CNT01_01_ControlQualifier, " _
& "CNT01_02_ControlValue = @CNT01_02_ControlValue " _
& "where HeaderKey = @HeaderKey"
oDaHeader.UpdateCommand = New SqlCommand(sSql, oConnection)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@CNT01_01_ControlQualifier", oSegment.DataElementValue(1, 1)) ' Control qualifier (6069)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@CNT01_02_ControlValue", oSegment.DataElementValue(1, 2)) ' Control value (6066)
oDaHeader.UpdateCommand.Parameters.AddWithValue("@HeaderKey", nHeaderKey)
oDaHeader.UpdateCommand.ExecuteNonQuery()
ElseIf sSegmentID = "UNT" Then ' Message trailer
sValue = oSegment.DataElementValue(1) ' Number of segments in a message (0074)
sValue = oSegment.DataElementValue(2) ' Message reference number (0062)
End If ' sSegmentID = "UNT"
End If ' sLoopSection = ""
End If ' nArea = 3
' Get the next data segment in the document.
ediDataSegment.Set(oSegment, oSegment.Next)
Loop ' Not oSegment Is Nothing
oDaDetail.Dispose()
oDaHeader.Dispose()
oDaFuncGroup.Dispose()
oDaInterchange.Dispose()
oConnection.Close()
oConnection.Dispose()
End Sub