Really stuck on how to avoid duplicate entries

I am really struggling with how to avoid duplicate entries. I’ve tried the suggested approaches but just keep hitting a brick wall.
Someone, please spell it out in simple terms.
I have racers with UIDs who can enter a time via a form to a race-specific sheet.
Unfortunately, the same racer can make multiple entries.

What are your criteria for determining uniqueness?

Are you trying to prevent a racer from entering more than one time? Or are you trying to prevent two different racers from entering the same time?

Or is it more than one time from the same racer for the same event…?

Whatever the case, my gut feel is that if a UserID is part of the criteria, then he can probably detect potential duplicates without even showing the form screen.

Ya…wait to hear from him.

So the racers UID needs to be recognised as already registered on the sheet so as to prevent another entry.
Thanks in advance.

Okay, so all you need to do is create a relation from whichever table you’re starting on that joins the current users ID to the Racers UID in the race sheet. If that relation is not empty, the racer is already registered and you can do whatever you need to do to prevent them from submitting a second time. eg. Hide the button that opens the form.

I’ve tried this but I don’t seem to be getting anywhere. I must be missing a step

Can you provide a couple of screen shots that show the tables/columns involved, and how you currently have them configured?

Thanks for your time Darren.
The first image is a list of races with a relation to the race results sheet ( this is set to an independent view in the app)

The second image is the sheet that receives the form input.


So you have different sheets for each race? Is there a reason you don’t keep it in one?

mainly to calculate placings.
If there is a more elegant way I’m totally open to it.

How are you adding entries to each race? I assume with a form?

What I would do is have a centralized sheet where you have all entries and differentiate them with a “race ID” column which you catch when users submit their entries.

I’m with @ThinhDinh - a separate sheet per race won’t scale, and creates way more work than is necessary. Any time you find yourself duplicating the same columns in multiple sheets you should immediately stop and ask yourself “Am I doing this right?”. In most cases, the answer will be no.

Back to the issue with detecting duplicates. I’m still having trouble visualising how you have it set up. It looks like you have a series of relations in the first sheet, with each of them linking to a separate race sheet?

How are these relations built, and what does each row in the first sheet represent? I can see that the relations are only formed on the second row. I’m not sure what that means, but it does seem odd.

Also, what is the user experience as it relates to these tables?
You mentioned that the 2nd sheet receives the form input. Are you using a native form, or a custom form?

Sorry for all the questions, but I’m just trying to understand. After seeing those two screenshots that you shared, I’ve realised that the way you have your app tables structured is nothing like what I would have expected to see.

3 Likes

Thanks for the feedback.
Please excuse my lack of understanding as this is a sideline to my real work.

My current relations in the race sheet are templates related to self so as to filter out the varying racer categories for ranking purposes. To simplify this I have created a sheet for each race distance and date.
I was able to create a functional ranking app but as you quite rightly put it, creating a lot of work for myself.
My next issue has been trying to ensure that there are no duplicate entries.
As for user experience, I want racers to tap on the race they have completed and be presented with a form that only requires the BIB number and Time to be entered (once Only)
I would be very keen to make this a lot more simple than I’ve made it.
Please advise.
Regards Jason.
Please feel free to climb inside and take a look.
Go to Enter Results tab and select the race ALPHA 6K I have a form feeding into a sheet from there.

That looks like a public invite to join your team.
I’ve joined and will take a look, but I’d advise you to edit your post and remove that link. Otherwise you could end up with dozens of people joining your team and poking around in your apps. And I’m guessing that you wouldn’t want that.

Update: Actually, @jason_palmer I’ve removed it for you. This is a public forum. Literally anyone with an Internet connection could stumble on your link, join your team and delete all of your apps.

2 Likes

@jason_palmer - I’ve had a look at your app, and privately sent you a video with a few ideas.

But just for the benefit of others that might stumble on this thread, the fundamental issue that you have is that you are creating a separate table for each set of Race Results. This is taking you down a path that will cause a world of pain in the future.

A much better approach is just a single “Results” table that includes columns for Race ID, Racer ID and the Racer Results for that race. This has lots of benefits, but the immediate one is that it makes detecting duplicate results trivial. All you need are two template columns - one in each table - that concatenate the Race/Racer ID’s, and then build a relation between those two template columns. Note that the template column in the Race table should use the ID of the currently signed in user, whereas the one in the Results table uses the Racer ID from each row. That relation will be unique for each user/race, and if it isn’t empty that means that racer has already entered their results for that race, and so you can prevent them from submitting a second set of results.

I’ve provided a lot more details in the video I sent you (and a few more tips), let me know if you have more questions or problems.

3 Likes