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

tbl.rules_get() problem

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

    tbl.rules_get() problem

    I don't quite know why this isn't working. What am I doing wrong?

    Also, is there a way to use this so a variable holding the field name would work. Maybe like: eval("fr."+fieldvariable+".data_type), or would it be evaluate_template()? Or neither... it won't work. I am trying to get returned what the data_type for a field is for a larger function.

    Thanks.

    Code:
    dim tablename as C = "cash"
    ' show the field exists
    ? table.external_field_name_get(tablename,"N")
    = CASH_COMPANY
    CASH_ACCOUNT
    CASH_BALANCE
    SUM_LINK
    dim tbl as P
    dim fr as P
    
    tbl = table.open(tablename)
    fr = tbl.rules_get()
    tbl.close()
    
    ? tablename
    = "cash"
    
    ? fr.cash_account.data_type
    ERROR: Property not found
    fr.cash_account subelement not found.
    Mike W
    __________________________
    "I rebel in at least small things to express to the world that I have not completely surrendered"

    #2
    Re: tbl.rules_get() problem

    MIke,
    I believe you have to establish a pointer to the field whose properties you seek first.
    fld = tb1.field_get("field_name")
    fr = fld.rules_get()
    ?fr.data_type
    John

    Comment


      #3
      Re: tbl.rules_get() problem

      You need to leave the table open while working with the fr pointer since it is a pointer to the rules using the pointer to the open table.
      Code:
      dim fld as c = "accttype"
      
      t=table.open("cust")
      
      fr = t.rules_get()
      
      ?eval("fr."+fld+".data_type")
      = "User"
      
      t.close()
      
      ?eval("fr."+fld+".data_type")
      ERROR: Property not found
      fr.accttype subelement not found.
      As John mentioned you can also get a pointer to the field but then the fr pointer is restricted to the rules of that field.

      And as a rough guide use eval to get a value and evaluate template to perform an action.
      Tim Kiebert
      Eagle Creek Citrus
      A complex system that does not work is invariably found to have evolved from a simpler system that worked just fine.

      Comment


        #4
        Re: tbl.rules_get() problem

        Hi John,
        I was working off the code from Stan Matthews in this thread.
        http://msgboard.alphasoftware.com/al...ules_get%28%29

        No go with your additions. Frustrating!
        Mike W
        __________________________
        "I rebel in at least small things to express to the world that I have not completely surrendered"

        Comment


          #5
          Re: tbl.rules_get() problem

          Thanks Tim,
          but it is not happening!

          Code:
          dim tablename as C = "company"
          ' show the field exists
          ? table.external_field_name_get(tablename,"N")
          = CO_ID_NO
          COMPANY
          CO_TYPE
          CO_PHONE
          CO_PHONE2
          
          dim fr as P
          dim fld as c = "co_id_no"
          t=table.open("company")
          fr = t.rules_get()
          ?eval("fr."+fld+".data_type")
          ERROR: Property not found
          fr.co_id_no subelement not found.
          
          t.close()
          
          ?eval("fr."+fld+".data_type")
          ERROR: Property not found
          fr.co_id_no subelement not found.
          Mike W
          __________________________
          "I rebel in at least small things to express to the world that I have not completely surrendered"

          Comment


            #6
            Re: tbl.rules_get() problem

            Ahh, now I remember. is it possible that there have no field rules been set for this table?

            Just entering a default description in any field will set up the rules. I think on a new table there are no rules setup in the dictionary.
            Tim Kiebert
            Eagle Creek Citrus
            A complex system that does not work is invariably found to have evolved from a simpler system that worked just fine.

            Comment


              #7
              Re: tbl.rules_get() problem

              Code:
              dim tablename as C = "company"
              ' show the field exists
              ? table.external_field_name_get(tablename,"N")
              = CO_ID_NO
              COMPANY
              CO_TYPE
              CO_PHONE
              CO_PHONE2
              
              dim fr as P
              dim fld as c = "co_id_no"
              t=table.open("company")
              fr = t.rules_get()
              ?eval("fr."+fld+".data_type")
              Try something like

              Code:
              dim tablename as C = "company"
              ' show the field exists
              ? table.external_field_name_get(tablename,"N")
              = CO_ID_NO
              COMPANY
              CO_TYPE
              CO_PHONE
              CO_PHONE2
              
              dim fr as P
              dim fld as c = "co_id_no"
              t=table.open("company")
              fr = t.rules_get()
              [COLOR="Red"]if prop_valid(eval("fr."+fld),"data_type)
              ?eval("fr."+fld+".data_type")
              else
              ? "No field rules indicating data type."
              end if[/COLOR]
              There can be only one.

              Comment


                #8
                Re: tbl.rules_get() problem

                Thanks Stan.
                Will definitely need to remeber that one.
                Tim Kiebert
                Eagle Creek Citrus
                A complex system that does not work is invariably found to have evolved from a simpler system that worked just fine.

                Comment


                  #9
                  Re: tbl.rules_get() problem

                  OK,
                  I don't want to be disrespectful and I don't want to be unappreciative, but is anyone actually trying this with an actual A5v9 database.... because....
                  IT AINT WORKING!!!!!!!!!!!!


                  Attached is an example. The Fr_id is set to auto increment.

                  Code:
                  dim tablename as C = "rules"
                  ' show the field exists
                  ? table.external_field_name_get(tablename,"N")
                  = FR_ID
                  FR
                  
                  dim fr as P
                  dim fld as c = "fr_id"
                  t=table.open("rules")
                  fr = t.rules_get()
                  ? eval("fr."+fld+".data_type")
                  ERROR: Property not found
                  fr.fr_id subelement not found.
                  
                  t.close()
                  Mike W
                  __________________________
                  "I rebel in at least small things to express to the world that I have not completely surrendered"

                  Comment


                    #10
                    Re: tbl.rules_get() problem

                    Some sounds frustrated. Careful Mike you will have a coronary. Time to open a bottle of wine. ;)

                    Ps yes have been testing in v9 interactive window
                    Tim Kiebert
                    Eagle Creek Citrus
                    A complex system that does not work is invariably found to have evolved from a simpler system that worked just fine.

                    Comment


                      #11
                      Re: tbl.rules_get() problem

                      and it is working for you Tim?

                      PS: I just discovered this larger font thing.... I had to try it. :)
                      Mike W
                      __________________________
                      "I rebel in at least small things to express to the world that I have not completely surrendered"

                      Comment


                        #12
                        Re: tbl.rules_get() problem

                        and it is working for you Tim?
                        The wine or the script?


                        If I select a block of code in the interactive window and run it fails for me as well. but if I hit enter on each line individually it works.(this what I was doing) Try this in an actual new script. no need to save it just paste it in and hit the run button.
                        Code:
                        dim tablename as C = "rules"
                        ' show the field exists
                        msgbox(table.external_field_name_get(tablename,"N"))
                        
                        dim fr as P
                        dim fld as c = "fr_id"
                        t=table.open("rules")
                        
                        fr = t.rules_get()
                        msgbox(eval("fr."+fld+".data_type"))
                        Tim Kiebert
                        Eagle Creek Citrus
                        A complex system that does not work is invariably found to have evolved from a simpler system that worked just fine.

                        Comment


                          #13
                          Re: tbl.rules_get() problem

                          TIM,

                          OK. I've started the wine flowing. Yes it is 12:15 AM but better late than never. I've chosen a fine Snoqualmie, Columbia Valley, Oregon, Syrah.

                          But what the heck is going on with the IW?? It produces results to a message box differently than the IW! What is with that??? I have NEVER had this happen to me before. I have trusted the IW explicitely!! I am crushed!!

                          Gulp...gulp... better now. Thanks, I can now continue creating my UDF that allows me to change the field rules on the fly. I'll probably post to code archives when complete.
                          Mike W
                          __________________________
                          "I rebel in at least small things to express to the world that I have not completely surrendered"

                          Comment


                            #14
                            Re: tbl.rules_get() problem

                            Here is an example of a script written against a file called customers. Th field cust_id has an auto increment field rule.Like Tim said, make sure that there is at least one field rule for your table.The script absolutely works in version 9 and shows autoinc in the ui_msg_box provided.

                            Comment


                              #15
                              Re: tbl.rules_get() problem

                              I forgot to include the working script.

                              dim fld as p
                              tb1 = table.open("customers")
                              fld = tb1.field_get("cust_id")
                              rules = fld.rules_get()
                              ftype = rules.data_type
                              ui_msg_box("show field type",ftype)
                              tb1.close()
                              end

                              Comment

                              Working...
                              X