16 KiB
16 KiB
Data Sheet Select
Record Source
Controls
Control Name | Reference |
---|---|
Field1 | PartNumber (from Tables/Process) |
VBA Code
Option Compare Database 'Use database order for string comparisons
Private Sub AddAProcShet()
Dim MainDB As Database, MainSet As Recordset
Dim Main2DB As Database, Main2Set As Recordset
Dim MachNamesDB As Database, MachNamesSet As Recordset
Dim MachQDB As Database, MachQSet As Recordset
Dim MainTableDef As TableDef
Set MainDB = DBEngine.Workspaces(0).Databases(0)
Set Main2DB = DBEngine.Workspaces(0).Databases(0)
Set MachNamesDB = DBEngine.Workspaces(0).Databases(0)
Set MachQDB = DBEngine.Workspaces(0).Databases(0)
GoSub Open_Mains
Set MachNamesSet = MachNamesDB.OpenRecordset("MachineNames", DB_OPEN_TABLE) ' Create dynaset.
Set MachQSet = MachQDB.OpenRecordset("Machines", DB_OPEN_TABLE) ' Create dynaset.
If (Not (IsNull(Field1))) Or (Trim$(NewPartName_Parm$) = "") Then
PartN$ = Field1
If PartN$ <> "" Then
MainSet.AddNew
MainSet.PartNumber = PartN$
MainSet.Update
Refresh
MachNamesSet.MoveFirst
While Not (MachNamesSet.EOF)
A$ = MachNamesSet.MachineName
MachQSet.AddNew
MachQSet.MachineName = A$
MachQSet.Tool = "***"
MachQSet.PartNumber = PartN$
MachQSet.Update
MachNamesSet.MoveNext
Wend
Refresh
If NewPartName_Parm$ <> "NEW" Then
MainSet.Seek "=", NewPartName_Parm$
Main2Set.Seek "=", PartN$
Main2Set.Edit
For i = 0 To MainSet.Fields.Count - 1
Debug.Print "; "; MainSet.Fields(i).name
If MainSet.Fields(i).name <> "PartNo" Then
Main2Set.Fields(i) = MainSet.Fields(i)
End If
Next i
Main2Set.PartNumber = PartN$
Main2Set.Update
GoSub OPEN_Addnl
MainSet.Seek "=", NewPartName_Parm$
Do While Trim$(MainSet.PartNumber) = NewPartName_Parm$
Main2Set.AddNew
For i = 0 To MainSet.Fields.Count - 1
Debug.Print "; "; MainSet.Fields(i).name
If MainSet.Fields(i).name <> "PartNo" Then
Main2Set.Fields(i) = MainSet.Fields(i)
End If
Next i
Main2Set.PartNumber = PartN$
Main2Set.Update
MainSet.MoveNext
Loop
GoSub OPEN_Machs
MainSet.Seek "=", NewPartName_Parm$
Main2Set.Seek "=", PartN$
Do While Trim$(MainSet.PartNumber) = NewPartName_Parm$
Main2Set.Edit
For i = 0 To MainSet.Fields.Count - 1
Debug.Print "; "; MainSet.Fields(i).name
If MainSet.Fields(i).name <> "PartNo" Then
Main2Set.Fields(i) = MainSet.Fields(i)
End If
Next i
Main2Set.PartNumber = PartN$
Main2Set.Update
MainSet.MoveNext
Main2Set.MoveNext
Loop
GoSub Open_Mains
End If
End If
End If
Field1 = ""
Exit Sub
Open_Mains:
Set MainSet = MainDB.OpenRecordset("Process", DB_OPEN_TABLE) ' Create dynaset.
Set Main2Set = Main2DB.OpenRecordset("Process", DB_OPEN_TABLE) ' Create dynaset.
MainSet.Index = "PrimaryKey"
Main2Set.Index = "PrimaryKey"
Return
OPEN_Addnl:
Set MainSet = MainDB.OpenRecordset("AddnlProc", DB_OPEN_TABLE) ' Create dynaset.
Set Main2Set = Main2DB.OpenRecordset("AddnlProc", DB_OPEN_TABLE) ' Create dynaset.
MainSet.Index = "PartNumber"
Main2Set.Index = "PartNumber"
Return
OPEN_Machs:
Set MainSet = MainDB.OpenRecordset("Machines", DB_OPEN_TABLE) ' Create dynaset.
Set Main2Set = Main2DB.OpenRecordset("Machines", DB_OPEN_TABLE) ' Create dynaset.
MainSet.Index = "PartNumber"
Main2Set.Index = "PartNumber"
Return
End Sub
Private Sub Button0_Click()
On Error GoTo Err_Button0_Click
Dim DocName As String
Dim LinkCriteria As String
PN$ = Field1
DocName = PrimaryScreen$
DoCmd.OpenForm DocName, , , LinkCriteria
DoCmd.GoToControl "PartName"
DoCmd.GoToControl "PartNumber"
DoCmd.FindRecord PN$
DoCmd.SelectObject A_FORM, "Data Sheet Select"
DoCmd.Close
Exit_Button0_Click:
Exit Sub
Err_Button0_Click:
MsgBox Error$
Resume Exit_Button0_Click
End Sub
Private Sub Button12_Click()
On Error GoTo Err_Button12_Click
Dim DocName As String
Dim LinkCriteria As String
DocName = "DS PressBrake"
LinkCriteria = "([PartNumber] = Forms![Data Sheet Select]![Field1]) and([SheetType] = 'PRESSBRAKE')"
DoCmd.OpenForm DocName, , , LinkCriteria
Exit_Button12_Click:
Exit Sub
Err_Button12_Click:
MsgBox Error$
Resume Exit_Button12_Click
End Sub
Private Sub Button14_Click()
On Error GoTo Err_Button14_Click
Dim DocName As String
Dim LinkCriteria As String
DocName = "DS MultShear"
LinkCriteria = "([PartNumber] = Forms![Data Sheet Select]![Field1]) and([SheetType] = 'MULTSHEAR')"
DoCmd.OpenForm DocName, , , LinkCriteria
Exit_Button14_Click:
Exit Sub
Err_Button14_Click:
MsgBox Error$
Resume Exit_Button14_Click
End Sub
Private Sub Button16_Click()
On Error GoTo Err_Button16_Click
Dim DocName As String
Dim LinkCriteria As String
Refresh
DocName = "Process Sheet Print"
DoCmd.OpenReport DocName, A_PREVIEW, "Q2"
Exit_Button16_Click:
Exit Sub
Err_Button16_Click:
MsgBox Error$
Resume Exit_Button16_Click
End Sub
Private Sub Button2_Click()
On Error GoTo Err_Button2_Click
Dim DocName As String
Dim LinkCriteria As String
DocName = "DS Laser"
LinkCriteria = "([PartNumber] = Forms![Data Sheet Select]![Field1]) and([SheetType] = 'LASER')"
DoCmd.OpenForm DocName, , , LinkCriteria
Exit_Button2_Click:
Exit Sub
Err_Button2_Click:
MsgBox Error$
Resume Exit_Button2_Click
End Sub
Private Sub Button3_Click()
On Error GoTo Err_Button3_Click
Dim DocName As String
Dim LinkCriteria As String
DocName = "DS CNC"
LinkCriteria = "([PartNumber] = Forms![Data Sheet Select]![Field1]) and([SheetType] = 'CNC')"
DoCmd.OpenForm DocName, , , LinkCriteria
Exit_Button3_Click:
Exit Sub
Err_Button3_Click:
MsgBox Error$
Resume Exit_Button3_Click
End Sub
Private Sub Button4_Click()
On Error GoTo Err_Button4_Click
Dim DocName As String
Dim LinkCriteria As String
DocName = "DS PressBrake"
LinkCriteria = "([PartNumber] = Forms![Data Sheet Select]![Field1]) and([SheetType] = 'PRESSBRAKE')"
DoCmd.OpenForm DocName, , , LinkCriteria
Exit_Button4_Click:
Exit Sub
Err_Button4_Click:
MsgBox Error$
Resume Exit_Button4_Click
End Sub
Private Sub Button5_Click()
On Error GoTo Err_Button5_Click
Dim DocName As String
Dim LinkCriteria As String
DocName = "DS Shear"
LinkCriteria = "([PartNumber] = Forms![Data Sheet Select]![Field1]) and([SheetType] = 'SHEAR')"
DoCmd.OpenForm DocName, , , LinkCriteria
Exit_Button5_Click:
Exit Sub
Err_Button5_Click:
MsgBox Error$
Resume Exit_Button5_Click
End Sub
Private Sub Button6_Click()
On Error GoTo Err_Button6_Click
Dim DocName As String
Dim LinkCriteria As String
DocName = "DS Timesaver"
LinkCriteria = "([PartNumber] = Forms![Data Sheet Select]![Field1]) and([SheetType] = 'TIMESAVER')"
DoCmd.OpenForm DocName, , , LinkCriteria
Exit_Button6_Click:
Exit Sub
Err_Button6_Click:
MsgBox Error$
Resume Exit_Button6_Click
End Sub
Private Sub Button7_Click()
On Error GoTo Err_Button7_Click
Dim DocName As String
Dim LinkCriteria As String
DocName = "DS Hand Deburr"
LinkCriteria = "([PartNumber] = Forms![Data Sheet Select]![Field1]) and([SheetType] = 'HANDDEBURR')"
DoCmd.OpenForm DocName, , , LinkCriteria
Exit_Button7_Click:
Exit Sub
Err_Button7_Click:
MsgBox Error$
Resume Exit_Button7_Click
End Sub
Private Sub Button8_Click()
On Error GoTo Err_Button8_Click
Dim DocName As String
Dim LinkCriteria As String
DocName = "DS Pedestal"
LinkCriteria = "([PartNumber] = Forms![Data Sheet Select]![Field1]) and([SheetType] = 'PEDESTAL')"
DoCmd.OpenForm DocName, , , LinkCriteria
Exit_Button8_Click:
Exit Sub
Err_Button8_Click:
MsgBox Error$
Resume Exit_Button8_Click
End Sub
Private Sub Button9_Click()
On Error GoTo Err_Button9_Click
Dim DocName As String
Dim LinkCriteria As String
Dim MyForm As Form
DocName = "Process Sheet Print"
DoCmd.OpenReport DocName, A_PREVIEW, "Q2"
On Error GoTo tryNext: formExists = True
DoCmd.SelectObject A_REPORT, "Process Sheet Print"
If formExists Then
DoCmd.PrintOut
DoCmd.Close
End If
DocName = "DS Laser"
LinkCriteria = "([PartNumber] = Forms![Data Sheet Select]![Field1]) and([SheetType] = 'LASER')"
DoCmd.OpenForm DocName, , , LinkCriteria
On Error GoTo tryNext: formExists = True
DoCmd.SelectObject A_FORM, "DS Laser"
If formExists Then
DoCmd.PrintOut
DoCmd.Close
End If
DocName = "DS CNC"
LinkCriteria = "([PartNumber] = Forms![Data Sheet Select]![Field1]) and([SheetType] = 'CNC')"
DoCmd.OpenForm DocName, , , LinkCriteria
On Error GoTo tryNext: formExists = True
DoCmd.SelectObject A_FORM, "DS CNC"
If formExists Then
DoCmd.PrintOut
DoCmd.Close
End If
DocName = "DS PressBrake"
LinkCriteria = "([PartNumber] = Forms![Data Sheet Select]![Field1]) and([SheetType] = 'PRESSBRAKE')"
DoCmd.OpenForm DocName, , , LinkCriteria
On Error GoTo tryNext: formExists = True
DoCmd.SelectObject A_FORM, "DS PressBrake"
If formExists Then
DoCmd.PrintOut
DoCmd.Close
End If
DocName = "DS Shear"
LinkCriteria = "([PartNumber] = Forms![Data Sheet Select]![Field1]) and([SheetType] = 'SHEAR')"
DoCmd.OpenForm DocName, , , LinkCriteria
On Error GoTo tryNext: formExists = True
DoCmd.SelectObject A_FORM, "DS Shear"
If formExists Then
DoCmd.PrintOut
DoCmd.Close
End If
DocName = "DS Timesaver"
LinkCriteria = "([PartNumber] = Forms![Data Sheet Select]![Field1]) and([SheetType] = 'TIMESAVER')"
DoCmd.OpenForm DocName, , , LinkCriteria
On Error GoTo tryNext: formExists = True
DoCmd.SelectObject A_FORM, "DS Timesaver"
If formExists Then
DoCmd.PrintOut
DoCmd.Close
End If
DocName = "DS Hand Deburr"
LinkCriteria = "([PartNumber] = Forms![Data Sheet Select]![Field1]) and([SheetType] = 'HANDDEBURR')"
DoCmd.OpenForm DocName, , , LinkCriteria
On Error GoTo tryNext: formExists = True
DoCmd.SelectObject A_FORM, "DS Hand Deburr"
If formExists Then
DoCmd.PrintOut
DoCmd.Close
End If
DocName = "DS Pedestal"
LinkCriteria = "([PartNumber] = Forms![Data Sheet Select]![Field1]) and([SheetType] = 'PEDESTAL')"
DoCmd.OpenForm DocName, , , LinkCriteria
On Error GoTo tryNext: formExists = True
DoCmd.SelectObject A_FORM, "DS Pedestal"
If formExists Then
DoCmd.PrintOut
DoCmd.Close
End If
DocName = "DS MultShear"
LinkCriteria = "([PartNumber] = Forms![Data Sheet Select]![Field1]) and([SheetType] = 'MULTSHEAR')"
DoCmd.OpenForm DocName, , , LinkCriteria
On Error GoTo tryNext: formExists = True
DoCmd.SelectObject A_FORM, "DS MultShear"
If formExists Then
DoCmd.PrintOut
DoCmd.Close
End If
DocName = "DS Shake and Break"
LinkCriteria = "([PartNumber] = Forms![Data Sheet Select]![Field1]) and([SheetType] = 'SHAKE')"
DoCmd.OpenForm DocName, , , LinkCriteria
On Error GoTo tryNext: formExists = True
DoCmd.SelectObject A_FORM, "DS Shake and Break"
If formExists Then
DoCmd.PrintOut
DoCmd.Close
End If
Exit_Button9_Click:
Exit Sub
Err_Button9_Click:
MsgBox Error$
Resume Exit_Button9_Click
tryNext:
formExists = False
Resume Next
End Sub
Private Sub Command17_Click()
On Error GoTo Err_Button17_Click
Dim DocName As String
Dim LinkCriteria As String
DocName = "DS Pem Press Manual"
LinkCriteria = "([PartNumber] = Forms![Data Sheet Select]![Field1]) and([SheetType] = 'PEM')"
DoCmd.OpenForm DocName, , , LinkCriteria
Exit_Button17_Click:
Exit Sub
Err_Button17_Click:
MsgBox Error$
Resume Exit_Button17_Click
End Sub
Private Sub Command18_Click()
On Error GoTo Err_Button18_Click
Dim DocName As String
Dim LinkCriteria As String
DocName = "DS Shake and Break"
LinkCriteria = "([PartNumber] = Forms![Data Sheet Select]![Field1]) and([SheetType] = 'SHAKEBREAK')"
DoCmd.OpenForm DocName, , , LinkCriteria
Exit_Button18_Click:
Exit Sub
Err_Button18_Click:
MsgBox Error$
Resume Exit_Button18_Click
End Sub
Private Sub Command19_Click()
On Error GoTo Err_Button19_Click
Dim DocName As String
Dim LinkCriteria As String
DocName = "DS Salvagnini"
LinkCriteria = "([PartNumber] = Forms![Data Sheet Select]![Field1]) and([SheetType] = 'SALVAGNINI')"
DoCmd.OpenForm DocName, , , LinkCriteria
Exit_Button19_Click:
Exit Sub
Err_Button19_Click:
MsgBox Error$
Resume Exit_Button19_Click
End Sub
What it does
AddAProcSheet VBA Code Description
This VBA code is used to automate the addition of new processes and machines records in a database, while also updating related additional process and machine records.
Initialization
The code begins by setting up various database connections:
MainDB
,MainSet
,MachNamesDB
,MachQDB
are databases and recordsets connected to the main workspace.Main2DB
andMain2Set
are also connected to the main workspace.
Subroutine Flow
The code then calls the AddAProcShet
subroutine, which performs the following actions:
- Open Main Databases: The
GoSub Open_Mains
subroutine is called to open the main databases (MainDB
andMain2DB
) and set up their recordsets. - Check for Existing Data: The code checks if the
Field1
value or theNewPartName_Parm$
parameter is not empty. If either condition is true, it proceeds with the addition of new records.
Add New Records
If the previous step passes, the code adds new records to the following tables:
- Machine Names: A new machine name record is added for each existing machine in
MachNamesSet
. - Main Processes: If a part number is not empty, it creates a new main process record and updates the related additional process record.
Update Additional Process Records
If a part number is provided and it's not "NEW", the code:
- Updates the main process record with the new part number.
- Calls
GoSub OPEN_Addnl
to set up the additional process table connection. - Performs a full update of all records in the additional process table, ensuring that all fields match those in the main process table.
Update Machine Records
After updating the additional process records, the code:
- Calls
GoSub Open_Machs
to open the machines recordset. - Performs a full update of all records in the machines table using the updated part number from the main process records.
Cleanup
Finally, the code resets the Field1
value and exits the subroutine.
Notes
- The use of
GoSub
statements to call subroutines within the same code block is an older VBA feature. Modern VBA coding would typically avoid this practice. - The code uses
Debug.Print
statements for debugging purposes, which can be removed or replaced with more suitable error handling mechanisms in production environments. - The use of
DB_OPEN_TABLE
as a database open option may not be the most efficient choice, especially if dealing with large datasets.