Private Sub Command0_Click()
'This is just an example program to show how to translate an EDI X12 130 file
'in VB Script with the Framework EDI component

    Dim oEdiDoc As Fredi.ediDocument
    Dim oSegment As Fredi.ediDataSegment
    Dim oSchemas As Fredi.ediSchemas
    Dim oConn As ADODB.Connection
    
    Dim oRsInterchange As ADODB.Recordset
    Dim oRsGroup As ADODB.Recordset
    Dim oRs130Header As ADODB.Recordset
    Dim oRs130TestScores As ADODB.Recordset
    Dim oRs130IndividualInfo As ADODB.Recordset
    Dim oRs130Immunization As ADODB.Recordset
    Dim oRs130AcademicSession As ADODB.Recordset
    Dim oRs130Awards As ADODB.Recordset
    Dim oRs130CourseRecord As ADODB.Recordset
    
    Dim sConn As String
    Dim sInterchangeControlNo As String
    Dim sGroupControlNo As String
    Dim sTSNo As String
    Dim sTSControlNo As String
    Dim sPath As String
    
    Dim nInterchangeKey As Long
    Dim nGroupKey As Long
    Dim nTsKey As Long

    Dim i As Integer
    Dim sEntity As String
    Dim sSefFile As String
    Dim sEdiFile As String
    Dim sSegmentID As String
    Dim sLoopSection As String
    Dim nArea As Integer
    Dim iIndex As Integer
    Dim sQlfr As String
    
    
    sPath = CurrentProject.Path & "\"

    sConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & sPath & "tran130.mdb"
    Set oConn = New ADODB.Connection
    oConn.Open sConn

    'The InterchangeIndex table stores information for each Interchange received.
    Set oRsInterchange = New ADODB.Recordset
    oRsInterchange.Open "InterchangeIndex", oConn, adOpenDynamic, adLockOptimistic
    
    'The GroupIndex table stores information for each Group received.
    Set oRsGroup = New ADODB.Recordset
    oRsGroup.Open "GroupIndex", oConn, adOpenDynamic, adLockOptimistic
    
    'The 130Header table stores information of the Transaction Sets
    Set oRs130Header = New ADODB.Recordset
    oRs130Header.Open "130Header", oConn, adOpenDynamic, adLockOptimistic
    
    'The 130TestScores table
    Set oRs130TestScores = New ADODB.Recordset
    oRs130TestScores.Open "130TestScores", oConn, adOpenDynamic, adLockOptimistic
    
    'The 130IndividualInfo table
    Set oRs130IndividualInfo = New ADODB.Recordset
    oRs130IndividualInfo.Open "130IndividualInfo", oConn, adOpenDynamic, adLockOptimistic

    'The 130Immunization table
    Set oRs130Immunization = New ADODB.Recordset
    oRs130Immunization.Open "130Immunization", oConn, adOpenDynamic, adLockOptimistic

    'The 130AcademicSession table
    Set oRs130AcademicSession = New ADODB.Recordset
    oRs130AcademicSession.Open "130AcademicSession", oConn, adOpenDynamic, adLockOptimistic

    'The 130Awards table
    Set oRs130Awards = New ADODB.Recordset
    oRs130Awards.Open "130Awards", oConn, adOpenDynamic, adLockOptimistic

    'The 130CourseRecord table
    Set oRs130CourseRecord = New ADODB.Recordset
    oRs130CourseRecord.Open "130CourseRecord", oConn, adOpenDynamic, adLockOptimistic

    sSefFile = sPath & "130_4010.SEF"
    sEdiFile = sPath & "130.x12"
    
    Set oEdiDoc = New Fredi.ediDocument
    
    'Makes certain that the internal Standard Reference Library is not used, but only
    'the SEF file provided.
    Set oSchemas = oEdiDoc.GetSchemas
    oSchemas.EnableStandardReference = False
    
    
    'Loads the SEF file and EDI file.
    oEdiDoc.LoadSchema sSefFile, 0
    oEdiDoc.LoadEdi sEdiFile
    
    'Gets the first data segment of the EDI file
    Set oSegment = oEdiDoc.FirstDataSegment
   
    'Traverse thru the EDI file.  A data segment is identified by its segment ID, its loop
    'section, and Area (or table) number.
    'The values of the data elements of the segments are then stored into a database
    Do While Not oSegment Is Nothing
        sSegmentID = oSegment.ID
        sLoopSection = oSegment.LoopSection
        nArea = oSegment.Area
        
        If nArea = 0 Then
            If sSegmentID = "ISA" Then
                oRsInterchange.AddNew
                oRsInterchange("InterchangeControlNo").Value = oSegment.DataElementValue(13)
                oRsInterchange("SenderID_Qlfr").Value = oSegment.DataElementValue(5)
                oRsInterchange("SenderID").Value = oSegment.DataElementValue(6)
                oRsInterchange("ReceiverID_Qlfr").Value = oSegment.DataElementValue(7)
                oRsInterchange("ReceiverID").Value = oSegment.DataElementValue(8)
                oRsInterchange("Version").Value = oSegment.DataElementValue(12)
                
            ElseIf sSegmentID = "GS" Then
                oRsGroup.AddNew
                oRsGroup("InterchangeKey").Value = oRsInterchange("InterchangeKey").Value
                oRsGroup("GroupNo").Value = oSegment.DataElementValue(6)
                oRsGroup("Version").Value = oSegment.DataElementValue(8)
                oRsGroup("FunctionalIdCode").Value = oSegment.DataElementValue(1)
                oRsGroup("SenderDept").Value = oSegment.DataElementValue(2)
                oRsGroup("ReceiverDept").Value = oSegment.DataElementValue(3)
                
            ElseIf sSegmentID = "IEA" Then
                oRsInterchange.Update
            
            ElseIf sSegmentID = "GE" Then
                oRsGroup.Update
            End If
        
        ElseIf nArea = 1 Then
            If sLoopSection = "" Then
                If sSegmentID = "ST" Then
                    oRs130Header.AddNew
                    oRs130Header("GroupKey").Value = oRsGroup("GroupKey").Value
                    oRs130Header("TransactionSetControlNo").Value = oSegment.DataElementValue(2)
                    oRs130Header("TransactionSetNo").Value = oSegment.DataElementValue(1)
                
               ElseIf sSegmentID = "BGN" Then
                   oRs130Header("PurposeCode").Value = oSegment.DataElementValue(1)     'Transaction Set Purpose Code
                   oRs130Header("ReferenceId").Value = oSegment.DataElementValue(2)     'Reference Identification
                   oRs130Header("Date").Value = oSegment.DataElementValue(3)     'Date
     
               ElseIf sSegmentID = "ERP" Then
                   oRs130Header("TranscriptType").Value = oSegment.DataElementValue(1)     'Transaction Type Code
                   oRs130Header("ReasonCode").Value = oSegment.DataElementValue(2)     'Status Reason Code
     
               ElseIf sSegmentID = "REF" Then
                   If oSegment.DataElementValue(1) = "SY" Then     'Reference Identification Qualifier
                        oRs130Header("SSN").Value = oSegment.DataElementValue(2)     'Reference Identification
                    End If
                End If
                
            ElseIf sLoopSection = "N1" Then
                'Obtains the qulaifier for the loop to determine the kind of information the
                'segments in the loop holds
                If sSegmentID = "N1" Then
                    sEntity = oSegment.DataElementValue(1)
                End If
                
                If sEntity = "AS" Then  'Postsecondary Education Sender
                    If sSegmentID = "N1" Then
                        oRs130Header("SenderName").Value = oSegment.DataElementValue(2)
                        
                    ElseIf sSegmentID = "N3" Then
                        oRs130Header("SenderAddress").Value = oSegment.DataElementValue(1)
                        
                    ElseIf sSegmentID = "N4" Then
                        oRs130Header("SenderCity").Value = oSegment.DataElementValue(1)
                    End If
                    
                ElseIf sEntity = "AT" Then  'Postsecondary Education Recipient
                    If sSegmentID = "N1" Then
                        oRs130Header("ReceiverName").Value = oSegment.DataElementValue(2)
                        
                    ElseIf sSegmentID = "N3" Then
                        oRs130Header("ReceiverAddress").Value = oSegment.DataElementValue(1)
                        
                    ElseIf sSegmentID = "N4" Then
                        oRs130Header("ReceiverCity").Value = oSegment.DataElementValue(1)
                    End If
                End If  'sEntity
                
            ElseIf sLoopSection = "IN1" Then
               If sSegmentID = "IN1" Then
                    If Not oRs130IndividualInfo.BOF Then
                        oRs130IndividualInfo.Update
                    End If
                    
                    oRs130IndividualInfo.AddNew
                    oRs130IndividualInfo("TsKey").Value = oRs130Header("TsKey").Value
                    
               ElseIf sSegmentID = "IN2" Then
                    sQlfr = oSegment.DataElementValue(1)
                    If sQlfr = "05" Then
                        oRs130IndividualInfo("Lastname").Value = oSegment.DataElementValue(2)      'Last Name
                    ElseIf sQlfr = "02" Then
                        oRs130IndividualInfo("Firstname").Value = oSegment.DataElementValue(2)      'First Name
                    ElseIf sQlfr = "07" Then
                        oRs130IndividualInfo("MiddleInitial").Value = oSegment.DataElementValue(2)      'Middle Initial
                    End If
               End If   'Segment ID
               
            ElseIf sLoopSection = "IN1;N3" Then
               If sSegmentID = "N3" Then
                    oRs130IndividualInfo("Address").Value = oSegment.DataElementValue(1)
               
               ElseIf sSegmentID = "N4" Then
                    oRs130IndividualInfo("City").Value = oSegment.DataElementValue(1)
                    oRs130IndividualInfo("State").Value = oSegment.DataElementValue(2)
                    oRs130IndividualInfo("Zip").Value = oSegment.DataElementValue(3)
               End If   'Segment ID
               
                
            ElseIf sLoopSection = "SST" Then
               If sSegmentID = "SST" Then
                   oRs130IndividualInfo("HSGraduationType").Value = oSegment.DataElementValue(1)
                   oRs130IndividualInfo("HSGraduationDate").Value = oSegment.DataElementValue(3)
     
               ElseIf sSegmentID = "N1" Then
                   oRs130IndividualInfo("InstitutionType").Value = oSegment.DataElementValue(1)     'Entity Identifier Code
                    oRs130IndividualInfo("InstitutionName").Value = oSegment.DataElementValue(2)      'Name
                
                ElseIf sSegmentID = "N4" Then
                    oRs130IndividualInfo("InstitutionCity").Value = oSegment.DataElementValue(1)
                    oRs130IndividualInfo("InstitutionState").Value = oSegment.DataElementValue(2)
               End If   'Segment ID
     
            ElseIf sLoopSection = "ATV" Then
               If sSegmentID = "ATV" Then
                    If Not oRs130Awards.BOF Then
                        oRs130Awards.Update
                    End If
                    
                    oRs130Awards.AddNew
                    oRs130Awards("TsKey").Value = oRs130Header("TsKey").Value
                    oRs130Awards("Title").Value = oSegment.DataElementValue(3)
     
               ElseIf sSegmentID = "DTP" Then
                   oRs130Awards("Date").Value = oSegment.DataElementValue(3)
               End If   'Segment ID
     
            ElseIf sLoopSection = "TST" Then
               If sSegmentID = "TST" Then
                    If Not oRs130TestScores.BOF Then
                        oRs130TestScores.Update
                    End If
                    
                    oRs130TestScores.AddNew
                    oRs130TestScores("TsKey").Value = oRs130Header("TsKey").Value
               
                   oRs130TestScores("TestName").Value = oSegment.DataElementValue(2)     'Name
                   oRs130TestScores("TestDate").Value = oSegment.DataElementValue(4)     'Date Time Period
                   oRs130TestScores("StudentGradeLevel").Value = oSegment.DataElementValue(7)     'Level of Individual, Test, or Course Code
                End If 'SegmentID
               
            ElseIf sLoopSection = "TST;SBT" Then
               If sSegmentID = "SBT" Then
                   oRs130TestScores("TestCode").Value = oSegment.DataElementValue(1)
               
               ElseIf sSegmentID = "SRE" Then
                   oRs130TestScores("StandardScore").Value = oSegment.DataElementValue(2)
               End If   'sSegmentID
                
            End If  'sLoopSection
                
        ElseIf nArea = 2 Then
            If sLoopSection = "" Then
                If sSegmentID = "SE" Then
                    oRs130Header.Update
                End If
                
            ElseIf sLoopSection = "LX" Then
               If sSegmentID = "LX" Then
                   sValue = oSegment.DataElementValue(1)     'Assigned Number
     
               ElseIf sSegmentID = "IMM" Then
                    If Not oRs130Immunization.BOF Then
                        oRs130Immunization.Update
                    End If
                    
                    oRs130Immunization.AddNew
                    oRs130Immunization("TsKey").Value = oRs130Header("TsKey").Value
                   
                   oRs130Immunization("ImmunCode").Value = oSegment.DataElementValue(1)     'Immunization Type Code
                   oRs130Immunization("ImmunDate").Value = oSegment.DataElementValue(3)     'Date Time Period
               End If   'Segment ID
     
            ElseIf sLoopSection = "LX;SES" Then
               If sSegmentID = "SES" Then
                    If Not oRs130AcademicSession.BOF Then
                        oRs130AcademicSession.Update
                    End If
                    
                    oRs130AcademicSession.AddNew
                    oRs130AcademicSession("TsKey").Value = oRs130Header("TsKey").Value
                   oRs130AcademicSession("SessionDate").Value = oSegment.DataElementValue(1)     'Date Time Period
                   oRs130AcademicSession("SessionCode").Value = oSegment.DataElementValue(4)     'Session Code
                   oRs130AcademicSession("SessionName").Value = oSegment.DataElementValue(5)      'Name
                   oRs130AcademicSession("SessionStartDate").Value = oSegment.DataElementValue(7)     'Date Time Period
                   oRs130AcademicSession("SessionEndDate").Value = oSegment.DataElementValue(9)     'Date Time Period
                   oRs130AcademicSession("SessionGradeCode").Value = oSegment.DataElementValue(10)     'Level of Individual, Test, or Course Code
                   oRs130AcademicSession("StatusCode").Value = oSegment.DataElementValue(14)     'Status Reason Code
               End If   'Segment ID
          
            ElseIf sLoopSection = "LX;SES;CRS" Then
               If sSegmentID = "CRS" Then
                    If Not oRs130CourseRecord.BOF Then
                        oRs130CourseRecord.Update
                    End If
                    
                    oRs130CourseRecord.AddNew
                    oRs130CourseRecord("SessionKey").Value = oRs130AcademicSession("SessionKey").Value
                   oRs130CourseRecord("CreditCode").Value = oSegment.DataElementValue(1)     'Basis for Academic Credit Code
                   oRs130CourseRecord("CreditTypeCode").Value = oSegment.DataElementValue(2)     'Academic Credit Type Code
                   oRs130CourseRecord("CourseGrade").Value = oSegment.DataElementValue(6)     'Academic Grade
                   oRs130CourseRecord("GradeLevel").Value = oSegment.DataElementValue(8)     'Academic Grade or Course Level Code
                   oRs130CourseRecord("Points").Value = oSegment.DataElementValue(12)     'Academic Credit Type Code
                   oRs130CourseRecord("CourseSubject").Value = oSegment.DataElementValue(14)     'Academic Credit Type Code
                   oRs130CourseRecord("CourseNumber").Value = oSegment.DataElementValue(15)     'Academic Grade
                   oRs130CourseRecord("CourseTitle").Value = oSegment.DataElementValue(16)     'Academic Grade or Course Level Code
               End If   'Segment ID
            End If  'sLoopSection
            
        End If  'nArea
        
        Set oSegment = oSegment.Next
    Loop
    
    oRs130CourseRecord.Update
    oRs130AcademicSession.Update
    oRs130Immunization.Update
    oRs130TestScores.Update
    oRs130Awards.Update
    oRs130IndividualInfo.Update
    
    Set oSegment = Nothing
    
    MsgBox "Done"
    
End Sub