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

Restricting records in the Tables in a Set

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

    Restricting records in the Tables in a Set

    Not sure if this is possible.
    I have a Set displayed on a Form with;
    Parent
    ..Child ( a Browse)
    ....Grandchild (a Browse)

    I want to place a restriction on the number of records allowed in each Table - shown in the two Browse objects.
    Parent = 2
    ..Child = 5
    ....Grandchild = 10

    At the Parent level, I get the UI Message to fire and take the user back to the menu if a 3rd record is entered.
    At the Child and Grandchild level, if the record number is exceeded, the UI Message doesn't fire, but the user is taken back to the menu if the number of records is exceeded.

    Question. How to fire the UI message on a Child/Grandchild record number exceeded? The following is in the Field Rules for each table.

    recs = this.records_get() [It might need to refer to the separate tables?]
    if recs >= 2
    ui_msg_box("You have reached the record limit","You cannot add any more records.")
    cancel()
    end if
    See our Hybrid Option here;
    https://hybridapps.example-software.com/


    Apologies to anyone I haven't managed to upset yet.
    You are held in a queue and I will get to you soon.

    #2
    Re: Restricting records in the Tables in a Set

    At the form level, use dbcount() or tablecount() or anything similar to trigger the message.
    example:
    Code:
    if browse_name.mode_get()=2
    if dbcount(........)=2
    ..msg()
    end if
    end if
    Last edited by G Gabriel; 05-13-2014, 09:21 AM.

    Comment


      #3
      Re: Restricting records in the Tables in a Set

      I'm not sure if you need to use a pointer. The following is from the runtime documentation. Seems that as your code is working for the parent, then it should work for the child/grandchild.

      You may want to create demo versions of your application .........To do this, you would attach a script to each table�s CanSaveRecord event, which is defined in Field Rules. The following script shows how to restrict the user to just 50 records in a table:

      T=table.current()
      Records = t.records_get()
      If Records > 50 then
      Cancel()
      End If
      Alpha 5 Version 11
      AA Build 2999, Build 4269, Current Build
      DBF's and MySql
      Desktop, Web on the Desktop and WEB

      Ron Anusiewicz

      Comment


        #4
        Re: Restricting records in the Tables in a Set

        @ Ron.
        That won't work in a Set. Fine for individual Tables, but not in a Set.
        @ Gabe.
        This allows the users to add data directly into the Table if they can get at it. Yes, I know I can do all the CP hide and such, but I would like to be absolutely sure.

        I was hoping to use the Field Rules, so I will investigate more.

        Edit:
        This works in a Set.

        recs1 = TABLECOUNT("NAME.DBF", ".T.")
        recs2 = TABLECOUNT("NAME2.DBF",".T.")
        if recs1 >= 5
        ui_msg_box("You have reached the record limit for Name","You cannot add any more records.")
        cancel()
        elseif recs2 >= 5
        ui_msg_box("You have reached the record limit for Name 2","You cannot add any more records.")
        cancel()
        end if
        Last edited by Ted Giles; 05-13-2014, 11:59 AM.
        See our Hybrid Option here;
        https://hybridapps.example-software.com/


        Apologies to anyone I haven't managed to upset yet.
        You are held in a queue and I will get to you soon.

        Comment


          #5
          Re: Restricting records in the Tables in a Set

          Ted,

          The onArrive event for each browse could be used to compute and display the current "record count".
          The onSave event for each browse could be used to compute and display the current "record count".
          The CanSave event for each browse could be used to compute the count, and "cancel" with a message if too many.

          An alternative would use the CanEnterRecord event in field rules to compute the count and cancel with message.

          Comment


            #6
            Re: Restricting records in the Tables in a Set

            Thanks Tom, it was the Set management I was struggling with.
            The answer (above) allows different numbers of records within the Set, so I could have 10 Parents, 20, Children, and make it stop at 50 Grandchildren now.
            Only needs to be in one place - well until I do more testing that is! LOL!
            See our Hybrid Option here;
            https://hybridapps.example-software.com/


            Apologies to anyone I haven't managed to upset yet.
            You are held in a queue and I will get to you soon.

            Comment


              #7
              Re: Restricting records in the Tables in a Set

              Ted,

              In many cases one would need to consider the difference in a limit on the number of "linked" records and a limit on the number of all records, whether linked or not...

              -- tom

              Comment


                #8
                Re: Restricting records in the Tables in a Set

                True. I put the code in each table.
                I really want someone to be restricted to 2 Parents, up to 5 Children, and 10 Grandchildren for a DEMO.
                If they have 1 Parent and 1 child but 11 Grandchildren, they will have busted it.
                See our Hybrid Option here;
                https://hybridapps.example-software.com/


                Apologies to anyone I haven't managed to upset yet.
                You are held in a queue and I will get to you soon.

                Comment


                  #9
                  Re: Restricting records in the Tables in a Set

                  If you want to use the Field Rules, in the Record Events, in the OnEnterRecord, do something like this:
                  Code:
                  dim shared x as C
                  x=child_table_name->linking_field
                  lst=table.external_record_content_get(..... , "linking_field=var->x")
                  cnt=*count(lst)
                  if cnt>2
                  ...msg()
                  cancel()
                  end if
                  Incidentally, how do users get access to the table? Are you not able to hide the control panel and encode the tables..etc?

                  Comment


                    #10
                    Re: Restricting records in the Tables in a Set

                    I am dealing with AS professionals!
                    Thanks G, I'll be trying that later. Really appreciate the code.
                    My next door neighbour had Spitfire Mk9 and is buzzing the house!
                    See our Hybrid Option here;
                    https://hybridapps.example-software.com/


                    Apologies to anyone I haven't managed to upset yet.
                    You are held in a queue and I will get to you soon.

                    Comment

                    Working...
                    X