Listmates, I have had a report where after the user hits the 'SAVE' button, double entries of the same data is recorded
I've tested extensively on Desk Top with good internet connection unable to reproduce.
However, I was attempting same on a tablet, where the connection to the internet was very slow. I was able to reproduce the issue reported. However, I again tried to repeat the same issue, with in seconds of first test, Made sure I pulled my finger away from the tablet and viola no double entry.
Does this sound like user get's impatient, hits the save button a couple of times, then the computer catches up to the lag and process both clicks? BTW, this is a really new development for this website , been around a while.
Thanks in advance
Hi Roy,
For any save operation in an application you should make sure that the data hasn't already been captured. Usually a double up operation won't be simultaneous, so that's probably less of a worry so you can check if the data has already been saved before writing the data again. In some cases multiple saves won't matter, but where it does, checking is a must.
IOW, it doesn't matter whether this is accidental or incidental or deliberate - your application is responsible for making sure the data doesn't get doubled up, not the UI...
It's more work, but it's a necessary part of Web applications.
+++ Rick ---
Thanks Rick ... More investigation reveals that Chrome browser may be at issue here.
Couple clarifying remarks, the only time double entries happen is when a NEW record is being saved. Existing records not an issue.
I tested same scenario on Edge, Foxfire and Safari with no duplicates entries. I have had other issues where I was using google ads on the pages, Boy oh Boy, did that create a nightmare. The web site became unusable because of it. Removed the Ads ... viola problem gone.
Is anybody else seeing similar issues?
Couple clarifying remarks, the only time double entries happen is when a NEW record is being saved. Existing records not an issue.
Of course, but for new items added you can still check to see whether that record was already entered with the same data.
+++ Rick ---
Thanks Rick ... I'll start to work on that.
Thought I would share this code, as it seems to have fixed the issue with Chrome creating duplicate entries. After any record is added to any data base, this code is run looking to see if the record is a dupe. I tried to do this prior to the actual save, but that proved a little difficult. So, I opted to wait until the record was saved, then execute this code.
FUNCTION CheckForDupeRecord(p_cFile, p_cKeyField)
* Thank your Google for this code Ugh
* 6/26/19 Google Chrome, on some systems, is adding 2 records for each one that is 'ADDED' to the
* system. Therefore, going to have to make sure this information here is not a duplicate, if so then
* delete the duplicate record. Note: This check excludes
LOCAL l_nSelect,;
l_cOrder,;
l_aFields[1],;
l_nFields,;
l_cThisField,;
l_aNewEntry[1],;
l_nTotalDupes,;
l_lReturn
l_nSelect = SELECT()
l_nTotalDupes = 0
SELECT (p_cFile)
l_cOrder = SET("Order") && dont expect an order, but, safety reasons
SET ORDER TO
l_nFields = AFIELDS(l_aFields,p_cFile)
DIMENSION l_aNewEntry[l_nFields,3 ] && Col 1 = field name, Col 2 1st Record, Col 3 2nd record
FOR l_ni = 1 TO l_nFields
l_aNewEntry [ l_ni, 1] = l_aFields[l_ni, 1] && The name of the field
endfor
SELECT (p_cFile)
GO bott
FOR l_ni = 1 TO l_nFields
l_cThisField = l_aNewEntry[l_ni,1]
l_aNewEntry[l_ni, 2] = &p_cFile->&l_cThisField
ENDFOR
* -- get the record just above it
SELECT (p_cFile)
SKIP -1
FOR l_ni = 1 TO l_nFields
l_cThisField = l_aNewEntry[l_ni,1]
l_aNewEntry[l_ni, 3] = &p_cFile->&l_cThisField
ENDFOR
* -- Now Compare the two...
FOR l_ni = 1 TO l_nFields
IF UPPER(l_aNewEntry[ l_ni, 1]) # UPPER(p_cKeyField)
IF l_aNewEntry[ l_ni, 2] = l_aNewEntry[ l_ni, 3]
l_nTotalDupes = l_nTotalDupes + 1
ENDIF
ENDIF
ENDFOR
IF l_nTotalDupes = (l_nFields -1) && Don't count the primary key as it is not compared
SELECT (p_cFile)
GO bott
DELETE
ENDIF
SELECT (p_cFile)
SET ORDER TO &l_cOrder
SELECT ( l_nSelect)
RETURN
ENDFUNC
``