[AccessD] Parsing fields to normalize data

A.D.Tejpal adtp at touchtelindia.net
Mon Sep 26 07:42:57 CDT 2005


William,

    Sample subroutine given below should be able to get the needful done.

    T_A is the source table with fields with fields named EMSID (number type), Booth_1, Booth_2 and Booth_3 (all text type), while T_B is the target table with fields EMSID (number type) and BoothNum (text type).

    The procedure will take care of all fields in series identified by "Booth_" in the source table (i.e. even if more or less than three).

Best wishes,
A.D.Tejpal
--------------

====================================
Sub Normalize()
    Dim rst1 As DAO.Recordset, rst2 As DAO.Recordset
    Dim fd As DAO.Field
    Dim Txt As String, Rtv As Variant, Cnt As Long
    
    Set rst1 = CurrentDb.OpenRecordset("T_A")
    Set rst2 = CurrentDb.OpenRecordset("T_B")
    
    Do While Not rst1.EOF
        For Each fd In rst1.Fields
            If Left(fd.Name, 6) = "Booth_" Then
                Txt = fd.Value
                Txt = Replace(Txt, Space(1), "")
                Rtv = Split(Txt, "/")
                For Cnt = LBound(Rtv) To UBound(Rtv)
                    With rst2
                        .AddNew
                        .Fields("EMSID") = rst1.Fields("EMSID")
                        .Fields("BoothNum") = Rtv(Cnt)
                        .Update
                    End With
                Next
            End If
        Next
        rst1.MoveNext
    Loop
    
    rst1.Close
    rst2.Close
    Set rst1 = Nothing
    Set rst2 = Nothing
    Set fd = Nothing
End Sub
====================================

  ----- Original Message ----- 
  From: William Hindman 
  To: Access Developers discussion and problem solving 
  Sent: Monday, September 26, 2005 05:42
  Subject: [AccessD] Parsing fields to normalize data


  ..given a record containing the following data: (from a legacy DOS app)

  field name: EMSID
  field type: long
  record data: 44318

  field name: Booth Number or numbers (#1)
  field type: text
  record data: 649/651/   748/   750

  field name: Booth Number or numbers (#2)
  field type: text
  record data: 653/655/   657/   659/   752/   754/   756/   1358

  field name: Booth Number or numbers (#3)
  field type: text
  record data: DF-7/DF-8

  ..I need to make a new table with the following data structure: (sort order 
  is immaterial)

  EMSID    BoothNum
  44318    649
  44318    651
  44318    748
  44318    750
  44318    653
  44318    655
  44318    657
  44318    659
  44318    752
  44318    754
  44318    756
  44318    1358
  44318    DF-7
  44318    DF-8

  ..I know I've done this before but it was back in the days when my brain 
  cells weren't full of plaque :(
  ..I've racked my remaining shreds and tried dozens of supposed solutions 
  and am now throwing things at the wall ...some stick :(
  ..will some poor soul here take mercy on me and end my misery ...other than 
  by shooting me?

  William ...working waaaaaay too late on a Sunday after watching my Dolphins 
  win today by the hair in their teeth :) 



More information about the AccessD mailing list