Scripting Validation before Database insert issue

I am wanting to skip the insert if the skipRowFlag and the VaildationError are meet. Here is what I have so far pretty long program. Any Ideas would help

#get data from dataset
data = event.source.parent.getComponent('Table').data
#get data from dropdown selection
auditorChoice = event.source.parent.getComponent('Auditor').selectedValue
#get data from dropdown selection
equipnbrChoice = event.source.parent.getComponent('EquipNbr').selectedValue
#get data from dropdown selection
crewChoice = event.source.parent.getComponent('Crew').selectedValue
#gets tag value
submitSuccess= ("[default]Moblie/DataSubmitted", 1)
#gets tag value
validationError = ("[default]Moblie/DataValidationError", 1)

 # vaildate auditorChoice value is greater than default
if auditorChoice ==-1:
	system.tag.write("[default]Moblie/DataAuditorRequired", 1)
# vaildate equipnbrchoice value is greater than default
if equipnbrChoice ==-1:
	system.tag.write("[default]Moblie/DataEquipNbrRequired", 1)
# vaildate crewChoice value is greater than default
if crewChoice ==-1:
	system.tag.write("[default]Moblie/DataCrewRequired", 1)

for row in range(data.getRowCount()):
	# Loops though each row and if at least one of the column contains a blank cell, the row will be skipped.
	skipRowFlag = 0
	for col in range(data.getColumnCount()):
		if data.getValueAt(row,col)== "":
			skipRowFlag = 1
			validationError = 1
			system.tag.write("[default]Moblie/DataValidationError", 1)
			def writeLater():
				import system
			system.tag.write("[default]Moblie/DataValidationError", 0)
			break
	# Insert the row into the database if the every column in that row was good
	if not skipRowFlag:
		query = "INSERT INTO MblAudit(EquipNbr, Auditor, StepNbr, AuditQns, Answer, AuditTm, NonCompIssue, DateTm, Crew) VALUES(?,?,?,?,?,?,?,?,?)"
		args = [event.source.parent.getComponent('EquipNbr').selectedLabel, event.source.parent.getComponent('Auditor').selectedStringValue, data.getValueAt(row, 0), data.getValueAt(row, 1), data.getValueAt(row, 2),data.getValueAt(row, 3),data.getValueAt(row, 4), system.date.now(),event.source.parent.getComponent('Crew').selectedStringValue]
		system.db.runPrepUpdate(query, args)
		system.tag.write("[default]Moblie/DataSubmitted", 1)
		submitSuccess = 1
		system.tag.write("[default]Moblie/DataChanged", 0)
		def writeLater():
			import system
			system.tag.write("[default]Moblie/DataSubmitted", 0)			
		system.util.invokeLater(writeLater, 2000)
	if submitSuccess ==1:
		system.tag.write("[default]Moblie/DataValidationError", 0)
	if submitSuccess ==1:
		newData=system.dataset.setValue(data,row,"Answer","N/A")
		data=newData
		event.source.parent.getComponent('Table').data=data
	if submitSuccess ==1:
		newData=system.dataset.setValue(data,row,"AuditTm","N/A")
		data=newData
		event.source.parent.getComponent('Table').data=data
	if submitSuccess ==1:
		newData=system.dataset.setValue(data,row,"NonCompIssue","N/A")
		data=newData
		event.source.parent.getComponent('Table').data=data
	if submitSuccess ==1:
		event.source.parent.getComponent('Auditor').selectedValue = -1
	if submitSuccess ==1:
		event.source.parent.getComponent('EquipNbr').selectedValue = -1
	if	submitSuccess ==1:
		event.source.parent.getComponent('Crew').selectedValue = -1 

A quick note on posting code - put your triple quotes on their own lines so it formats correctly.

ok, I changed it so it is more readable

The skipRowFlag is meet but I want to add the validationError in to the If statement.

something like this

if not skipRowFlag and validationError:

You know you can have multiple entries in an if statement?

Change,

    if submitSuccess ==1:
		system.tag.write("[default]Moblie/DataValidationError", 0)
	if submitSuccess ==1:
		newData=system.dataset.setValue(data,row,"Answer","N/A")
		data=newData
		event.source.parent.getComponent('Table').data=data
	if submitSuccess ==1:
		newData=system.dataset.setValue(data,row,"AuditTm","N/A")
		data=newData
		event.source.parent.getComponent('Table').data=data
        ...

to

    if submitSuccess ==1:
		system.tag.write("[default]Moblie/DataValidationError", 0)
		newData=system.dataset.setValue(data,row,"Answer","N/A")
		data=newData
		event.source.parent.getComponent('Table').data=data
		newData=system.dataset.setValue(data,row,"AuditTm","N/A")
		data=newData
		event.source.parent.getComponent('Table').data=data
        ...

And… What you wrote in your example is exactly what you need to do.

skipRowFlag = 0
validationError = 1

if (not (skipRowFlag) and validationError):
    print "skip = 0, val = 1"
else:
    print "Something else"

This will be true if skipRowFlag is 0, and validationError is 1. Otherwise it will print “Something else”.

1 Like