Alpha DevCon 2018
Results 1 to 2 of 2

Thread: Address Verify and Zip Code Look up

  1. #1
    VAR
    Real Name
    Mike Reed
    Join Date
    Apr 2000
    Location
    Phoenix, AZ
    Posts
    642

    Default Address Verify and Zip Code Look up

    Here is a function for your grids (and UX components with a change or two) to automatically lookup and verify address and add the 9 digit zip code. It is a modification of a process that I found on www.learnalpha.com about an article that Jay Talbott had written. Thank you Jay!

    For grid use, add a button under the address fields called 'Address Verify'. Then set up an Ajax Callback function called PostOffice that is called when you click the button. Then add the following function to the Xbasic Functions.

    You will probably have to rename field names in this function to reflect the actual field names in your grid. This function will also get the county for the address. If you don't have that field in your table, then be sure to rem out that line in the function.
    The nice thing about this is that the user only needs to enter the street address, city and state. This function will return and fill in or correct the street address, city, state and 9 digit zip code. It means that you will get the proper street address formatted in post office format and the proper zip code. If you enter in 3222 E Kristal for example, it will return 3222 E Kristal Way and fill in the field for you. It also checks for basic errors and for multiple addresses. What I mean by multiple addresses is this. Say you put in an address of 5225 N Central, Phoenix, AZ. You will get that error message. That address is composed of several suites, so it is telling you that you need to include the suite number in the address field in order for the post office to process it. That is particularly useful when people forget to give you that piece of information or the suite or apartment number is incorrect.

    Hope you find it useful.

    Mike


    function PostOffice as c (e as p)
    'change the next 3 lines as needed to match your actual field names
    vc_address1 = alltrim(e._currentRowDataNew.addr2)
    vc_city = alltrim(e._currentRowDataNew.city)
    vc_state = alltrim(e._currentRowDataNew.state)
    vc_zip = ""
    vc_zip4 = ""
    vc_county = ""
    error = ""


    'debug(1)
    'the url = must be on one line, not 2 as shown here
    url = "https://tools.usps.com/go/ZipLookupResultsAction!input.action?resultMode=1&companyName=&address1=" +vc_address1 + "&address2=&city=" + vc_city + "&state=" + vc_state + "&urbanCode=&postalCode=&zip=" + vc_zip
    result=http_get_page2(url,.f.)


    scanner=stringscanner.create(result)


    'check for muliple unit error
    scanner.SkipToString("Several addresses matched the information you")
    scanner.SkipOverString(" ")
    error = scanner.ScantoString("you didn't")
    if error = "Several addresses matched the information you provided. Perhaps " then
    PostOffice = "alert('" + js_escape("Several addresses matched the information you provided. Perhaps you didn't enter a street number or the building has mulitple units.") + "');"
    end
    end if




    'Start over to check for next error
    scanner.reset()
    'Check for invalid address
    scanner.SkipToString("Unfortunately, this address wasn't found.")
    error = scanner.ScanToString(".")
    if error = "Unfortunately, this address wasn't found" then
    PostOffice = "alert('This address cannot be found in the Post Office database, please check the spelling and try again.');"
    end
    end if




    'Start over to check for next error
    scanner.reset()
    'Check for invalid address
    scanner.SkipToString("The address you provided is not recognized")
    error = scanner.ScanToString("by")
    if error = "The address you provided is not recognized" then
    PostOffice = "alert('This address cannot be found in the Post Office database, please check the address and try again.');"
    end
    end if




    'Start over to retrieve address info
    scanner.reset()


    scanner.SkipToString("<!-- Begin zip-lookup-result-container-single.jsp-->")


    scanner.SkipToString("address1")
    scanner.SkipOverString("&nbsp;")
    scanner.SkipToString("range"")
    scanner.SkipOverString("range">")
    vc_address1 = scanner.ScanToString("</")


    scanner.SkipToString("class="city")
    scanner.SkipOverString("&nbsp;")
    scanner.SkipToString("range"")
    scanner.SkipOverString("range">")
    vc_city = scanner.ScanToString("</" )


    scanner.SkipToString("class="state" )
    scanner.SkipOverString("&nbsp;")
    scanner.SkipToString("range"")
    scanner.SkipOverString("range">")
    vc_state = scanner.ScanToString("</" )


    scanner.SkipToString("class="zip"" )
    scanner.SkipOverString("&nbsp;")
    scanner.SkipToString("style=""")
    scanner.SkipOverString("style=""")
    scanner.SkipOverString(">")
    vc_zip = scanner.ScanToString("</" )


    scanner.SkipToString("class="zip4"" )
    scanner.SkipOverString("class="zip4"")
    scanner.SkipOverString(">")
    vc_zip4 = scanner.ScanToString("</" )


    scanner.SkipToString("County</dt>" )
    scanner.SkipToString("<dd")
    scanner.SkipOverString("<dd")
    scanner.SkipOverString(">")
    vc_county = scanner.ScanToString("</" )


    vc_zip = vc_zip + "-" + vc_zip4

    'change the next 5 lines as needed to reflect your actual field names
    e._set.addr2.value = vc_address1
    e._set.city.value = vc_city
    e._set.state.value = vc_state
    e._set.zip.value = vc_zip
    e._set.county.value = vc_county
    PostOffice = ""


    end function
    Mike Reed
    Phoenix, AZ

  2. #2
    Member compuaid's Avatar
    Real Name
    Brad Weaver
    Join Date
    Aug 2007
    Location
    Ottawa, ON
    Posts
    368

    Default Re: Address Verify and Zip Code Look up

    My updated version based on the new USPS WebService API. This only checks the zip code but adding the code to check the remainder of the address fields is quite simple. The code below is for a UX but could easily be adapted to a grid. Special thanks to David Kates for his JavaScript function that performs the same task and led me down the right path:

    Code:
    function PostOffice as c (e as p)
    	
    dim Response as c = ""
    dim ResponseTimeout as n = 30000 '30 seconds
    dim WebURI as c
    dim content as p
    dim vczip as c = ""
    dim vplus4 as c = ""
    dim USPS_Zipcode_Lookup2 as c
    
    WebURI= "http://production.shippingapis.com/ShippingAPI.dll?API=Verify&XML=<AddressValidateRequest USERID=%22YourUSPSUserID%22><Address ID=%221%22><Address1></Address1><Address2>%20"
    WebURI = WebURI+alltrim(e.dataSubmitted.mailing_address)+"</Address2><City>"+alltrim(e.dataSubmitted.city)+"</City><State>"+alltrim(e.dataSubmitted.state)+"</State><Zip5></Zip5><Zip4></Zip4></Address></AddressValidateRequest>"
    
    Response = http_post_page2(WebURI,"",.f.,ResponseTimeout)
    *property_from_xml(response,content,.t.)
    
    IF eval_valid("content.AddressValidateResponse.Address[1].Zip5[1].__A5_elementContent")
    	vczip = content.AddressValidateResponse.Address[1].Zip5[1].__A5_elementContent
    END IF
    	
    IF eval_valid("content.AddressValidateResponse.Address[1].Zip4[1].__A5_elementContent")
    	vplus4 = content.AddressValidateResponse.Address[1].Zip4[1].__A5_elementContent
    END IF
    
    USPS_Zipcode_Lookup2 = ""
    
    if vczip = ""
    	resultmsg = "Could not locate address.  No change made"
    else
    	if vplus4 = ""
    		USPS_Zipcode_Lookup2= vczip
    	else
    		USPS_Zipcode_Lookup2= vczip+"-"+vplus4
    	end if
    	resultmsg = "Address found.  Postal code has been verified."
            e._set.postal_code.value = USPS_Zipcode_Lookup2
    end if
    PostOffice = "alert('"+resultmsg+"');"
    
    END FUNCTION
    [/code]
    Brad Weaver, President
    ComputerAid International
    Ottawa ON Canada
    Versailles KY USA
    www.compuaid.com

Similar Threads

  1. Verify email address
    By CraigSchumacker in forum General Questions
    Replies: 11
    Last Post: 07-20-2016, 05:18 AM
  2. Zip Code lookup with address should return the standardized adress too
    By richatal5soft in forum Application Server Version 11 - Web/Browser Applications
    Replies: 4
    Last Post: 08-10-2012, 04:16 PM
  3. Can someone verify if this is a bug?
    By Chet Sapino in forum Alpha Five Version 10 - Desktop Applications
    Replies: 7
    Last Post: 11-21-2009, 08:15 AM
  4. E Verify
    By Mike Reed in forum Alpha Five Version 8
    Replies: 2
    Last Post: 02-29-2008, 10:21 AM
  5. Would someone please verify this bug?
    By michaelklein in forum Alpha Five Version 5
    Replies: 2
    Last Post: 09-13-2004, 01:11 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •