A Microsoft Office (Excel, Word) forum. OfficeFrustration

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

Go Back   Home » OfficeFrustration forum » Microsoft Access » Using Forms
Site Map Home Register Authors List Search Today's Posts Mark Forums Read  

Check For Existing Record



 
 
Thread Tools Display Modes
  #11  
Old May 22nd, 2008, 07:40 PM posted to microsoft.public.access.forms
ruralguy via AccessMonster.com
external usenet poster
 
Posts: 1,172
Default Check For Existing Record

All arguments to Domain functions need to be strings. Here's a good reference:

http://www.mvps.org/access/general/gen0018.htm

ridgerunner wrote:
I am getting this message "Runtime error 424" "Object Required". The second
and third lines, below, are highlighted in the debug screen.


Private Sub InspDate_BeforeUpdate(Cancel As Integer)

If Not IsNull(DLookup("[NoDuplicates]", (qryFrmAddDMInsp), "[NoDuplicates]="
& frmAddDMInspections![InspDate])) Then
MsgBox "Store and Inspection Date already exist. Please correct",
vbCritical, "Duplicate Entry"
End If
Exit Sub

End Sub

Here is my solution for multiple field duplication. I first join the two
fields in a query. For your example I would do this in a query.

[quoted text clipped - 28 lines]
tia
ridgerunner


--
RuralGuy (RG for short) aka Allan Bunch MS Access MVP - acXP WinXP Pro
Please post back to this forum so all may benefit.

Message posted via http://www.accessmonster.com

Ads
  #12  
Old May 22nd, 2008, 07:42 PM posted to microsoft.public.access.forms
Ryan Tisserand
external usenet poster
 
Posts: 22
Default Check For Existing Record

Wow Douglas, you are right. I forgot two main elements. I also put an
unbound textbox on the main form that is not visible and set the control
source to [InspDate]&""&[StoreNo] and call it the same name "NoDuplicates".
Then on my main form I add a button thats "On Click" event reads like this:

If isnull (me!InspDate) Then
msgbox "Inspection date is required"
Exit Sub
End if
If isnull (Me!StoreNo) Then
msgbox "Store number is required"
Exit Sub
End if
If not IsNull(DLookup("[NoDuplicates]", (YourQueryName), "[NoDuplicates]=" &
Forms(YourFormName)![NoDuplicates])) Then
MsgBox "Store and Inspection Date already exist. Please correct",
vbCritical, "Duplicate Entry"
End If
Exit Sub

I applogize for my quick incomplete answer.



"Douglas J. Steele" wrote:

Why would you concatenate the fields? (And you've forgotten to concatenate
the StoreNo into the argument you're passing to DLookup)

As well, you need to check in the BeforeUpdate of both InspDate and StoreNo,
since you can't be sure what order the fields will be filled in. Use a
generic function like:

Function DuplicateValue() As Boolean

If IsNull(Format(Forms![YourFormName]![InspDate]) And _
IsNull(Forms![YourFormName]![StoreNo]) = False Then
DuplicateValue = (IsNull(DLookup("StoreNo", "[YourTableName]", _
"[InspDate] = " & Format(Forms![YourFormName]![InspDate],
"\#yyyy\-mm\-dd\#") & _
" AND [StoreNo] = " & Forms![YourFormName]![StoreNo]) = False)
End If

End Function

You can then call that function in the BeforeUpdate event of both controls:

Private Sub InspDate_BeforeUpdate(Cancel As Integer)

If DuplicateValue() = True Then
MsgBox "Store and Inspection Date already exist. Please correct", _
vbCritical, "Duplicate Entry"
Cancel = True
End If

End Sub

Private Sub StoreNo_BeforeUpdate(Cancel As Integer)

If DuplicateValue() = True Then
MsgBox "Store and Inspection Date already exist. Please correct", _
vbCritical, "Duplicate Entry"
Cancel = True
End If

End Sub



--
Doug Steele, Microsoft Access MVP
http://I.Am/DougSteele
(no e-mails, please!)


"Ryan Tisserand" wrote in message
...
Here is my solution for multiple field duplication. I first join the two
fields in a query. For your example I would do this in a query.
NoDuplicates:[InspDate]&""&[StoreNo]
Now that you have one field named NoDuplicates to deal with, in the
"Before
Update" event of InspDate you would use this code

If not IsNull(DLookup("[NoDuplicates]", (YourQueryName), "[NoDuplicates]="
&
Forms(YourFormName)![InspDate])) Then
MsgBox "Store and Inspection Date already exist. Please correct",
vbCritical, "Duplicate Entry"
End If
Exit Sub

Dont know if this will help but this works for me.


"ridgerunner" wrote:

I have a unique index set on two fields in my table, InspDate and
StoreNo. I
am trying to trap the error of attempting to add a duplicate by having
the
code below in the LostFocus Event for the InspDate. I am running around
in
circles. Can someone please help?


Private Sub InspDate_LostFocus()
If DMInspections.StoreNo = True Then
ElseIf DMInspDet.InspDate = True Then
MsgBox "Store and Inspection Date already exist. Please correct"
Me.InspDate.SetFocus
Else: Me.DMnameID.SetFocus
Exit Sub
End If
End Sub


tia
ridgerunner




  #13  
Old May 22nd, 2008, 08:10 PM posted to microsoft.public.access.forms
Douglas J. Steele
external usenet poster
 
Posts: 9,313
Default Check For Existing Record

I see no point whatsoever in concatenating the two fields.

--
Doug Steele, Microsoft Access MVP
http://I.Am/DougSteele
(no e-mails, please!)


"Ryan Tisserand" wrote in message
...
Wow Douglas, you are right. I forgot two main elements. I also put an
unbound textbox on the main form that is not visible and set the control
source to [InspDate]&""&[StoreNo] and call it the same name
"NoDuplicates".
Then on my main form I add a button thats "On Click" event reads like
this:

If isnull (me!InspDate) Then
msgbox "Inspection date is required"
Exit Sub
End if
If isnull (Me!StoreNo) Then
msgbox "Store number is required"
Exit Sub
End if
If not IsNull(DLookup("[NoDuplicates]", (YourQueryName), "[NoDuplicates]="
&
Forms(YourFormName)![NoDuplicates])) Then
MsgBox "Store and Inspection Date already exist. Please correct",
vbCritical, "Duplicate Entry"
End If
Exit Sub

I applogize for my quick incomplete answer.



"Douglas J. Steele" wrote:

Why would you concatenate the fields? (And you've forgotten to
concatenate
the StoreNo into the argument you're passing to DLookup)

As well, you need to check in the BeforeUpdate of both InspDate and
StoreNo,
since you can't be sure what order the fields will be filled in. Use a
generic function like:

Function DuplicateValue() As Boolean

If IsNull(Format(Forms![YourFormName]![InspDate]) And _
IsNull(Forms![YourFormName]![StoreNo]) = False Then
DuplicateValue = (IsNull(DLookup("StoreNo", "[YourTableName]", _
"[InspDate] = " & Format(Forms![YourFormName]![InspDate],
"\#yyyy\-mm\-dd\#") & _
" AND [StoreNo] = " & Forms![YourFormName]![StoreNo]) = False)
End If

End Function

You can then call that function in the BeforeUpdate event of both
controls:

Private Sub InspDate_BeforeUpdate(Cancel As Integer)

If DuplicateValue() = True Then
MsgBox "Store and Inspection Date already exist. Please correct", _
vbCritical, "Duplicate Entry"
Cancel = True
End If

End Sub

Private Sub StoreNo_BeforeUpdate(Cancel As Integer)

If DuplicateValue() = True Then
MsgBox "Store and Inspection Date already exist. Please correct", _
vbCritical, "Duplicate Entry"
Cancel = True
End If

End Sub



--
Doug Steele, Microsoft Access MVP
http://I.Am/DougSteele
(no e-mails, please!)


"Ryan Tisserand" wrote in
message
...
Here is my solution for multiple field duplication. I first join the
two
fields in a query. For your example I would do this in a query.
NoDuplicates:[InspDate]&""&[StoreNo]
Now that you have one field named NoDuplicates to deal with, in the
"Before
Update" event of InspDate you would use this code

If not IsNull(DLookup("[NoDuplicates]", (YourQueryName),
"[NoDuplicates]="
&
Forms(YourFormName)![InspDate])) Then
MsgBox "Store and Inspection Date already exist. Please correct",
vbCritical, "Duplicate Entry"
End If
Exit Sub

Dont know if this will help but this works for me.


"ridgerunner" wrote:

I have a unique index set on two fields in my table, InspDate and
StoreNo. I
am trying to trap the error of attempting to add a duplicate by having
the
code below in the LostFocus Event for the InspDate. I am running
around
in
circles. Can someone please help?


Private Sub InspDate_LostFocus()
If DMInspections.StoreNo = True Then
ElseIf DMInspDet.InspDate = True Then
MsgBox "Store and Inspection Date already exist. Please correct"
Me.InspDate.SetFocus
Else: Me.DMnameID.SetFocus
Exit Sub
End If
End Sub


tia
ridgerunner






  #14  
Old May 22nd, 2008, 08:14 PM posted to microsoft.public.access.forms
ridgerunner
external usenet poster
 
Posts: 118
Default Check For Existing Record

Thanks. After looking at the example, I changed a few things and I am not
receiving any error messages but the "trap" is failing. Closer examination
causes me to ask if the = 'frmAddDMInspections![InspDate]'")) is
correct since it only refers to the InspDate? I am going to try Doug's
example when I find out where to put the Function.


Private Sub InspDate_BeforeUpdate(Cancel As Integer)

If Not IsNull(DLookup("[NoDuplicates]", "qryFrmAddDMInsp", "[NoDuplicates]=
'frmAddDMInspections![InspDate]'")) Then
MsgBox "Store and Inspection Date already exist. Please correct",
vbCritical, "Duplicate Entry"
End If
Exit Sub


End Sub

"ruralguy via AccessMonster.com" wrote:

All arguments to Domain functions need to be strings. Here's a good reference:

http://www.mvps.org/access/general/gen0018.htm

ridgerunner wrote:
I am getting this message "Runtime error 424" "Object Required". The second
and third lines, below, are highlighted in the debug screen.


Private Sub InspDate_BeforeUpdate(Cancel As Integer)

If Not IsNull(DLookup("[NoDuplicates]", (qryFrmAddDMInsp), "[NoDuplicates]="
& frmAddDMInspections![InspDate])) Then
MsgBox "Store and Inspection Date already exist. Please correct",
vbCritical, "Duplicate Entry"
End If
Exit Sub

End Sub

Here is my solution for multiple field duplication. I first join the two
fields in a query. For your example I would do this in a query.

[quoted text clipped - 28 lines]
tia
ridgerunner


--
RuralGuy (RG for short) aka Allan Bunch MS Access MVP - acXP WinXP Pro
Please post back to this forum so all may benefit.

Message posted via http://www.accessmonster.com


  #15  
Old May 22nd, 2008, 08:14 PM posted to microsoft.public.access.forms
Douglas J. Steele
external usenet poster
 
Posts: 9,313
Default Check For Existing Record

Well, you'd put it in the same module as the rest of the code associated
with the form.

However, I agree with Klatuu that it probably makes more sense just to put
the code in the form's BeforeUpdate event, as opposed to in the BeforeUpdate
event of the two text boxes.

Private Sub Form_BeforeUpdate(Cancel = True)
Dim strMessage As String

If IsNull(Me.StoreNo) Then
strMessage = strMessage & "You must provide a Store Number." & vbCrLf
End If

If IsNull(Me.InspDate) Then
strMessage = strMessage & "You must provide an Inspection Date." &
vbCrLf
End If

If Len(strMessage) = 0 Then
If IsNull(DLookup("StoreNo", "[YourTableName]", _
"[InspDate] = " & Format(Forms![YourFormName]![InspDate],
"\#yyyy\-mm\-dd\#") & _
" AND [StoreNo] = " & Forms![YourFormName]![StoreNo]) = False) Then
strMessage = strMessage & "Store and Inspection Date already exist."
End If
End If

If Len(strMessage) 0 Then
Cancel = True
MsgBox strMessage, vbCritical
End If

End Sub



--
Doug Steele, Microsoft Access MVP
http://I.Am/DougSteele
(no e-mails, please!)


"ridgerunner" wrote in message
...
Thank you. Can you please tell me where I need to put the Function?

"Douglas J. Steele" wrote:

Why would you concatenate the fields? (And you've forgotten to
concatenate
the StoreNo into the argument you're passing to DLookup)

As well, you need to check in the BeforeUpdate of both InspDate and
StoreNo,
since you can't be sure what order the fields will be filled in. Use a
generic function like:

Function DuplicateValue() As Boolean

If IsNull(Format(Forms![YourFormName]![InspDate]) And _
IsNull(Forms![YourFormName]![StoreNo]) = False Then
DuplicateValue = (IsNull(DLookup("StoreNo", "[YourTableName]", _
"[InspDate] = " & Format(Forms![YourFormName]![InspDate],
"\#yyyy\-mm\-dd\#") & _
" AND [StoreNo] = " & Forms![YourFormName]![StoreNo]) = False)
End If

End Function

You can then call that function in the BeforeUpdate event of both
controls:

Private Sub InspDate_BeforeUpdate(Cancel As Integer)

If DuplicateValue() = True Then
MsgBox "Store and Inspection Date already exist. Please correct", _
vbCritical, "Duplicate Entry"
Cancel = True
End If

End Sub

Private Sub StoreNo_BeforeUpdate(Cancel As Integer)

If DuplicateValue() = True Then
MsgBox "Store and Inspection Date already exist. Please correct", _
vbCritical, "Duplicate Entry"
Cancel = True
End If

End Sub



--
Doug Steele, Microsoft Access MVP
http://I.Am/DougSteele
(no e-mails, please!)


"Ryan Tisserand" wrote in
message
...
Here is my solution for multiple field duplication. I first join the
two
fields in a query. For your example I would do this in a query.
NoDuplicates:[InspDate]&""&[StoreNo]
Now that you have one field named NoDuplicates to deal with, in the
"Before
Update" event of InspDate you would use this code

If not IsNull(DLookup("[NoDuplicates]", (YourQueryName),
"[NoDuplicates]="
&
Forms(YourFormName)![InspDate])) Then
MsgBox "Store and Inspection Date already exist. Please correct",
vbCritical, "Duplicate Entry"
End If
Exit Sub

Dont know if this will help but this works for me.


"ridgerunner" wrote:

I have a unique index set on two fields in my table, InspDate and
StoreNo. I
am trying to trap the error of attempting to add a duplicate by having
the
code below in the LostFocus Event for the InspDate. I am running
around
in
circles. Can someone please help?


Private Sub InspDate_LostFocus()
If DMInspections.StoreNo = True Then
ElseIf DMInspDet.InspDate = True Then
MsgBox "Store and Inspection Date already exist. Please correct"
Me.InspDate.SetFocus
Else: Me.DMnameID.SetFocus
Exit Sub
End If
End Sub


tia
ridgerunner






  #16  
Old May 22nd, 2008, 09:07 PM posted to microsoft.public.access.forms
ridgerunner
external usenet poster
 
Posts: 118
Default Check For Existing Record

I have added the Function to the OnOpen Property of the form and I am getting
a syntax error message when I try to run it.

Function DuplicateValue() As Boolean

If IsNull(Format(Forms![frmAddDMInspections]![InspDate]) And _
IsNull(Forms![AddDMInspections]![StoreNo]) = False Then
DuplicateValue = (IsNull(DLookup("StoreNo", "[DMInspections]", _
"[InspDate] = " & Format(Forms![frmAddDMInspections]![InspDate],
"\#yyyy\-mm\-dd\#") & _
" AND [StoreNo] = " & Forms![frmAddDMInspections]![StoreNo]) = False)
End If

End Function

"Douglas J. Steele" wrote:

Why would you concatenate the fields? (And you've forgotten to concatenate
the StoreNo into the argument you're passing to DLookup)

As well, you need to check in the BeforeUpdate of both InspDate and StoreNo,
since you can't be sure what order the fields will be filled in. Use a
generic function like:

Function DuplicateValue() As Boolean

If IsNull(Format(Forms![YourFormName]![InspDate]) And _
IsNull(Forms![YourFormName]![StoreNo]) = False Then
DuplicateValue = (IsNull(DLookup("StoreNo", "[YourTableName]", _
"[InspDate] = " & Format(Forms![YourFormName]![InspDate],
"\#yyyy\-mm\-dd\#") & _
" AND [StoreNo] = " & Forms![YourFormName]![StoreNo]) = False)
End If

End Function

You can then call that function in the BeforeUpdate event of both controls:

Private Sub InspDate_BeforeUpdate(Cancel As Integer)

If DuplicateValue() = True Then
MsgBox "Store and Inspection Date already exist. Please correct", _
vbCritical, "Duplicate Entry"
Cancel = True
End If

End Sub

Private Sub StoreNo_BeforeUpdate(Cancel As Integer)

If DuplicateValue() = True Then
MsgBox "Store and Inspection Date already exist. Please correct", _
vbCritical, "Duplicate Entry"
Cancel = True
End If

End Sub



--
Doug Steele, Microsoft Access MVP
http://I.Am/DougSteele
(no e-mails, please!)


"Ryan Tisserand" wrote in message
...
Here is my solution for multiple field duplication. I first join the two
fields in a query. For your example I would do this in a query.
NoDuplicates:[InspDate]&""&[StoreNo]
Now that you have one field named NoDuplicates to deal with, in the
"Before
Update" event of InspDate you would use this code

If not IsNull(DLookup("[NoDuplicates]", (YourQueryName), "[NoDuplicates]="
&
Forms(YourFormName)![InspDate])) Then
MsgBox "Store and Inspection Date already exist. Please correct",
vbCritical, "Duplicate Entry"
End If
Exit Sub

Dont know if this will help but this works for me.


"ridgerunner" wrote:

I have a unique index set on two fields in my table, InspDate and
StoreNo. I
am trying to trap the error of attempting to add a duplicate by having
the
code below in the LostFocus Event for the InspDate. I am running around
in
circles. Can someone please help?


Private Sub InspDate_LostFocus()
If DMInspections.StoreNo = True Then
ElseIf DMInspDet.InspDate = True Then
MsgBox "Store and Inspection Date already exist. Please correct"
Me.InspDate.SetFocus
Else: Me.DMnameID.SetFocus
Exit Sub
End If
End Sub


tia
ridgerunner




  #17  
Old May 22nd, 2008, 09:38 PM posted to microsoft.public.access.forms
ridgerunner
external usenet poster
 
Posts: 118
Default Check For Existing Record

I am sorry I missed seeing this earlier. I have the part about making
certain that a store and a date are entered covered in a command button on
the form.

I copied and pasted the code but I am getting a syntax error message and
"IF" through the "THEN" are in red when I run compile.

Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull(DLookup("StoreNo", "[DMInspections]", _
"[InspDate] = " & Format(Forms![frmAddDMInspection]![InspDate],
"\#yyyy\-mm\-dd\#") & _
" AND [StoreNo] = " & Forms![frmAddDMInspections]![StoreNo]) = False)
Then
strMessage = strMessage & "Store and Inspection Date already exist."
End If


End Sub

"Douglas J. Steele" wrote:

Well, you'd put it in the same module as the rest of the code associated
with the form.

However, I agree with Klatuu that it probably makes more sense just to put
the code in the form's BeforeUpdate event, as opposed to in the BeforeUpdate
event of the two text boxes.

Private Sub Form_BeforeUpdate(Cancel = True)
Dim strMessage As String

If IsNull(Me.StoreNo) Then
strMessage = strMessage & "You must provide a Store Number." & vbCrLf
End If

If IsNull(Me.InspDate) Then
strMessage = strMessage & "You must provide an Inspection Date." &
vbCrLf
End If

If Len(strMessage) = 0 Then
If IsNull(DLookup("StoreNo", "[YourTableName]", _
"[InspDate] = " & Format(Forms![YourFormName]![InspDate],
"\#yyyy\-mm\-dd\#") & _
" AND [StoreNo] = " & Forms![YourFormName]![StoreNo]) = False) Then
strMessage = strMessage & "Store and Inspection Date already exist."
End If
End If

If Len(strMessage) 0 Then
Cancel = True
MsgBox strMessage, vbCritical
End If

End Sub



--
Doug Steele, Microsoft Access MVP
http://I.Am/DougSteele
(no e-mails, please!)


"ridgerunner" wrote in message
...
Thank you. Can you please tell me where I need to put the Function?

"Douglas J. Steele" wrote:

Why would you concatenate the fields? (And you've forgotten to
concatenate
the StoreNo into the argument you're passing to DLookup)

As well, you need to check in the BeforeUpdate of both InspDate and
StoreNo,
since you can't be sure what order the fields will be filled in. Use a
generic function like:

Function DuplicateValue() As Boolean

If IsNull(Format(Forms![YourFormName]![InspDate]) And _
IsNull(Forms![YourFormName]![StoreNo]) = False Then
DuplicateValue = (IsNull(DLookup("StoreNo", "[YourTableName]", _
"[InspDate] = " & Format(Forms![YourFormName]![InspDate],
"\#yyyy\-mm\-dd\#") & _
" AND [StoreNo] = " & Forms![YourFormName]![StoreNo]) = False)
End If

End Function

You can then call that function in the BeforeUpdate event of both
controls:

Private Sub InspDate_BeforeUpdate(Cancel As Integer)

If DuplicateValue() = True Then
MsgBox "Store and Inspection Date already exist. Please correct", _
vbCritical, "Duplicate Entry"
Cancel = True
End If

End Sub

Private Sub StoreNo_BeforeUpdate(Cancel As Integer)

If DuplicateValue() = True Then
MsgBox "Store and Inspection Date already exist. Please correct", _
vbCritical, "Duplicate Entry"
Cancel = True
End If

End Sub



--
Doug Steele, Microsoft Access MVP
http://I.Am/DougSteele
(no e-mails, please!)


"Ryan Tisserand" wrote in
message
...
Here is my solution for multiple field duplication. I first join the
two
fields in a query. For your example I would do this in a query.
NoDuplicates:[InspDate]&""&[StoreNo]
Now that you have one field named NoDuplicates to deal with, in the
"Before
Update" event of InspDate you would use this code

If not IsNull(DLookup("[NoDuplicates]", (YourQueryName),
"[NoDuplicates]="
&
Forms(YourFormName)![InspDate])) Then
MsgBox "Store and Inspection Date already exist. Please correct",
vbCritical, "Duplicate Entry"
End If
Exit Sub

Dont know if this will help but this works for me.


"ridgerunner" wrote:

I have a unique index set on two fields in my table, InspDate and
StoreNo. I
am trying to trap the error of attempting to add a duplicate by having
the
code below in the LostFocus Event for the InspDate. I am running
around
in
circles. Can someone please help?


Private Sub InspDate_LostFocus()
If DMInspections.StoreNo = True Then
ElseIf DMInspDet.InspDate = True Then
MsgBox "Store and Inspection Date already exist. Please correct"
Me.InspDate.SetFocus
Else: Me.DMnameID.SetFocus
Exit Sub
End If
End Sub


tia
ridgerunner






  #18  
Old May 22nd, 2008, 09:46 PM posted to microsoft.public.access.forms
Douglas J. Steele
external usenet poster
 
Posts: 9,313
Default Check For Existing Record

You may have fallen victim of word-wrap. Then is supposed to be on the line
above, after = False)

That's odd, though. It looks correct when I look at what I posted to you.

--
Doug Steele, Microsoft Access MVP
http://I.Am/DougSteele
(no private e-mails, please)


"ridgerunner" wrote in message
...
I am sorry I missed seeing this earlier. I have the part about making
certain that a store and a date are entered covered in a command button on
the form.

I copied and pasted the code but I am getting a syntax error message and
"IF" through the "THEN" are in red when I run compile.

Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull(DLookup("StoreNo", "[DMInspections]", _
"[InspDate] = " & Format(Forms![frmAddDMInspection]![InspDate],
"\#yyyy\-mm\-dd\#") & _
" AND [StoreNo] = " & Forms![frmAddDMInspections]![StoreNo]) = False)
Then
strMessage = strMessage & "Store and Inspection Date already exist."
End If


End Sub

"Douglas J. Steele" wrote:

Well, you'd put it in the same module as the rest of the code associated
with the form.

However, I agree with Klatuu that it probably makes more sense just to
put
the code in the form's BeforeUpdate event, as opposed to in the
BeforeUpdate
event of the two text boxes.

Private Sub Form_BeforeUpdate(Cancel = True)
Dim strMessage As String

If IsNull(Me.StoreNo) Then
strMessage = strMessage & "You must provide a Store Number." & vbCrLf
End If

If IsNull(Me.InspDate) Then
strMessage = strMessage & "You must provide an Inspection Date." &
vbCrLf
End If

If Len(strMessage) = 0 Then
If IsNull(DLookup("StoreNo", "[YourTableName]", _
"[InspDate] = " & Format(Forms![YourFormName]![InspDate],
"\#yyyy\-mm\-dd\#") & _
" AND [StoreNo] = " & Forms![YourFormName]![StoreNo]) = False) Then
strMessage = strMessage & "Store and Inspection Date already
exist."
End If
End If

If Len(strMessage) 0 Then
Cancel = True
MsgBox strMessage, vbCritical
End If

End Sub



--
Doug Steele, Microsoft Access MVP
http://I.Am/DougSteele
(no e-mails, please!)


"ridgerunner" wrote in message
...
Thank you. Can you please tell me where I need to put the Function?

"Douglas J. Steele" wrote:

Why would you concatenate the fields? (And you've forgotten to
concatenate
the StoreNo into the argument you're passing to DLookup)

As well, you need to check in the BeforeUpdate of both InspDate and
StoreNo,
since you can't be sure what order the fields will be filled in. Use a
generic function like:

Function DuplicateValue() As Boolean

If IsNull(Format(Forms![YourFormName]![InspDate]) And _
IsNull(Forms![YourFormName]![StoreNo]) = False Then
DuplicateValue = (IsNull(DLookup("StoreNo", "[YourTableName]", _
"[InspDate] = " & Format(Forms![YourFormName]![InspDate],
"\#yyyy\-mm\-dd\#") & _
" AND [StoreNo] = " & Forms![YourFormName]![StoreNo]) = False)
End If

End Function

You can then call that function in the BeforeUpdate event of both
controls:

Private Sub InspDate_BeforeUpdate(Cancel As Integer)

If DuplicateValue() = True Then
MsgBox "Store and Inspection Date already exist. Please correct",
_
vbCritical, "Duplicate Entry"
Cancel = True
End If

End Sub

Private Sub StoreNo_BeforeUpdate(Cancel As Integer)

If DuplicateValue() = True Then
MsgBox "Store and Inspection Date already exist. Please correct",
_
vbCritical, "Duplicate Entry"
Cancel = True
End If

End Sub



--
Doug Steele, Microsoft Access MVP
http://I.Am/DougSteele
(no e-mails, please!)


"Ryan Tisserand" wrote in
message
...
Here is my solution for multiple field duplication. I first join
the
two
fields in a query. For your example I would do this in a query.
NoDuplicates:[InspDate]&""&[StoreNo]
Now that you have one field named NoDuplicates to deal with, in the
"Before
Update" event of InspDate you would use this code

If not IsNull(DLookup("[NoDuplicates]", (YourQueryName),
"[NoDuplicates]="
&
Forms(YourFormName)![InspDate])) Then
MsgBox "Store and Inspection Date already exist. Please correct",
vbCritical, "Duplicate Entry"
End If
Exit Sub

Dont know if this will help but this works for me.


"ridgerunner" wrote:

I have a unique index set on two fields in my table, InspDate and
StoreNo. I
am trying to trap the error of attempting to add a duplicate by
having
the
code below in the LostFocus Event for the InspDate. I am running
around
in
circles. Can someone please help?


Private Sub InspDate_LostFocus()
If DMInspections.StoreNo = True Then
ElseIf DMInspDet.InspDate = True Then
MsgBox "Store and Inspection Date already exist. Please correct"
Me.InspDate.SetFocus
Else: Me.DMnameID.SetFocus
Exit Sub
End If
End Sub


tia
ridgerunner








  #19  
Old May 22nd, 2008, 09:56 PM posted to microsoft.public.access.forms
ridgerunner
external usenet poster
 
Posts: 118
Default Check For Existing Record

Yes, ord wrap is messing things up. "Then" is in the correct place in the
property sheet or should I call it module, but this screen makes it look like
it is one line down.

At any rate, the code below is highlighted with I get the syntax error
message.

If IsNull(DLookup("StoreNo", "[DMInspections]", _
"[InspDate] = " & Format(Forms![frmAddDMInspection]![InspDate],

"Douglas J. Steele" wrote:

You may have fallen victim of word-wrap. Then is supposed to be on the line
above, after = False)

That's odd, though. It looks correct when I look at what I posted to you.

--
Doug Steele, Microsoft Access MVP
http://I.Am/DougSteele
(no private e-mails, please)


"ridgerunner" wrote in message
...
I am sorry I missed seeing this earlier. I have the part about making
certain that a store and a date are entered covered in a command button on
the form.

I copied and pasted the code but I am getting a syntax error message and
"IF" through the "THEN" are in red when I run compile.

Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull(DLookup("StoreNo", "[DMInspections]", _
"[InspDate] = " & Format(Forms![frmAddDMInspection]![InspDate],
"\#yyyy\-mm\-dd\#") & _
" AND [StoreNo] = " & Forms![frmAddDMInspections]![StoreNo]) = False)
Then
strMessage = strMessage & "Store and Inspection Date already exist."
End If


End Sub

"Douglas J. Steele" wrote:

Well, you'd put it in the same module as the rest of the code associated
with the form.

However, I agree with Klatuu that it probably makes more sense just to
put
the code in the form's BeforeUpdate event, as opposed to in the
BeforeUpdate
event of the two text boxes.

Private Sub Form_BeforeUpdate(Cancel = True)
Dim strMessage As String

If IsNull(Me.StoreNo) Then
strMessage = strMessage & "You must provide a Store Number." & vbCrLf
End If

If IsNull(Me.InspDate) Then
strMessage = strMessage & "You must provide an Inspection Date." &
vbCrLf
End If

If Len(strMessage) = 0 Then
If IsNull(DLookup("StoreNo", "[YourTableName]", _
"[InspDate] = " & Format(Forms![YourFormName]![InspDate],
"\#yyyy\-mm\-dd\#") & _
" AND [StoreNo] = " & Forms![YourFormName]![StoreNo]) = False) Then
strMessage = strMessage & "Store and Inspection Date already
exist."
End If
End If

If Len(strMessage) 0 Then
Cancel = True
MsgBox strMessage, vbCritical
End If

End Sub



--
Doug Steele, Microsoft Access MVP
http://I.Am/DougSteele
(no e-mails, please!)


"ridgerunner" wrote in message
...
Thank you. Can you please tell me where I need to put the Function?

"Douglas J. Steele" wrote:

Why would you concatenate the fields? (And you've forgotten to
concatenate
the StoreNo into the argument you're passing to DLookup)

As well, you need to check in the BeforeUpdate of both InspDate and
StoreNo,
since you can't be sure what order the fields will be filled in. Use a
generic function like:

Function DuplicateValue() As Boolean

If IsNull(Format(Forms![YourFormName]![InspDate]) And _
IsNull(Forms![YourFormName]![StoreNo]) = False Then
DuplicateValue = (IsNull(DLookup("StoreNo", "[YourTableName]", _
"[InspDate] = " & Format(Forms![YourFormName]![InspDate],
"\#yyyy\-mm\-dd\#") & _
" AND [StoreNo] = " & Forms![YourFormName]![StoreNo]) = False)
End If

End Function

You can then call that function in the BeforeUpdate event of both
controls:

Private Sub InspDate_BeforeUpdate(Cancel As Integer)

If DuplicateValue() = True Then
MsgBox "Store and Inspection Date already exist. Please correct",
_
vbCritical, "Duplicate Entry"
Cancel = True
End If

End Sub

Private Sub StoreNo_BeforeUpdate(Cancel As Integer)

If DuplicateValue() = True Then
MsgBox "Store and Inspection Date already exist. Please correct",
_
vbCritical, "Duplicate Entry"
Cancel = True
End If

End Sub



--
Doug Steele, Microsoft Access MVP
http://I.Am/DougSteele
(no e-mails, please!)


"Ryan Tisserand" wrote in
message
...
Here is my solution for multiple field duplication. I first join
the
two
fields in a query. For your example I would do this in a query.
NoDuplicates:[InspDate]&""&[StoreNo]
Now that you have one field named NoDuplicates to deal with, in the
"Before
Update" event of InspDate you would use this code

If not IsNull(DLookup("[NoDuplicates]", (YourQueryName),
"[NoDuplicates]="
&
Forms(YourFormName)![InspDate])) Then
MsgBox "Store and Inspection Date already exist. Please correct",
vbCritical, "Duplicate Entry"
End If
Exit Sub

Dont know if this will help but this works for me.


"ridgerunner" wrote:

I have a unique index set on two fields in my table, InspDate and
StoreNo. I
am trying to trap the error of attempting to add a duplicate by
having
the
code below in the LostFocus Event for the InspDate. I am running
around
in
circles. Can someone please help?


Private Sub InspDate_LostFocus()
If DMInspections.StoreNo = True Then
ElseIf DMInspDet.InspDate = True Then
MsgBox "Store and Inspection Date already exist. Please correct"
Me.InspDate.SetFocus
Else: Me.DMnameID.SetFocus
Exit Sub
End If
End Sub


tia
ridgerunner









  #20  
Old May 22nd, 2008, 10:39 PM posted to microsoft.public.access.forms
ridgerunner
external usenet poster
 
Posts: 118
Default Check For Existing Record

Sorry about the "ord". I found out why the syntax error was popping up: I
had to pull this "\#yyyy\-mm\-dd\#") & _ to the line above. I now do not
received any syntax errors but the code is not catching a duplicate entry.

This is how it looks now. I had to make a correction to the table name.

Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull(DLookup("StoreNo", "[tblDMInspections]", _
"[InspDate] = " & Format(Forms![frmAddDMInspection]![InspDate],
"\#yyyy\-mm\-dd\#") & _
" AND [StoreNo] = " & Forms![frmAddDMInspections]![StoreNo]) = False)
Then
strMessage = strMessage & "Store and Inspection Date already exist."
End If


End Sub

"ridgerunner" wrote:

Yes, ord wrap is messing things up. "Then" is in the correct place in the
property sheet or should I call it module, but this screen makes it look like
it is one line down.

At any rate, the code below is highlighted with I get the syntax error
message.

If IsNull(DLookup("StoreNo", "[DMInspections]", _
"[InspDate] = " & Format(Forms![frmAddDMInspection]![InspDate],

"Douglas J. Steele" wrote:

You may have fallen victim of word-wrap. Then is supposed to be on the line
above, after = False)

That's odd, though. It looks correct when I look at what I posted to you.

--
Doug Steele, Microsoft Access MVP
http://I.Am/DougSteele
(no private e-mails, please)


"ridgerunner" wrote in message
...
I am sorry I missed seeing this earlier. I have the part about making
certain that a store and a date are entered covered in a command button on
the form.

I copied and pasted the code but I am getting a syntax error message and
"IF" through the "THEN" are in red when I run compile.

Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull(DLookup("StoreNo", "[DMInspections]", _
"[InspDate] = " & Format(Forms![frmAddDMInspection]![InspDate],
"\#yyyy\-mm\-dd\#") & _
" AND [StoreNo] = " & Forms![frmAddDMInspections]![StoreNo]) = False)
Then
strMessage = strMessage & "Store and Inspection Date already exist."
End If


End Sub

"Douglas J. Steele" wrote:

Well, you'd put it in the same module as the rest of the code associated
with the form.

However, I agree with Klatuu that it probably makes more sense just to
put
the code in the form's BeforeUpdate event, as opposed to in the
BeforeUpdate
event of the two text boxes.

Private Sub Form_BeforeUpdate(Cancel = True)
Dim strMessage As String

If IsNull(Me.StoreNo) Then
strMessage = strMessage & "You must provide a Store Number." & vbCrLf
End If

If IsNull(Me.InspDate) Then
strMessage = strMessage & "You must provide an Inspection Date." &
vbCrLf
End If

If Len(strMessage) = 0 Then
If IsNull(DLookup("StoreNo", "[YourTableName]", _
"[InspDate] = " & Format(Forms![YourFormName]![InspDate],
"\#yyyy\-mm\-dd\#") & _
" AND [StoreNo] = " & Forms![YourFormName]![StoreNo]) = False) Then
strMessage = strMessage & "Store and Inspection Date already
exist."
End If
End If

If Len(strMessage) 0 Then
Cancel = True
MsgBox strMessage, vbCritical
End If

End Sub



--
Doug Steele, Microsoft Access MVP
http://I.Am/DougSteele
(no e-mails, please!)


"ridgerunner" wrote in message
...
Thank you. Can you please tell me where I need to put the Function?

"Douglas J. Steele" wrote:

Why would you concatenate the fields? (And you've forgotten to
concatenate
the StoreNo into the argument you're passing to DLookup)

As well, you need to check in the BeforeUpdate of both InspDate and
StoreNo,
since you can't be sure what order the fields will be filled in. Use a
generic function like:

Function DuplicateValue() As Boolean

If IsNull(Format(Forms![YourFormName]![InspDate]) And _
IsNull(Forms![YourFormName]![StoreNo]) = False Then
DuplicateValue = (IsNull(DLookup("StoreNo", "[YourTableName]", _
"[InspDate] = " & Format(Forms![YourFormName]![InspDate],
"\#yyyy\-mm\-dd\#") & _
" AND [StoreNo] = " & Forms![YourFormName]![StoreNo]) = False)
End If

End Function

You can then call that function in the BeforeUpdate event of both
controls:

Private Sub InspDate_BeforeUpdate(Cancel As Integer)

If DuplicateValue() = True Then
MsgBox "Store and Inspection Date already exist. Please correct",
_
vbCritical, "Duplicate Entry"
Cancel = True
End If

End Sub

Private Sub StoreNo_BeforeUpdate(Cancel As Integer)

If DuplicateValue() = True Then
MsgBox "Store and Inspection Date already exist. Please correct",
_
vbCritical, "Duplicate Entry"
Cancel = True
End If

End Sub



--
Doug Steele, Microsoft Access MVP
http://I.Am/DougSteele
(no e-mails, please!)


"Ryan Tisserand" wrote in
message
...
Here is my solution for multiple field duplication. I first join
the
two
fields in a query. For your example I would do this in a query.
NoDuplicates:[InspDate]&""&[StoreNo]
Now that you have one field named NoDuplicates to deal with, in the
"Before
Update" event of InspDate you would use this code

If not IsNull(DLookup("[NoDuplicates]", (YourQueryName),
"[NoDuplicates]="
&
Forms(YourFormName)![InspDate])) Then
MsgBox "Store and Inspection Date already exist. Please correct",
vbCritical, "Duplicate Entry"
End If
Exit Sub

Dont know if this will help but this works for me.


"ridgerunner" wrote:

I have a unique index set on two fields in my table, InspDate and
StoreNo. I
am trying to trap the error of attempting to add a duplicate by
having
the
code below in the LostFocus Event for the InspDate. I am running
around
in
circles. Can someone please help?


Private Sub InspDate_LostFocus()
If DMInspections.StoreNo = True Then
ElseIf DMInspDet.InspDate = True Then
MsgBox "Store and Inspection Date already exist. Please correct"
Me.InspDate.SetFocus
Else: Me.DMnameID.SetFocus
Exit Sub
End If
End Sub


tia
ridgerunner









 




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Forum Jump


All times are GMT +1. The time now is 07:22 AM.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Copyright 2004-2019 OfficeFrustration.
The comments are property of their posters.