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

UK Postcode Validation

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

    UK Postcode Validation

    Rather than try and re-invent the wheel, I am wondering if any members have, or know where in can be obtained, validating code for entering postcodes into a field.

    Thanks in advance.

    #2
    Re: UK Postcode Validation

    Yes, I'd also like to know if someone has done it. I thought about it from looking at:

    http://www.datadictionaryadmin.scot....=Content.show&
    and
    http://www.govtalk.gov.uk/gdsc/html/frames/PostCode.htm

    but is more involved than my first glance suggested. Perhaps the easiest is to buy a postcode to address generator - almost certainly works with Alpha. Costs �80 per year per machine cheapest(?).

    Shame also our UK phone numbers don't have a consistent format like US.

    Comment


      #3
      Re: UK Postcode Validation

      I have designed two functions to check whether a postcode has a valid structure. Please note - they only check the structure, i.e. whether the letters and numbers are in the right places; they don't tell you whether the postcode actually exists.

      ValidPostcode() returns .T. or .F. - it can be used in the CanWrite event in a field rule, e.g.:

      Code:
      if ValidPostcode(upper(a_field_value) = .F. then
          cancel()
      end if
      If the result is .F., a message box tells you why it is invalid.

      ValidPostcode2() returns a character result - either "OK" or the reason why it isn't OK.

      The structure of valid postcodes is specified in the Cabinet Office's UK Data Standards Catalogue at http://www.govtalk.gov.uk/gdsc/html/frames/PostCode.htm

      Please note that the website says that the structure could change in the future.

      ValidPostcode():

      Code:
      FUNCTION ValidPostcode as L (vcPostCode as C)
      
      	'Checks whether postcode structure is valid
      	'Created by Tony Rutherford 10/9/06
      	'Based on information at http://www.govtalk.gov.uk/gdsc/html/frames/PostCode.htm
      	'Copyright Tony Rutherford 2006
      
      	'Declare & initialise variables
      	DIM vcPostCode as C					'user input
      	DIM i as N							'counter
      	DIM vcChar as C						'character value
      	DIM vnAscii as N					'ascii code value
      	DIM vcFormat as C					'format of postcode
      	DIM vnSpacePos as N					'position of space in postcode
      
      	'Check for special code
      	IF vcPostCode = "GIR 0AA" THEN
      		ValidPostcode = .T.
      		EXIT FUNCTION
      	END IF
      
      	'Check for multiple spaces
      	IF at("  ", vcPostCode) <> 0 THEN
      		msgbox("Error!", "Postcode cannot contain multiple spaces", UI_STOP_SYMBOL + UI_OK)
      		ValidPostcode = .F.
      		EXIT FUNCTION
      	END IF
      
      	'Check for leading/trailing spaces
      	IF vcPostCode <> ltrim(vcPostCode) THEN
      		msgbox("Error!", "Postcode must not have leading spaces.", UI_STOP_SYMBOL + UI_OK)
      		ValidPostcode = .F.
      		EXIT FUNCTION
      	END IF
      
      	'Check number of words
      	IF w_count(vcPostCode) <> 2 THEN
      		msgbox("Error!", "Postcode must have two parts separated by a space.", UI_STOP_SYMBOL + UI_OK)
      		ValidPostcode = .F.
      		EXIT FUNCTION
      	END IF
      
      	'Check structure
      	FOR i = 1 to len(vcPostCode)
      		vcChar = substr(vcPostCode, i, 1)
      		vnAscii = asc(vcChar)
      		IF vnAscii >= 65 .and. vnAscii <= 90 THEN
      			vcFormat = vcFormat + "A"
      		ELSEIF vnAscii >= 48 .and. vnAscii <= 57 then
      			vcFormat = vcFormat + "N"
      		ELSEIF vcChar = " " then
      			vcFormat = vcFormat + " "
      		ELSE
      			msgbox("Error!", "Postcode must have two parts separated by a space. Only letters and numbers can be used.", UI_STOP_SYMBOL + UI_OK)
      			ValidPostcode = .F.
      			EXIT FUNCTION
      		END IF
      	NEXT i
      	IF .not. word_exists("AN NAA,ANN NAA,AAN NAA,AANN NAA,ANA NAA,AANA NAA", vcFormat, ",") THEN
      		msgbox("Error!", "Postcode must be in one of the following forms: AN NAA,ANN NAA,AAN NAA,AANN NAA,ANA NAA,AANA NAA, where A is a letter and N is a number.", UI_STOP_SYMBOL + UI_OK)
      		ValidPostcode = .F.
      		EXIT FUNCTION
      	END IF
      
      	'Check 1st character
      	vcChar = left(vcPostCode, 1)
      	IF vcChar $ "QVX" THEN
      		msgbox("Error!", "The first character cannot be Q, V or X.", UI_STOP_SYMBOL + UI_OK)
      		ValidPostcode = .F.
      		EXIT FUNCTION
      	END IF
      
      	'Check 2nd character
      	IF substr(vcFormat, 2, 1) = "A" THEN
      		vcChar = substr(vcPostCode, 2, 1)
      		IF vcChar $ "IJZ" THEN
      			msgbox("Error!", "The second character cannot be I, J or Z.", UI_STOP_SYMBOL + UI_OK)
      			ValidPostcode = .F.
      			EXIT FUNCTION
      		END IF
      	END IF
      
      	'Check 3rd character
      	IF substr(vcFormat, 3, 1) = "A" THEN
      		vcChar = substr(vcPostCode, 3, 1)
      		IF .not. (vcChar $ "ABCDEFGHJKSTUW") THEN
      			msgbox("Error!", "The third character must be A, B, C, D, E, F, G, H, J, K, S, T, U or W.", UI_STOP_SYMBOL + UI_OK)
      			ValidPostcode = .F.
      			EXIT FUNCTION
      		END IF
      	END IF
      
      	'Check 4th character
      	IF substr(vcFormat, 4, 1) = "A" THEN
      		vcChar = substr(vcPostCode, 4, 1)
      		IF .not. (vcChar $ "ABEHMNPRVWXY") THEN
      			msgbox("Error!", "The fourth character must be A, B, E, H, M, N, P, R, V, W, X or Y.", UI_STOP_SYMBOL + UI_OK)
      			ValidPostcode = .F.
      			EXIT FUNCTION
      		END IF
      	END IF
      
      	'Check 2nd half
      	vnSpacePos = at(" ", vcPostCode)
      	FOR i = 1 to 2
      		vcChar = substr(vcPostCode, vnSpacePos + i + 1, 1)
      		IF vcChar $ "CIKMOV" THEN
      			msgbox("Error!", "The characters in the second part of the postcode cannot be C, I, K, M, O or V.", UI_STOP_SYMBOL + UI_OK)
      			ValidPostcode = .F.
      			EXIT FUNCTION
      		END IF		
      	NEXT i
      
      	ValidPostcode = .T.
      
      END FUNCTION
      ValidPostcode2():

      Code:
      FUNCTION ValidPostcode2 as C (vcPostCode as C)
      
      	'Checks whether postcode structure is valid and returns either "OK" or error message as result
      	'Created by Tony Rutherford 10/9/06
      	'Based on information at http://www.govtalk.gov.uk/gdsc/html/frames/PostCode.htm
      	'Copyright Tony Rutherford 2006
      
      	'Declare & initialise variables
      	DIM vcPostCode as C					'user input
      	DIM i as N							'counter
      	DIM vcChar as C						'character value
      	DIM vnAscii as N					'ascii code value
      	DIM vcFormat as C					'format of postcode
      	DIM vnSpacePos as N					'position of space in postcode
      
      	'Check for special code
      	IF vcPostCode = "GIR 0AA" THEN
      		ValidPostcode2 = .T.
      		EXIT FUNCTION
      	END IF
      
      	'Check for multiple spaces
      	IF at("  ", vcPostCode) <> 0 THEN
      		ValidPostcode2 = "Postcode cannot contain multiple spaces"
      		EXIT FUNCTION
      	END IF
      
      	'Check for leading/trailing spaces
      	IF vcPostCode <> ltrim(vcPostCode) THEN
      		ValidPostcode2 ="Postcode must not have leading spaces."
      		EXIT FUNCTION
      	END IF
      
      	'Check number of words
      	IF w_count(vcPostCode) <> 2 THEN
      		ValidPostcode2 = "Postcode must have two parts separated by a space."
      		EXIT FUNCTION
      	END IF
      
      	'Check structure
      	FOR i = 1 to len(vcPostCode)
      		vcChar = substr(vcPostCode, i, 1)
      		vnAscii = asc(vcChar)
      		IF vnAscii >= 65 .and. vnAscii <= 90 THEN
      			vcFormat = vcFormat + "A"
      		ELSEIF vnAscii >= 48 .and. vnAscii <= 57 then
      			vcFormat = vcFormat + "N"
      		ELSEIF vcChar = " " then
      			vcFormat = vcFormat + " "
      		ELSE
      			ValidPostcode2 = "Postcode must have two parts separated by a space. Only letters and numbers can be used"
      			EXIT FUNCTION
      		END IF
      	NEXT i
      	IF .not. word_exists("AN NAA,ANN NAA,AAN NAA,AANN NAA,ANA NAA,AANA NAA", vcFormat, ",") THEN
      		ValidPostcode2 ="Postcode format must be: AN NAA,ANN NAA,AAN NAA,AANN NAA,ANA NAA,AANA NAA"
      		EXIT FUNCTION
      	END IF
      
      	'Check 1st character
      	vcChar = left(vcPostCode, 1)
      	IF vcChar $ "QVX" THEN
      		ValidPostcode2  = "The first character cannot be Q, V or X."
      		EXIT FUNCTION
      	END IF
      
      	'Check 2nd character
      	IF substr(vcFormat, 2, 1) = "A" THEN
      		vcChar = substr(vcPostCode, 2, 1)
      		IF vcChar $ "IJZ" THEN
      			ValidPostcode2 = "The second character cannot be I, J or Z."
      			EXIT FUNCTION
      		END IF
      	END IF
      
      	'Check 3rd character
      	IF substr(vcFormat, 3, 1) = "A" THEN
      		vcChar = substr(vcPostCode, 3, 1)
      		IF .not. (vcChar $ "ABCDEFGHJKSTUW") THEN
      			ValidPostcode2 = "The third character must be A, B, C, D, E, F, G, H, J, K, S, T, U or W."
      			EXIT FUNCTION
      		END IF
      	END IF
      
      	'Check 4th character
      	IF substr(vcFormat, 4, 1) = "A" THEN
      		vcChar = substr(vcPostCode, 4, 1)
      		IF .not. (vcChar $ "ABEHMNPRVWXY") THEN
      			ValidPostcode2 ="The fourth character must be A, B, E, H, M, N, P, R, V, W, X or Y."
      			EXIT FUNCTION
      		END IF
      	END IF
      
      	'Check 2nd half
      	vnSpacePos = at(" ", vcPostCode)
      	FOR i = 1 to 2
      		vcChar = substr(vcPostCode, vnSpacePos + i + 1, 1)
      		IF vcChar $ "CIKMOV" THEN
      			ValidPostcode2 = "The characters in the second part of the postcode cannot be C, I, K, M, O or V."
      			EXIT FUNCTION
      		END IF		
      	NEXT i
      
      	ValidPostcode2 = "OK"
      
      END FUNCTION
      I hope this helps.
      Tony

      Comment


        #4
        Re: UK Postcode Validation

        That is exactly what I needed, Tony.

        You are a star!

        Thanks
        David

        Comment


          #5
          Re: UK Postcode Validation

          Belated thanks, that is wonderful! :)

          Comment

          Working...
          X