| 10/31/2025 10:32:12 AM 
 
 
 
 
 
 
 
 | 
											
												| 
														
															|  | 
																	
																		| slxdeveloper.com Community Forums |  |  
																		|  |  |  
	| The Forums on slxdeveloper.com are now retired. The forum archive will remain available for the time being. Thank you for your participation on slxdeveloper.com! 
| Forum to discuss writing script in Architect plugins for SalesLogix & general SalesLogix customization topics (for Windows client only). View the code of conduct for posting guidelines.
 
 |  | 
 
 
 
		You can 
																				subscribe to receive a daily forum digest in your 
																					user profile. View the site code 
																					of conduct for posting guidelines.
			|  |  
			
		 
			|  | 
				
					| Validate script runs twice  Posted: 06 Nov 06 11:04 AM
 |  
					| fiogf49gjkf0dI have a custom form that gets called from a right-click menu option on a datagrid tab.  The validate script appears to run twice and I cannot figure out why.  There is only one field on this custom form and the validation is a simple If statement.  We have run into this issue on another form as well (with just simple If...statements) and have not been able to resolve the issue. 
 The validation for this form is:
 
 Function AXFormValidate(Sender)
 if txtCustomerID.Text = "" then
 MsgBox "You must select or enter a Customer ID.", 0, "Invalid Customer ID"
 txtCustomerID.setfocus
 AXFormValidate = false
 exit function
 end if
 End Function
 
 Any suggestions?
   |  
					|  |  |  
			|  | 
				
					| Re: Validate script runs twice  Posted: 06 Nov 06 5:10 PM
 |  
					| fiogf49gjkf0dYou don't need the exit function call. It's redundant. I believe the problem is AXFormValidate never evaluates to true. It may never default to true, so it's generally best not to leave that up to chance. 
 If that's not it, the only time I've ever had it fire twice is when I put an AXFormValidate call in my OK button's OnClick event while having OnValidate set. OnClick would fire, evaluating the form before I would call Form.ModalResult. The problem was SalesLogix's built in handling for Forms would kick off OnValidate, so I'd have to turn it off or risk it firing twice. It's not a problem when the form is valid because no MsgBox pops up but it'd still be firing twice.
 |  
					|  |  |  
			|  | 
				
					| Re: Validate script runs twice  Posted: 06 Nov 06 6:46 PM
 |  
					| fiogf49gjkf0dOut of curiosity, what does the code look like that triggers the form to close? Are you closing it in code, or is it happening as the result of a button click with ModalResult=mrOK? |  
					|  |  |  
			|  | 
				
					| Re: Validate script runs twice  Posted: 07 Nov 06 8:50 AM
 |  
					| fiogf49gjkf0dI tried defaulting the AXFormValidate = true as the first line of code in the validate function.  That did not work. 
 Here is the code that I think you are looking for Ryan.  If not, let me know!  Thanks...
 
 Sub Button1Click(Sender)
 application.GlobalInfo.Add "BranchMoveCustID", txtCustomerID.Text
 
 MoveBranches.ModalResult = mrOK
 Application.BasicFunctions.InvokeSetResult "mrOK"
 End Sub
 
 Sub Button2Click(Sender)
 MoveBranches.ModalResult = mrCancel
 Application.BasicFunctions.InvokeSetResult "mrCancel"
 End Sub
 |  
					|  |  |  
			|  | 
				
					| Re: Validate script runs twice  Posted: 08 Nov 06 1:54 PM
 |  
					| fiogf49gjkf0dHere's my typical AXFormValidate, which I pretty much use on every single form (give or take it's contents): 
 Function AXFormValidate(Sender)
 dim stringMissing
 dim booleanIsValid
 dim booleanResult
 dim integerResult
 On Error Resume Next
 booleanResult = false
 integerResult = 0
 booleanIsValid = true
 if (pickListType.Text = "") then
 if (stringMissing = "") then
 stringMissing = "Type"
 else
 stringMissing = stringMissing & ", Type"
 end if
 booleanIsValid = false
 end if
 if (pickListStatus.Text = "") then
 if (stringMissing = "") then
 stringMissing = "Status"
 else
 stringMissing = stringMissing & ", Status"
 end if
 booleanIsValid = false
 end if
 if (not (booleanIsValid)) then
 integerResult = MsgBox(Application.Translator.Localize("The following items must be filled in: " & vbCRLF & stringMissing), vbYes, Application.Translator.Localize("Validation"))
 booleanResult = false
 else
 booleanResult = true
 end if
 AXFormValidate = booleanResult
 ErrorCheck(Application.Translator.Localize("AXFormValidate:"))
 On Error Goto 0
 End Function
 
 Here's a typical OK button OnClick event:
 
 Sub buttonOKClick(Sender)
 dim booleanResult
 On Error Resume Next
 booleanResult = AXFormValidate(oAXForm)
 if (booleanResult) then
 oAXForm.ModalResult = mrOk
 Application.BasicFunctions.InvokeSetResult "mrOk"
 else
 oAXForm.ModalResult = mrNone
 Application.BasicFunctions.InvokeSetResult "mrNone"
 end if
 ErrorCheck(Application.Translator.Localize("buttonOKClick:"))
 On Error Goto 0
 End Sub
 
 I ONLY use buttonOKClick on Manage Forms. Data Form OK and Cancel buttons work nicely as-is, and there is absolutely no need to override them with custom code except in special circumstances. Your case almost presents such a circumstance but I would place the GlobalInfo.Add at the end of your AXFormValidate routine, otherwise it's a wasteful call if the form hasn't been validated first.
 
 To use this technique, turn off the OnValidate event. The code calls AXFormValidate BEFORE calling Form.ModalResult. If you were to blindly set Form.ModalResult on a Manage Form, it would close the form regardless of AXFormValidate's return. This is my poor man's way of making manage forms behave like data forms.
 |  
					|  |  |  
			|  | 
				
					| Re: Validate script runs twice  Posted: 09 Nov 06 9:17 AM
 |  
					| fiogf49gjkf0dIs "MoveBranches" the name of the form, or the name of some other control on the form, like a button? |  
					|  |  |  
			|  | 
				
					| Re: Validate script runs twice  Posted: 09 Nov 06 9:20 AM
 |  
					| fiogf49gjkf0dRyan, 'MoveBranches' is the name of the Pop-up form.  It requires the user to enter in a customer number to move the branches to. |  
					|  |  |  
			|  | 
				
					| Re: Validate script runs twice  Posted: 22 Jun 10 8:46 AM
 |  
					| Here's how I remember all of this: 
 AXFormValidate is called by mrOK modal buttons.
 
 AXFormValidate is NOT called by mrNone or mrCancel buttons.
 
 AXFormValidate is NOT called when hitting the ESC key or the X in the upper right hand window corner.
 
 If you do NOT have an AXFormValidate event and script, clicking on an mrOK button will fire your script, save any databound data on a data entry form, and close the form.
 
 If you HAVE an AxformValidate event and script, you pass it input parameters via form controls, the form itself, and global variables.
 
 The AXFormValidate logic should process these 'input' parameters and come up with an answer: Keep the form Open (don't save the data, don't close the form), or Close the Form (save the data, close the form, mrOK is the modality).
 
 If fires AFTER the onButtonClick event for an mrOK modal button.
 
 It does NOT fire after you've run code somewhere that does an
 Application.BasicFunctions.CloseCurrentView False
 
 If you have several mrOK buttons.....the AXFormValidate fires off on any of the clicked upon buttons AFTER it runs the script for the clicked upon button ONLY. (Duh).
 
 don't call AXFormValidate or use it as a function (when you use AXFormValidate as a function do you know what SENDER really is??? because it needs to be the Form). The FORM does that automagically as a form level event handler.
 
 Declare a global variable: OKToCloseForm
 Set it to False when the form opens.
 
 When controls change or an mrOK button is pressed evaluate what you have to and come up with an answer: OKToCloseForm = True or False...and possibly a message box to your user.
 
 when the AXFormValidate is triggered by the form:
 Sub AXFormValidate (Sender the form itself)
 AXFormValidate = False
 IF OKToCloseForm Then AXFormValidate = True
 End Sub
 |  
					|  |  |  
			|  |  
 
 
	
		| |  Forum RSS Feed - Subscribe to the forum RSS feed to keep on top of the latest forum activity! | 
 |  |  
 |  |  |  |  |