Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Public Function LoadQryIntoForm(argQry As String, argForm As String, Optional argParameters As Variant = Null, Optional argExcludeEmptyTags As Boolean = True, Optional argIsFilterString As Boolean = True) As Long
- If Not BasicInclude.DebugMode Then On Error GoTo Error_Handler Else On Error GoTo 0
- Dim qry As QueryDef
- Dim rs As DAO.Recordset
- Dim frm As Form
- Dim f As Field
- Dim u As Long
- Dim c As Control
- Dim i As Long
- LoadQryIntoForm = 0
- Set qry = dbLocal.QueryDefs(argQry)
- If argIsFilterString Then
- Set rs = qry.OpenRecordset(dbOpenDynaset, dbSeeChanges)
- rs.filter = argParameters
- Set rs = rs.OpenRecordset(dbOpenSnapshot)
- Else
- If VarType(argParameters) >= vbArray Then
- u = UBound(argParameters)
- If u = (qry.Parameters.count - 1) Then
- For i = 0 To u Step 1
- qry.Parameters(i).Value = argParameters(i)
- Next i
- Else
- Err.Raise vbObjectError, "LoadQryIntoForm", "Number of Parameters in query(" & qry.Parameters.count & ") do not match the number of parameters passed in(" & u + 1 & ")"
- End If
- Else
- If Not (IsNull(argParameters)) And qry.Parameters.count = 1 Then
- qry.Parameters(0) = argParameters
- ElseIf qry.Parameters.count = 0 And Not (IsNull(argParameters)) Then
- Err.Raise vbObjectError + 1, "LoadQryIntoForm", "Number of Parameters in query(" & qry.Parameters.count & ") do not match the number of parameters passed in(1)"
- ElseIf qry.Parameters.count = 0 And (IsNull(argParameters)) Then
- End If
- End If
- Set rs = qry.OpenRecordset(dbOpenDynaset, dbSeeChanges)
- End If
- Set frm = Forms(argForm)
- 'If argFilter <> "" Then
- 'rs.filter = argFilter
- 'Set rs = rs.OpenRecordset(dbOpenDynaset, dbSeeChanges)
- 'End If
- If rs.RecordCount Then
- rs.MoveFirst
- If argExcludeEmptyTags Then
- For Each f In rs.Fields
- For Each c In frm.Controls
- If f.Name = StripPrefix(c.Name) And Not (c.Tag Like "*[el]*") And c.Tag & "" <> "" Then
- c.Value = f.Value
- End If
- Next
- Next
- Else
- For Each f In rs.Fields
- For Each c In frm.Controls
- If f.Name = StripPrefix(c.Name) And Not (c.Tag Like "*[el]*") Then
- c.Value = f.Value
- End If
- Next
- Next
- End If
- Else
- LoadQryIntoForm = 1
- End If
- error_exit:
- Set rs = Nothing
- Set qry = Nothing
- Set frm = Nothing
- Exit Function
- Error_Handler:
- MsgBox "The following error has occured" & vbCrLf & vbCrLf & _
- "Error Number: " & Err.Number & vbCrLf & _
- "Error Source: LoadQryIntoForm" & vbCrLf & _
- "Error Description: " & Err.Description _
- , vbOKOnly + vbCritical, "An Error has Occured!"
- LoadQryIntoForm = -1
- Resume error_exit
- End Function
Advertisement
Add Comment
Please, Sign In to add comment