'This is just an example to show how to translate a UN/EDIFACT INVOIC in VB6 using the Framework EDI component Option Explicit Private oEdiDoc As Fredi.ediDocument Private oSegment As Fredi.ediDataSegment Private oSchemas As Fredi.ediSchemas Private Sub cmdTranslate_Click() Dim sSefFile As String Dim sEdiFile As String Dim sSegmentID As String Dim nArea As Integer Dim sLoopSection As String Dim sPath As String Dim sAllowanceQlfr As String Dim sPartyQlfr As String Dim sValue As String Me.MousePointer = vbHourglass cmdTranslate.Enabled = False sPath = Trim(App.Path) & "\" sSefFile = "INVOIC_S93A.SEF" sEdiFile = "INVOIC.TXT" 'instantiate edi document object Set oEdiDoc = New Fredi.ediDocument 'THIS MAKES CERTAIN THAT FREDI ONLY USES THE SEF FILE PROVIDED, AND THAT IT DOES 'NOT USE ITS BUILT-IN STANDARD REFERENCE TABLE TO GENERATE THE EDI FILE. Set oSchemas = oEdiDoc.GetSchemas oSchemas.EnableStandardReference = False 'THIS OPTIONS STOPS FREDI FROM KEEPING ALL THE SEGMENTS IN MEMORY oEdiDoc.CursorType = Cursor_ForwardOnly 'if UNA segment does not exist, then use following terminators oEdiDoc.SegmentTerminator = "'" oEdiDoc.ElementTerminator = "+" oEdiDoc.CompositeTerminator = ":" oEdiDoc.ReleaseIndicator = "?" 'LOADS THE SEF FILE oEdiDoc.LoadSchema sPath & sSefFile, 0 'LOADS THE EDI FILE oEdiDoc.LoadEdi sPath & sEdiFile 'GETS THE FIRST DATA SEGMENT Set oSegment = oEdiDoc.FirstDataSegment 'LOOP THAT WILL TRAVERSE THRU EDI FILE FROM TOP TO BOTTOM Do While Not oSegment Is Nothing 'DATA SEGMENTS ARE IDENTIFIED BY THEIR ID, THE LOOP SECTION AND AREA '(OR TABLE) NUMBER THAT THEY ARE IN. sSegmentID = oSegment.ID sLoopSection = oSegment.LoopSection nArea = oSegment.Area If nArea = 0 Then If sLoopSection = "" Then If sSegmentID = "UNB" Then txtPartnerID.Text = oSegment.DataElementValue(2, 1) 'composite element 2, subelement 1 txtSiteCode.Text = oSegment.DataElementValue(3, 3) 'composite element 3, subelement 3 txtTransmitDate.Text = StringToDate6(oSegment.DataElementValue(4, 1)) 'composite element 4, subelement 1 txtTransmitTime.Text = oSegment.DataElementValue(4, 2) 'composite element 4, subelement 2 End If 'sSegmentID End If 'sLoopSection ElseIf nArea = 1 Then If sLoopSection = "" Then If sSegmentID = "UNH" Then sValue = oSegment.DataElementValue(1) 'Message reference number sValue = oSegment.DataElementValue(2, 1) 'Message type identifier sValue = oSegment.DataElementValue(2, 2) 'Message version number sValue = oSegment.DataElementValue(2, 3) 'Message release number sValue = oSegment.DataElementValue(2, 4) 'Controlling agency sValue = oSegment.DataElementValue(2, 5) 'Association assigned code ElseIf sSegmentID = "BGM" Then sValue = oSegment.DataElementValue(1, 1) 'Document/message name, coded sValue = oSegment.DataElementValue(1, 2) 'Code list qualifier sValue = oSegment.DataElementValue(1, 3) 'Code list responsible agency, coded sValue = oSegment.DataElementValue(1, 4) 'Document/message name txtInvoiceNo.Text = oSegment.DataElementValue(2) 'Document/message name sValue = oSegment.DataElementValue(3) 'Document/message name ElseIf sSegmentID = "DTM" Then sValue = oSegment.DataElementValue(1, 1) 'Date/time/period qualifier txtInvDate.Text = oSegment.DataElementValue(1, 2) 'Date/time/period sValue = oSegment.DataElementValue(1, 3) 'Date/time/period format qualifier End If 'SegmentID ElseIf sLoopSection = "RFF" Then If sSegmentID = "RFF" Then txtOrderNo.Text = oSegment.DataElementValue(1, 2) End If 'SegmentID ElseIf sLoopSection = "NAD" Then If sSegmentID = "NAD" Then sPartyQlfr = oSegment.DataElementValue(1) End If If sPartyQlfr = "RE" Then If sSegmentID = "NAD" Then sValue = oSegment.DataElementValue(1) 'Party qualifier sValue = oSegment.DataElementValue(2, 1) 'Party identification sValue = oSegment.DataElementValue(2, 2) 'Code list qualifier sValue = oSegment.DataElementValue(2, 3) 'Code list responsible agency, coded sValue = oSegment.DataElementValue(3, 1) 'Name and address line sValue = oSegment.DataElementValue(3, 2) 'Name and address line sValue = oSegment.DataElementValue(3, 3) 'Name and address line sValue = oSegment.DataElementValue(3, 4) 'Name and address line sValue = oSegment.DataElementValue(3, 5) 'Name and address line txtManufacturerName.Text = oSegment.DataElementValue(4, 1) 'Party name sValue = oSegment.DataElementValue(4, 2) 'Party name sValue = oSegment.DataElementValue(4, 3) 'Party name End If ElseIf sPartyQlfr = "ST" Then If sSegmentID = "NAD" Then txtShipToName.Text = oSegment.DataElementValue(4, 1) End If ElseIf sPartyQlfr = "BY" Then If sSegmentID = "NAD" Then txtBuyerName.Text = oSegment.DataElementValue(4, 1) End If End If ElseIf sLoopSection = "NAD;RFF" Then If sSegmentID = "RFF" Then If oSegment.DataElementValue(1, 1) = "VA" Then txtManufRef.Text = oSegment.DataElementValue(1, 2) End If End If 'SegmentID ElseIf sLoopSection = "NAD;CTA" Then If sSegmentID = "CTA" Then If oSegment.DataElementValue(1) = "AR" Then txtARContact.Text = oSegment.DataElementValue(2, 2) End If ElseIf sSegmentID = "COM" Then If oSegment.DataElementValue(1, 2) = "TE" Then txtARTelephone.Text = oSegment.DataElementValue(1, 1) End If End If 'SegmentID ElseIf sLoopSection = "CUX" Then If sSegmentID = "CUX" Then End If 'SegmentID ElseIf sLoopSection = "ALC" Then If sSegmentID = "ALC" Then sAllowanceQlfr = oSegment.DataElementValue(1) End If 'SegmentID ElseIf sLoopSection = "ALC;PCD" Then If sAllowanceQlfr = "C" Then If sSegmentID = "PCD" Then txtToolingPerc.Text = oSegment.DataElementValue(1, 1) End If 'SegmentID End If ElseIf sLoopSection = "ALC;MOA" Then If sAllowanceQlfr = "C" Then If sSegmentID = "MOA" Then txtToolingCharge.Text = oSegment.DataElementValue(1, 2) End If 'sSegmentID End If End If 'sLoopSection ElseIf nArea = 2 Then If sLoopSection = "LIN" Then If sSegmentID = "LIN" Then txtLineNo.Text = oSegment.DataElementValue(1) 'Line item number sValue = oSegment.DataElementValue(2) 'Action request/notification, coded txtBuyerPartNo.Text = oSegment.DataElementValue(3, 1) 'Item number sValue = oSegment.DataElementValue(3, 2) 'Item number type, coded sValue = oSegment.DataElementValue(3, 3) 'Code list qualifier sValue = oSegment.DataElementValue(3, 4) 'Code list responsible agency, coded ElseIf sSegmentID = "QTY" Then txtQty.Text = oSegment.DataElementValue(1, 2) txtMeasure.Text = oSegment.DataElementValue(1, 3) End If 'SegmentID ElseIf sLoopSection = "LIN;PRI" Then If sSegmentID = "PRI" Then txtItemPrice.Text = oSegment.DataElementValue(1, 2) End If 'sSegmentID End If 'sLoopSection ElseIf nArea = 3 Then If sLoopSection = "" Then If sSegmentID = "UNS" Then End If 'SegmentID ElseIf sLoopSection = "MOA" Then If sSegmentID = "MOA" Then sValue = oSegment.DataElementValue(1, 1) 'Monetary amount type qualifier txtTotalAmnt.Text = oSegment.DataElementValue(1, 2) 'Monetary amount sValue = oSegment.DataElementValue(1, 3) 'Currency, coded sValue = oSegment.DataElementValue(1, 4) 'Currency qualifier sValue = oSegment.DataElementValue(1, 5) 'Status, coded End If 'SegmentID ElseIf sLoopSection = "TAX" Then If sSegmentID = "TAX" Then sValue = oSegment.DataElementValue(1) 'Duty/tax/fee function qualifier sValue = oSegment.DataElementValue(2, 1) 'Duty/tax/fee type, coded sValue = oSegment.DataElementValue(2, 2) 'Code list qualifier sValue = oSegment.DataElementValue(2, 3) 'Code list responsible agency, coded sValue = oSegment.DataElementValue(2, 4) 'Duty/tax/fee type sValue = oSegment.DataElementValue(3, 1) 'Duty/tax/fee account identification sValue = oSegment.DataElementValue(3, 2) 'Code list qualifier sValue = oSegment.DataElementValue(3, 3) 'Code list responsible agency, coded sValue = oSegment.DataElementValue(4) 'Duty/tax/fee assessment basis sValue = oSegment.DataElementValue(5, 1) 'Duty/tax/fee rate identification sValue = oSegment.DataElementValue(5, 2) 'Code list qualifier sValue = oSegment.DataElementValue(5, 3) 'Code list responsible agency, coded txtTaxRate.Text = oSegment.DataElementValue(5, 4) 'Duty/tax/fee rate sValue = oSegment.DataElementValue(5, 5) 'Duty/tax/fee rate basis identification sValue = oSegment.DataElementValue(5, 6) 'Code list qualifier sValue = oSegment.DataElementValue(5, 7) 'Code list responsible agency, coded sValue = oSegment.DataElementValue(6) 'Duty/tax/fee category, coded ElseIf sSegmentID = "MOA" Then txtTaxAmount.Text = oSegment.DataElementValue(1, 2) End If 'sSegmentID End If 'sLoopSection End If 'nArea 'GETS THE NEXT DATA SEGMENT Set oSegment = oSegment.Next Loop 'DESTROY OBJECTS Set oEdiDoc = Nothing Set oSchemas = Nothing Set oSegment = Nothing Me.MousePointer = vbNormal End Sub