82 lines
3.6 KiB
Markdown
82 lines
3.6 KiB
Markdown
# DS Pedestal
|
|
---
|
|
## Record Source
|
|
- [[Queries/DataSheetQ1]]
|
|
## Controls
|
|
| Control Name | Reference |
|
|
|--------------|-----------|
|
|
| PartNumber | PartNumber (from [[Queries/DataSheetQ1]]) |
|
|
| Operation | Operation (from [[Queries/DataSheetQ1]]) |
|
|
| Elem1A | Elem1A (from [[Queries/DataSheetQ1]]) |
|
|
| Paperwork | Paperwork (from [[Queries/DataSheetQ1]]) |
|
|
| TotalSelectTime | TotalSelectTime (from [[Queries/DataSheetQ1]]) |
|
|
| StandardMinutes/part | StandardMinutes/part (from [[Queries/DataSheetQ1]]) |
|
|
| pf&d | pf&d (from [[Queries/DataSheetQ1]]) |
|
|
| StandardHours/part | StandardHours/part (from [[Queries/DataSheetQ1]]) |
|
|
| StandardParts | StandardParts (from [[Queries/DataSheetQ1]]) |
|
|
| Field441 | Elem1V1 (from [[Queries/DataSheetQ1]]) |
|
|
| Field443 | Elem2A (from [[Queries/DataSheetQ1]]) |
|
|
| Field450 | Elem2V1 (from [[Queries/DataSheetQ1]]) |
|
|
| Field451 | Elem2V2 (from [[Queries/DataSheetQ1]]) |
|
|
| Field456 | Elem3V1 (from [[Queries/DataSheetQ1]]) |
|
|
| Field465 | Elem3A (from [[Queries/DataSheetQ1]]) |
|
|
| Field466 | Elem4A (from [[Queries/DataSheetQ1]]) |
|
|
| Field469 | Elem5A (from [[Queries/DataSheetQ1]]) |
|
|
## VBA Code
|
|
```vba
|
|
Option Compare Database 'Use database order for string comparisons
|
|
|
|
Private Sub Form_Load()
|
|
On Error GoTo die
|
|
If IsNull(Me![PartNumber]) Then
|
|
End
|
|
End If
|
|
Exit Sub
|
|
HelpMe:
|
|
DoCmd.SelectObject A_FORM, "DS Pedestal"
|
|
DoCmd.Close
|
|
Exit Sub
|
|
die:
|
|
Resume HelpMe
|
|
|
|
End Sub
|
|
|
|
```
|
|
## What it does
|
|
**VBA Code Description**
|
|
==========================
|
|
|
|
### Overview
|
|
|
|
This VBA code is used to handle the `Form_Load` event in an Access database application. The code ensures that a form is loaded correctly and prevents any errors from occurring.
|
|
|
|
### Key Functions
|
|
|
|
#### 1. Error Handling and Comparison Order
|
|
|
|
The first line, `Option Compare Database`, specifies that string comparisons should be performed using database order (`DB`). This means that when comparing strings, the database will perform an exact match, rather than a case-insensitive or lexicographic comparison.
|
|
|
|
#### 2. Preventing Empty Form Loads
|
|
|
|
In the `Form_Load` event, the code checks if the `PartNumber` field in the form is null (`IsNull(Me![PartNumber])`). If it is null, the code skips the rest of the subroutine and exits using the `End` statement.
|
|
|
|
This prevents the form from loading with a blank value in the `PartNumber` field, which could potentially cause errors or issues with the application's functionality.
|
|
|
|
#### 3. Loading a Form
|
|
|
|
The next line, `HelpMe: DoCmd.SelectObject A_FORM, "DS Pedestal"`, loads a specific form named "DS Pedestal". The `DoCmd.SelectObject` method is used to select and load an object in the database.
|
|
|
|
However, this line has a flaw. By using the same label (`HelpMe`) as the error handler (`die: Resume HelpMe`), it creates a loop where the code will jump back to the error handler if an error occurs. This means that the form will never be loaded correctly.
|
|
|
|
#### 4. Closing and Exiting
|
|
|
|
The line `DoCmd.Close` closes the currently active form, but this is unnecessary since the form has already been loaded by the previous line.
|
|
|
|
Finally, the `Exit Sub` statement exits the subroutine without proceeding to any further code.
|
|
|
|
#### 5. Error Handling and Looping
|
|
|
|
In the event of an error (`die: Resume HelpMe`), the code jumps back to the error handler using the same label as the main loop (`HelpMe`). This creates a loop where the code will continue to jump back and forth between the two labels, preventing any actual form loading.
|
|
|
|
Overall, this VBA code is poorly designed due to the looping issue caused by using the same label for both the main loop and the error handler.
|