VERSION 5.00 Object = "{67397AA1-7FB1-11D0-B148-00A0C922E820}#6.0#0"; "MSADODC.OCX" Object = "{CDE57A40-8B86-11D0-B3C6-00A0C90AEA82}#1.0#0"; "MSDATGRD.OCX" Begin VB.Form frmBOM Caption = "BOM" ClientHeight = 5085 ClientLeft = 60 ClientTop = 450 ClientWidth = 9990 ControlBox = 0 'False LinkTopic = "Form1" ScaleHeight = 5085 ScaleWidth = 9990 StartUpPosition = 3 'Windows Default Begin VB.CommandButton cmdReadSolidBOM Caption = "Read SolidWorks BOM" Height = 615 Left = 5850 TabIndex = 13 Top = 3240 Width = 1815 End Begin VB.CommandButton cmdReadAltimaBOM Caption = "Read Altima BOM" Height = 615 Left = 4320 TabIndex = 10 Top = 3240 Width = 1515 End Begin VB.ListBox lstStatus Height = 1035 Left = 540 TabIndex = 9 Top = 3870 Width = 9405 End Begin VB.CommandButton cmdShow Caption = "Show Loaded BOM" Height = 615 Left = 2670 TabIndex = 8 Top = 3240 Width = 1635 End Begin VB.CommandButton cmdClearBOM Caption = "Clear BOM" Height = 615 Left = 1620 TabIndex = 7 Top = 3240 Width = 1035 End Begin VB.CommandButton cmdHide Caption = "Close" Height = 345 Left = 8250 TabIndex = 5 Top = 60 Width = 1635 End Begin VB.TextBox txtGood Height = 255 Left = 480 TabIndex = 4 Top = 2880 Width = 1215 End Begin VB.CommandButton cmdReadBOM Caption = "Read BOM" Height = 615 Left = 540 TabIndex = 3 Top = 3240 Width = 1065 End Begin VB.TextBox txtBOM Height = 255 Left = 1200 TabIndex = 2 Text = "J:\Broyles\8235482.bom.1" ToolTipText = "Full path and file name" Top = 480 Width = 8745 End Begin MSDataGridLib.DataGrid DataGrid1 Bindings = "Cmdproc-5.frx":0000 Height = 1575 Left = 480 TabIndex = 1 Top = 840 Width = 7155 _ExtentX = 12621 _ExtentY = 2778 _Version = 393216 HeadLines = 1 RowHeight = 15 FormatLocked = -1 'True BeginProperty HeadFont {0BE35203-8F91-11CE-9DE3-00AA004BB851} Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty ColumnCount = 5 BeginProperty Column00 DataField = "WASM#" Caption = "WASM#" BeginProperty DataFormat {6D835690-900B-11D0-9484-00A0C91110ED} Type = 0 Format = "" HaveTrueFalseNull= 0 FirstDayOfWeek = 0 FirstWeekOfYear = 0 LCID = 1033 SubFormatType = 0 EndProperty EndProperty BeginProperty Column01 DataField = "WASMR" Caption = "WASMR" BeginProperty DataFormat {6D835690-900B-11D0-9484-00A0C91110ED} Type = 0 Format = "" HaveTrueFalseNull= 0 FirstDayOfWeek = 0 FirstWeekOfYear = 0 LCID = 1033 SubFormatType = 0 EndProperty EndProperty BeginProperty Column02 DataField = "WCMP#" Caption = "WCMP#" BeginProperty DataFormat {6D835690-900B-11D0-9484-00A0C91110ED} Type = 0 Format = "" HaveTrueFalseNull= 0 FirstDayOfWeek = 0 FirstWeekOfYear = 0 LCID = 1033 SubFormatType = 0 EndProperty EndProperty BeginProperty Column03 DataField = "WQTY" Caption = "WQTY" BeginProperty DataFormat {6D835690-900B-11D0-9484-00A0C91110ED} Type = 0 Format = "" HaveTrueFalseNull= 0 FirstDayOfWeek = 0 FirstWeekOfYear = 0 LCID = 1033 SubFormatType = 0 EndProperty EndProperty BeginProperty Column04 DataField = "WENTD" Caption = "WENTD" BeginProperty DataFormat {6D835690-900B-11D0-9484-00A0C91110ED} Type = 0 Format = "" HaveTrueFalseNull= 0 FirstDayOfWeek = 0 FirstWeekOfYear = 0 LCID = 1033 SubFormatType = 0 EndProperty EndProperty SplitCount = 1 BeginProperty Split0 BeginProperty Column00 EndProperty BeginProperty Column01 ColumnWidth = 645.165 EndProperty BeginProperty Column02 EndProperty BeginProperty Column03 ColumnWidth = 1065.26 EndProperty BeginProperty Column04 ColumnWidth = 1590.236 EndProperty EndProperty End Begin MSAdodcLib.Adodc Adodc1 Height = 330 Left = 480 Top = 2460 Width = 7155 _ExtentX = 12621 _ExtentY = 582 ConnectMode = 0 CursorLocation = 3 IsolationLevel = -1 ConnectionTimeout= 15 CommandTimeout = 30 CursorType = 3 LockType = 3 CommandType = 2 CursorOptions = 0 CacheSize = 50 MaxRecords = 0 BOFAction = 0 EOFAction = 0 ConnectStringType= 3 Appearance = 1 BackColor = -2147483643 ForeColor = -2147483640 Orientation = 0 Enabled = -1 Connect = "DSN=ODBCrms" OLEDBString = "" OLEDBFile = "" DataSourceName = "ODBCrms" OtherAttributes = "" UserName = "EGNETLINK" Password = "DRAWINGS" RecordSource = "EGBWP1A0" Caption = "Adodc1" BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty _Version = 393216 End Begin VB.TextBox txtAssembly Height = 285 Left = 1200 TabIndex = 0 Text = "82354821" ToolTipText = "Must be 8 characters PN and rev" Top = 120 Width = 3255 End Begin VB.Label Label2 Caption = "BOM File" Height = 255 Left = 450 TabIndex = 12 Top = 480 Width = 855 End Begin VB.Label Label1 Caption = "Assembly" Height = 255 Left = 450 TabIndex = 11 Top = 120 Width = 855 End Begin VB.Label lblStat Height = 195 Left = 2340 TabIndex = 6 Top = 3000 Width = 4635 End End Attribute VB_Name = "frmBOM" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Public Sub cmdClearBOM_Click() Dim Rcds As Variant Dim Parms As Variant If cmdClearBOM.Tag <> "X" Then cmdClearBOM.Tag = "X" Set Links = New ClearBOM ass$ = left(txtAssembly, 7) rev$ = right(left(Trim(txtAssembly) + " ", 8), 1) loglist ("StartClear - " + ass$ + " " + rev$) ' p1$ = left$(ass$ + Space$(15), 15) 'partnumber to get P2$ = left$(rev$ + Space$(1), 1) 'filename p3$ = Space$(2) 'status ' Parms = Array(p1$, P2$, p3$) Links.cm_ACTIVEXSDK_CUSTINS.Execute Rcds, Parms, adCmdText retcd$ = Links.cm_ACTIVEXSDK_CUSTINS.Parameters(2).value ' On Error GoTo BadCBom '' '' Clear out the old records '' ' loglist ("clear rec " + "(([WASM#] = '" + ass$ + "') and ([WASMR] = '" + rev$ + "'))") ' Adodc1.Recordset.Filter = "(([WASM#] = '" + ass$ + "') and ([WASMR] = '" + rev$ + "'))" ' ix = 1 ' Adodc1.Recordset.MoveFirst ' Do While Adodc1.Recordset.RecordCount > 0 ' loglist "deleting rec rcnt: " + Str(ix) ' If ((UCase(Trim(Adodc1.Recordset![WASM#])) = Trim(UCase(ass$))) And (UCase(Trim(Adodc1.Recordset![WASMR])) = Trim(UCase(rev$)))) Then ' Adodc1.Recordset.Delete ' Adodc1.Recordset.MoveFirst ' Else ' Adodc1.Recordset.MoveNext ' End If ' ix = ix + 1 ' If Adodc1.Recordset.EOF Then Exit Do ' Loop loglist "clear done! RC=" + retcd$ cmdClearBOM.Tag = "" Else loglist "clear FAILED! BOM BUSY" End If ' Exit Sub BadCBom: Resume Next ' Adodc1.Refresh End Sub Private Sub cmdHide_Click() frmBOM.Hide End Sub Public Sub cmdReadAltimaBOM_Click() If cmdReadAltimaBOM.Tag <> "X" Then cmdReadAltimaBOM.Tag = "X" fln$ = txtBOM ass$ = left(txtAssembly, 7) rev$ = right(left(Trim(txtAssembly) + " ", 8), 1) goodread = 0 loglist ("StartRead alt - " + ass$) loglist (" from file - " + fln$) ' lblStat.Caption = "StartRead" If ExistsNew(fln$) Then On Error GoTo BadAltBom ' ' parse the file ' loglist "Parsing file " + fln$ fl = FreeFile BomRecs = 0 Open fln$ For Input As #fl ' ' skip first two records ' Line Input #fl, a$ ' column headers Line Input #fl, a$ ' blank line flstate = 0 Do While Not EOF(fl) Line Input #fl, a$ ax$ = UCase(a$) If Trim(ax$) <> "" Then Call PARSE(ax$, qty$, ",", RC%): qty$ = ReplaceStr(qty$, Chr$(34), "") Call PARSE(ax$, Pn$, ",", RC%): Pn$ = left(ReplaceStr(Pn$, Chr$(34), ""), 7) If Pn$ <> "" Then 'Pn$ = prt$ loglist "Adding rec:" + ass$ + Pn$ qut$ = Format(qty, "#.0") Adodc1.Recordset.AddNew Adodc1.Recordset![WASM#] = UCase(ass$) Adodc1.Recordset!WASMR = UCase(rev$) Adodc1.Recordset![WCMP#] = Pn$ Adodc1.Recordset!WQTY = LPad(Format(Val(qut$), "####.000"), 8) Adodc1.Recordset!WENTD = Format(Now, "YYYYMMDDHHNNSS") Adodc1.Recordset.Update BomRecs = BomRecs + 1 End If End If Loop Close #fl loglist "Done!" If BomRecs = 0 Then goodread = 1 ' bad bom loglist "BAD altBOM No Records added" End If Else loglist "BAD altBOM Didn't find BOM - " + fln$ goodread = 2 ' No bom End If txtGood.Text = goodread txtBOM = "" txtAssembly = "" Adodc1.Refresh cmdReadAltimaBOM.Tag = "" Else loglist "altBOM BUSY" End If On Error GoTo 0 AltBOMDIE: Exit Sub BadAltBom: txtGood.Text = 1 ' bad bom txtBOM = "" txtAssembly = "" loglist "BAD altBOM On ERROR Kick out" ' Adodc1.Refresh cmdReadAltimaBOM.Tag = "" Resume AltBOMDIE End Sub Public Sub cmdReadSolidBOM_Click() Call ReadSolidBOM End Sub Public Sub ReadSolidBOM() If cmdReadSolidBOM.Tag <> "X" Then cmdReadSolidBOM.Tag = "X" fln$ = txtBOM ass$ = left(txtAssembly, 7) rev$ = right(left(Trim(txtAssembly) + " ", 8), 1) goodread = 0 loglist ("StartRead SW - " + ass$ + " " + rev$) loglist (" from file - " + fln$) ' lblStat.Caption = "StartRead" If ExistsNew(fln$) Then ' ' parse the file ' ' Tab Delimited ignore first line ' ' ItemNoPartNoQtyDescr ' loglist "File Exists " fl = FreeFile BomRecs = 0 Open fln$ For Input As #fl flstate = 0 If Not EOF(fl) Then bad = False For ix = 1 To Len(a$) b = Asc(Mid(a$, ix, 1)) If b >= 255 Then bad = True Exit For End If Next End If Close fl If bad Then goodread = 1 'bad bom txtGood.Text = goodread txtBOM = "" txtAssembly = "" loglist "BOM BAD" Else Open fln$ For Input As #fl Do While Not EOF(fl) Line Input #fl, a$ ax$ = UCase(a$) loglist "Number of Tabs in rec: " + Str(Howmany%(ax$, Chr(9))) If left(ax$, 4) = "ITEM" Then ax$ = "" 'ignore heading If Trim(ax$) <> "" Then Call PARSE(ax$, itm$, Chr(9), rcx%) Call PARSE(ax$, Pn$, Chr(9), rcx%) Call PARSE(ax$, quty$, Chr(9), rcx%) loglist "Adding rec:" + ass$ + Pn$ qut$ = Format(Val(quty$), "#.0") Adodc1.Recordset.AddNew Adodc1.Recordset![WASM#] = UCase(ass$) loglist UCase(ass$) Adodc1.Recordset!WASMR = UCase(rev$) loglist UCase(rev$) Adodc1.Recordset![WCMP#] = Pn$ loglist Pn$ Adodc1.Recordset!WQTY = LPad(Format(Val(qut$), "####.000"), 8) loglist LPad(Format(Val(qut$), "####.000"), 8) Adodc1.Recordset!WENTD = Format(Now, "YYYYMMDDHHNNSS") loglist Format(Now, "YYYYMMDDHHNNSS") Adodc1.Recordset.Update loglist "----------" BomRecs = BomRecs + 1 End If Loop Close #fl End If End If txtGood.Text = goodread txtBOM = "" txtAssembly = "" Adodc1.Refresh loglist "----------complete----------" cmdReadSolidBOM.Tag = "" Else loglist "BOM BUSY" End If On Error GoTo 0 End Sub Public Sub cmdReadBOM_Click() If cmdReadBOM.Tag <> "X" Then cmdReadBOM.Tag = "X" fln$ = txtBOM ass$ = left(txtAssembly, 7) rev$ = right(left(Trim(txtAssembly) + " ", 8), 1) goodread = 0 loglist ("StartRead - " + ass$) ' lblStat.Caption = "StartRead" If ExistsNew(fln$) Then On Error GoTo BadBom ' ' parse the file ' ' 1 Sub-Assembly 8241378 '--qty-|----descr----|---PN-- '123456789012345678901234567890 ' 12345678901234 ' 1-6 8-20 22-> ' left(ax$,6):mid(ax$,8,24):mid(ax$,22) ' loglist "Parsing file " + fln$ fl = FreeFile BomRecs = 0 Open fln$ For Input As #fl flstate = 0 Do While Not EOF(fl) Line Input #fl, a$ ax$ = UCase(a$) Select Case flstate Case 0 If InStr(ax$, "ASSEMBLY") <> 0 Then flstate = 1 End If Case 1 If Trim(ax$) = "" Then flstate = 2 Else dsc$ = Trim(Mid(ax$, 8, 14)): prt$ = Mid(ax$, 22) qty = Val(Trim(left(ax$, 6))) Pn$ = "" d = 0 If (dsc$ <> "PART") And (dsc$ <> "SUB-ASSEMBLY") Then loglist "BAD BOM dsc wasn't right - " + dsc$ goodread = 1 ' bad bom flstate = 2 Else Pn$ = prt$ loglist "Adding rec:" + ass$ + Pn$ qut$ = Format(qty, "#.0") Adodc1.Recordset.AddNew Adodc1.Recordset![WASM#] = UCase(ass$) Adodc1.Recordset!WASMR = UCase(rev$) Adodc1.Recordset![WCMP#] = Pn$ Adodc1.Recordset!WQTY = LPad(Format(Val(qut$), "####.000"), 8) Adodc1.Recordset!WENTD = Format(Now, "YYYYMMDDHHNNSS") Adodc1.Recordset.Update BomRecs = BomRecs + 1 End If End If Case Else Exit Do End Select Loop Close #fl loglist "Done!" If BomRecs = 0 Then goodread = 1 ' bad bom loglist "BAD BOM No Records added" End If Else loglist "BAD BOM Didn't find BOM - " + fln$ goodread = 2 ' No bom End If txtGood.Text = goodread txtBOM = "" txtAssembly = "" Adodc1.Refresh cmdReadBOM.Tag = "" Else loglist "BOM BUSY" End If On Error GoTo 0 BOMDIE: Exit Sub BadBom: txtGood.Text = 1 ' bad bom txtBOM = "" txtAssembly = "" loglist "BAD BOM On ERROR Kick out" ' Adodc1.Refresh cmdReadBOM.Tag = "" Resume BOMDIE End Sub Private Sub cmdShow_Click() ass$ = left(txtAssembly, 7) rev$ = right(left(Trim(txtAssembly) + " ", 8), 1) loglist "Start Display of BOM - " + ass$ + " " + rev$ On Error Resume Next ' ' Clear out the old records ' loglist "clear rec " + "(([WASM#] = '" + ass$ + "') and ([WASMR] = '" + rev$ + "'))" Adodc1.Recordset.Filter = "(([WASM#] = '" + ass$ + "') and ([WASMR] = '" + rev$ + "'))" End Sub Private Sub loglist(xxx$) lblStat.Caption = xxx$ lstStatus.AddItem xxx$ While lstStatus.ListCount > 600 lstStatus.RemoveItem (0) Wend End Sub