# Scripting Validation before Database insert issue

**URL:** <https://forum.inductiveautomation.com/t/scripting-validation-before-database-insert-issue/18559>\
**Category:** Ignition\
**Created:** [June 21, 2018, 2:01pm UTC](https://forum.inductiveautomation.com/t/scripting-validation-before-database-insert-issue/18559 "2018-06-21T14:01:40Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![jshaffer09](https://avatars.discourse-cdn.com/v4/letter/j/df788c/32.png) [@jshaffer09](https://forum.inductiveautomation.com/u/jshaffer09)\
**Post date:** [June 21, 2018, 2:01pm UTC](https://forum.inductiveautomation.com/t/scripting-validation-before-database-insert-issue/18559/1 "2018-06-21T14:01:40Z")

</div>

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

```auto
#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 

```

---

<div class="post-metadata">

**Author:** ![ethomason](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ethomason/32/43338_2.png) [@ethomason](https://forum.inductiveautomation.com/u/ethomason)\
**Post date:** [June 21, 2018, 2:04pm UTC](https://forum.inductiveautomation.com/t/scripting-validation-before-database-insert-issue/18559/2 "2018-06-21T14:04:48Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![jshaffer09](https://avatars.discourse-cdn.com/v4/letter/j/df788c/32.png) [@jshaffer09](https://forum.inductiveautomation.com/u/jshaffer09)\
**Post date:** [June 21, 2018, 4:20pm UTC](https://forum.inductiveautomation.com/t/scripting-validation-before-database-insert-issue/18559/3 "2018-06-21T16:20:02Z")

</div>

ok, I changed it so it is more readable

---

<div class="post-metadata">

**Author:** ![jshaffer09](https://avatars.discourse-cdn.com/v4/letter/j/df788c/32.png) [@jshaffer09](https://forum.inductiveautomation.com/u/jshaffer09)\
**Post date:** [June 21, 2018, 4:36pm UTC](https://forum.inductiveautomation.com/t/scripting-validation-before-database-insert-issue/18559/4 "2018-06-21T16:36:29Z")

</div>

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

something like this

if not skipRowFlag and validationError:

---

<div class="post-metadata">

**Author:** ![Stuart](https://avatars.discourse-cdn.com/v4/letter/s/cab0a1/32.png) [@Stuart](https://forum.inductiveautomation.com/u/Stuart)\
**Post date:** [June 21, 2018, 5:44pm UTC](https://forum.inductiveautomation.com/t/scripting-validation-before-database-insert-issue/18559/5 "2018-06-21T17:44:11Z")

</div>

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

Change,

```auto
    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

```auto
    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.

```auto
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”**.
