Alpha Software Mobile Development Tools:   Alpha Anywhere    |   Alpha TransForm subscribe to our YouTube Channel  Follow Us on LinkedIn  Follow Us on Twitter  Follow Us on Facebook

Announcement

Collapse

The Alpha Software Forum Participation Guidelines

The Alpha Software Forum is a free forum created for Alpha Software Developer Community to ask for help, exchange ideas, and share solutions. Alpha Software strives to create an environment where all members of the community can feel safe to participate. In order to ensure the Alpha Software Forum is a place where all feel welcome, forum participants are expected to behave as follows:
  • Be professional in your conduct
  • Be kind to others
  • Be constructive when giving feedback
  • Be open to new ideas and suggestions
  • Stay on topic


Be sure all comments and threads you post are respectful. Posts that contain any of the following content will be considered a violation of your agreement as a member of the Alpha Software Forum Community and will be moderated:
  • Spam.
  • Vulgar language.
  • Quotes from private conversations without permission, including pricing and other sales related discussions.
  • Personal attacks, insults, or subtle put-downs.
  • Harassment, bullying, threatening, mocking, shaming, or deriding anyone.
  • Sexist, racist, homophobic, transphobic, ableist, or otherwise discriminatory jokes and language.
  • Sexually explicit or violent material, links, or language.
  • Pirated, hacked, or copyright-infringing material.
  • Encouraging of others to engage in the above behaviors.


If a thread or post is found to contain any of the content outlined above, a moderator may choose to take one of the following actions:
  • Remove the Post or Thread - the content is removed from the forum.
  • Place the User in Moderation - all posts and new threads must be approved by a moderator before they are posted.
  • Temporarily Ban the User - user is banned from forum for a period of time.
  • Permanently Ban the User - user is permanently banned from the forum.


Moderators may also rename posts and threads if they are too generic or do not property reflect the content.

Moderators may move threads if they have been posted in the incorrect forum.

Threads/Posts questioning specific moderator decisions or actions (such as "why was a user banned?") are not allowed and will be removed.

The owners of Alpha Software Corporation (Forum Owner) reserve the right to remove, edit, move, or close any thread for any reason; or ban any forum member without notice, reason, or explanation.

Community members are encouraged to click the "Report Post" icon in the lower left of a given post if they feel the post is in violation of the rules. This will alert the Moderators to take a look.

Alpha Software Corporation may amend the guidelines from time to time and may also vary the procedures it sets out where appropriate in a particular case. Your agreement to comply with the guidelines will be deemed agreement to any changes to it.



Bonus TIPS for Successful Posting

Try a Search First
It is highly recommended that a Search be done on your topic before posting, as many questions have been answered in prior posts. As with any search engine, the shorter the search term, the more "hits" will be returned, but the more specific the search term is, the greater the relevance of those "hits". Searching for "table" might well return every message on the board while "tablesum" would greatly restrict the number of messages returned.

When you do post
First, make sure you are posting your question in the correct forum. For example, if you post an issue regarding Desktop applications on the Mobile & Browser Applications board , not only will your question not be seen by the appropriate audience, it may also be removed or relocated.

The more detail you provide about your problem or question, the more likely someone is to understand your request and be able to help. A sample database with a minimum of records (and its support files, zipped together) will make it much easier to diagnose issues with your application. Screen shots of error messages are especially helpful.

When explaining how to reproduce your problem, please be as detailed as possible. Describe every step, click-by-click and keypress-by-keypress. Otherwise when others try to duplicate your problem, they may do something slightly different and end up with different results.

A note about attachments
You may only attach one file to each message. Attachment file size is limited to 2MB. If you need to include several files, you may do so by zipping them into a single archive.

If you forgot to attach your files to your post, please do NOT create a new thread. Instead, reply to your original message and attach the file there.

When attaching screen shots, it is best to attach an image file (.BMP, .JPG, .GIF, .PNG, etc.) or a zip file of several images, as opposed to a Word document containing the screen shots. Because Word documents are prone to viruses, many message board users will not open your Word file, therefore limiting their ability to help you.

Similarly, if you are uploading a zipped archive, you should simply create a .ZIP file and not a self-extracting .EXE as many users will not run your EXE file.
See more
See less

Check for duplicate record?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Check for duplicate record?

    Hi All,

    I have done a search here and found only 4 threads which unfortunately have not answered the following question.

    Using a Dialog to enter their name and address, how do I prevent and also advise the user that they have already registered?

    I assume this would be in BeforeValidate?
    Regards
    Keith Hubert
    Alpha Guild Member
    London.
    KHDB Management Systems
    Skype = keith.hubert


    For your day-to-day Needs, you Need an Alpha Database!

    #2
    Re: Check for duplicate record?

    I'd point you towards the Validate event Keith.

    Something like this:

    Code:
    Currentform.has_error = .f.
    Currentform.Error_Message = ""
    
    ' validation checking code here - whatever you need
    
    if some_condition_here then
       Currentform.has_error = .t.
       Currentform.Error_Message = "Our records show you have already registered." 
    end if
    -Steve
    sigpic

    Comment


      #3
      Re: Check for duplicate record?

      Hi Steve,

      Thanks for getting back to me on this.

      Could you please give me an example of "validation checking code".
      Regards
      Keith Hubert
      Alpha Guild Member
      London.
      KHDB Management Systems
      Skype = keith.hubert


      For your day-to-day Needs, you Need an Alpha Database!

      Comment


        #4
        Re: Check for duplicate record?

        Well, it depends on exactly what approach you want to take.

        Here's one example (I'm typing directly into the msg board, not in the Xbasic editor, so not perfect stuff here:)

        Let's suppose your controls where they entered their name are vFirst and vLast, and your Customer.dbf fields are First and Last:

        Code:
        query.filter = "First = '" + alltrim(currentform.controls.vFirst.value) + "' .and. Last = '" + alltrim(currentform.controls.vLast.value) + "'"
        query.order = ""
        t = table.open("[pathalias.adb_path]\customer.dbf")
        qdx = t.query_create()
        if qdx.records_get() > 0
           CurrentForm.Has_Error = .t. 
           CurrentForm.Error_Message = "You've already registered." 
        end if
        t.close()
        Note: This approach isn't sufficient: it'll reject Robert Smith after the first one, for instance.
        -Steve
        sigpic

        Comment


          #5
          Re: Check for duplicate record?

          Thanks Steve, I will have a play in the morning.

          I'm a bit rusty with the syntax but I'm sure to pick it up again as needs must.
          Regards
          Keith Hubert
          Alpha Guild Member
          London.
          KHDB Management Systems
          Skype = keith.hubert


          For your day-to-day Needs, you Need an Alpha Database!

          Comment


            #6
            Re: Check for duplicate record?

            Steve that was just perfect.

            It put things into context for me, many thanks.

            What is wrong with Robert Smith? ;) Who is this guy?

            I changed filter to LastName and Post Code.
            Regards
            Keith Hubert
            Alpha Guild Member
            London.
            KHDB Management Systems
            Skype = keith.hubert


            For your day-to-day Needs, you Need an Alpha Database!

            Comment


              #7
              Re: Check for duplicate record?

              Guys,

              I am now in need to do almost the same thing.

              I have a calculated field in my table called 'Baseline'.

              When a user enters details of an asset within my dialog component e.g. in fieldA and fieldB, then presses Submit. I need a check put in place to check for any duplicates exist within the table.

              My main difference is that the calculated field 'Baseline' in my table is based on;

              alltrim(fieldA)+"."+alltrim(fieldB)

              I think i need to put some duplicate avoidance code in the table?

              What do you think?

              Denis

              Comment


                #8
                Re: Check for duplicate record?

                Denis,

                I think the easiest way is to create an index for your table that matches the calculation, then use the exist() function or keyexist() function to check if it is already entered.

                Pat
                Pat Bremkamp
                MindKicks Consulting

                Comment


                  #9
                  Re: Check for duplicate record?

                  Thanks Pat, I will give that a go.

                  Denis

                  Comment


                    #10
                    Re: Check for duplicate record?

                    Originally posted by Keith Hubert View Post
                    Thanks Steve, I will have a play in the morning.

                    I'm a bit rusty with the syntax but I'm sure to pick it up again as needs must.
                    Hi Keith

                    I am trying to utilise the code that Steve has referred to in this thread, but I keep getting an error which seems to be related to the query.filter = "Surname = '" +

                    Any ideas where I could be going wrong?

                    function CanInsertRecord as v (DataSubmitted as P, Args as p, PageVariables as p, Result as p)
                    with PageVariables
                    dim t as P
                    dim qdx as P
                    t = table.open("persons")
                    query.filter = "Surname = '" +
                    alltrim(DataSubmitted.Surname) + "' .and. FirstName = '" +
                    alltrim(DataSubmitted.FirstName) + "'"
                    query.order = ""
                    qdx = t.query_create()
                    if qdx.records_get() > 0
                    CurrentForm.Has_Error = .t.
                    CurrentForm.Error_Message = "You've already registered."
                    end if
                    t.close()
                    Result.Cancel = .f.
                    Result.ErrorHTML = ""
                    end with
                    end function

                    In a nutshell, I am wanting to avoid the same person being entered twice into the dbase. To acheive this, the validation is based upon the surname and first name fields

                    Many thanks for any feedback you can provide

                    Jason

                    Comment


                      #11
                      Re: Check for duplicate record?

                      Jason,
                      If indeed your code is what you have in your post, then obvious what the problem is (script lines wrapped when they should not be). Use the "Code Tags" that are available in the Advanced reply to a thread (highlight your code that has your formatting --indents and such, then click on the # icon). Even if not the problem you will have to do this as the way you have it, it simply cannot be read by most to find errors.

                      the following would then be a one liner...
                      Code:
                      query.filter = "Surname = '" + alltrim(DataSubmitted.Surname) + "' .and. FirstName = '" + alltrim(DataSubmitted.FirstName) + "'"
                      Mike
                      __________________________________________
                      It is only when we forget all our learning that we begin to know.
                      It's not what you look at that matters, it's what you see.
                      Henry David Thoreau
                      __________________________________________



                      Comment


                        #12
                        Re: Check for duplicate record?

                        I second Pat's suggestion and always use exist() to find duplicates. But (Keith) you probably know by now that using the name will never work. Too many Joe's and the same Joe will enter it Joe Smith and then J Smith the next time. That's why everyone uses email address or telephone, or SSN in the old day.
                        Steve Wood
                        See my profile on IADN

                        Comment


                          #13
                          Re: Check for duplicate record?

                          Hi Mike

                          Many thanks for your reply, greatly appreciated. Your suggestion certainly fixed that issue, unfortunately the duplicate values are still being allowed. Should I insert something into the code to signify that a new record is being added? Here is the updated code with formatting as you sensibly suggested.

                          Code:
                          FUNCTION CanInsertRecord as v (DataSubmitted as P, Args as p, PageVariables as p, Result as p)
                          	WITH PageVariables
                          		dim t as P
                          		dim qdx as P
                          		t = table.open("persons")
                          		query.filter = "Surname = '" + alltrim Args.DataSubmitted.Surname) + "' .and. FirstName = '" + alltrim(Args.DataSubmitted.FirstName) + "'"
                          		query.order = ""
                          		qdx = t.query_create()
                          		IF qdx.records_get() > 0
                          			CurrentForm.Has_Error = .t.
                          			CurrentForm.Error_Message = "You've already registered."
                          		END IF
                          		t.close()
                          	END WITH
                          END FUNCTION

                          Comment


                            #14
                            Re: Check for duplicate record?

                            To test your query value, add this line below where it is set:

                            save_to_file(query.filter,"c:\test.txt")

                            and then go look at test.txt

                            If you want a simple but unattractive way out, use table Field Rules and make the field required to be unique. It will send a not-so-elegent message to the user that they cannot save the record if it is a dup.
                            Steve Wood
                            See my profile on IADN

                            Comment


                              #15
                              Re: Check for duplicate record?

                              Hi Steve

                              It definitely works. I entered the actor Hugh Laurie into the grid and the .txt file result was

                              Surname = 'Laurie' .and. FirstName = 'Hugh'

                              Why would the qdx.records_get() > 0 not activate the error message and not allow the record to be added? Does CurrentForm refer to webgrids, or just desktop forms?

                              Many thanks for replying. Must be late in your part of the world

                              Cheers

                              Jason

                              Comment

                              Working...
                              X