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

    #16
    Re: tbl.rules_get() problem

    Here is a code for a script to provide the user the ability to 1) find out the field data type of a field in the database and then 2) have the ability to change it. The second part is not in this script, just the first. I was going to give this to the code archives once complete.

    The system throws an error when there is not a field rule data type set. The code Stan presented (red, line 80) to circumvent this does not work. Is there a way to error trap this within the code for the xdialog?

    Thanks

    Code:
    ' get list of the current tables
    dim vTM as C=""
    vTM = a5.table_enum()
    dim vFM as C=""
    
    'Create list of field rules
    DIM vL1 as C
    
    vL1= <<%a%
    user_entered
    calculated
    auto_increment
    %a%
    
    '======== generate the xDialogs ===================
    dim start_type as C
    dim end_type as C
    dim tablename as C
    dim fieldname as C = "Field Name"
    dim shared vdy as C
    
    RETRY:
    DIM vW as C
    	vW = word_subtract(vL1,"USER_ENTERED",crlf()) 
    	Gchoices = vL1
    	vStart = word( Gchoices, 1, crlf() ) 
    	endchoices = vW
    	
    	dlg_text = <<%dlg%
    	{position=1.5,2.5}
    	{background=#155,175,165}
    	{xmargin=2,2}
    	{font=Arial,9,b}
    	{frame=1,1: Table and Field}
    	{font=Arial,9,n}
    	{region}
    	[.25tablename^+vTM!tc_*] {sp}  | [.25fieldname^+vFM!fc_*]
    	{endregion};
    	{lf};
    	{region}
        Current Data Type: | [.25vDY]
    	{endregion};
    	{lf};	
    	{region}
    	{font=Arial,9,b}
    	{frame=1,0:Current Field Type}
    	{font=Arial,9,n}
    	[.30,4start_type^#Gchoices!newd_*];
    	{endregion}
    	{region}{comment this region is just to space things out a bit}
    	{comment this adds even more space - maybe too much}
    	{endregion}
    	{region}
    	{font=Arial,9,b}{frame=1,1:Change To Field Type }{font=Arial,9,n}
    	[.30,4end_type^#endchoices];
    	{endregion}
    	{condition=.t.}
    	{lf};
    	{line=1,0}
    	{lf};
    	<10OK> <10Cancel>
    	%dlg%
    	
    	dim vresults as C 
    	vresult=ui_dlg_box("Item Choices", dlg_text, <<%code%
    
    	' this is for a trapping a change in the tablefield box
    	IF left( a_dlg_button, 3 ) = "tc_"
    	 IF a_dlg_button = "tc_change"
    	 	vFM = sortsubstr(w_upper(lower(table.external_field_name_get(tablename,"N"))),crlf(),"a")
    	 END IF
     		 a_dlg_button = ""
     
     	' this is for a trapping a change in the fieldname box to get the current data type
     	ELSE IF left(a_dlg_button, 3) = "fc_"
     	  IF a_dlg_button = "fc_change"
    		tbl = table.open(tablename)
    		fr = tbl.rules_get()
    
    			[COLOR="Red"]if prop_valid(eval("fr."+fieldname),"data_type")
     				vdy = eval("fr."+fieldname+".data_type")
    			else
    			 	vdy = "No field rules indicating data type."
    			end if[/COLOR]
    	
    		vdy = eval("fr."+fieldname+".data_type")
    		msgbox(vdy)
    		tbl.close()
      	  END IF
     		 a_dlg_button = ""
     
    	' this is for a trapping a change in the current datatype   	 
    	ELSE IF left( a_dlg_button, 5 ) = "newd_"
    	 IF a_dlg_button = "newd_change"
    		endchoices = word_subtract(vL1,start_type,crlf()) 
    	 END IF
    	 a_dlg_button = ""
    	END IF
    	%code%)
    	
    if end_type = "" then
    	p_msg_box("ALERT","The end type was not chosen correctly.  Try again? .","<Yes><Cancel>","")
    	select
    	    case vReply = "Yes"
    	    	GOTO RETRY
    	    case vReply = "Cancel"
    	    	vProceed = "no"
    	    	end 
    	end select
    	
    else if start_type = "" then
    	p_msg_box("ALERT","The start type was not chosen correctly.  Try again? .","<Yes><Cancel>","")
    	select
    	    case vReply = "Yes"
    	    	GOTO RETRY
    	    case vReply = "Cancel"
    	    	vProceed = "no"
    	    	end 
    	end select
    
    end if
    start_type = chrtran(start_type,"_"," ")
    end_type = chrtran(end_type,"_"," ")
    Mike W
    __________________________
    "I rebel in at least small things to express to the world that I have not completely surrendered"

    Comment


      #17
      Re: tbl.rules_get() problem

      Mike, I need an "FYI". I'm curious why you want to change the field rules on the fly? I've never seen any reason to do this. Are you actually changing them back and forth as part of the application or is this just for the purpose of an application update?

      Comment


        #18
        Re: tbl.rules_get() problem

        MIke,

        Do you have the second assignment (blue) in your actual code? It shouldn.t be there.)

        Code:
        IF a_dlg_button = "fc_change"
        		tbl = table.open(tablename)
        		fr = tbl.rules_get()
        
        			if prop_valid(eval("fr."+fieldname),"data_type")
         				vdy = eval("fr."+fieldname+".data_type")
        			else
        			 	vdy = "No field rules indicating data type."
        			end if
        	
        		[COLOR="Blue"]vdy = eval("fr."+fieldname+".data_type")[/COLOR]
        		msgbox(vdy)
        		tbl.close()
          	  END IF
        There can be only one.

        Comment


          #19
          Re: tbl.rules_get() problem

          Originally posted by CALocklin View Post
          Mike, I need an "FYI". I'm curious why you want to change the field rules on the fly? I've never seen any reason to do this. Are you actually changing them back and forth as part of the application or is this just for the purpose of an application update?
          Hi Cal,
          I have a field - loginid - which is calculated by a function getting first 6 letters of last name first name initial and middle name initial, with all the needs when last name is very small. Users get married and divorced and insist on having their login changed. Other instances apply too, and I am interested in expanding this to all field rules. I want this as an administrative tool.
          Mike W
          __________________________
          "I rebel in at least small things to express to the world that I have not completely surrendered"

          Comment


            #20
            Re: tbl.rules_get() problem

            Originally posted by Stan Mathews View Post
            MIke,

            Do you have the second assignment (blue) in your actual code? It shouldn.t be there.)
            Thank you Stan. That did it! I spent hours......blinded at the lines of code, sometimes I am. Thank you.
            Mike W
            __________________________
            "I rebel in at least small things to express to the world that I have not completely surrendered"

            Comment


              #21
              Re: tbl.rules_get() problem

              Hi Mike,
              I just tried out your script (sans the line just mentioned) and it works, but received an error when I pressed cancel....

              Another possibility you might want to consider for users is to have the current field rule already highlighted or even to limit the choices to the other choices--dunno how much work this is and am just thinking out loud really.

              Nicely done however and you are obviously very close to finishing this...will be looking for your code archive posting! :)
              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

              Working...
              X