No Results
Search Tips:
- Please consider misspellings
- Try different search keywords
Newer Version Available
Address Compound Fields
Standard addresses—addresses built into standard
objects in Salesforce—are
accessible in the SOAP and REST APIs
as an Address, a structured compound data type,
as well as individual address elements.
Using API 30.0 and later, standard addresses are available in the SOAP
and REST APIs as a compound field of type Address,
a structured data type that combines the following fields.
- City
- Country
- CountryCode
- Latitude (beta)
- Longitude (beta)
- PostalCode
- State
- StateCode
- Street
Address fields are provided on many standard objects, such as Account, Contact, Quote, and User. Some objects provide fields for multiple addresses. For example, Account provides for four different addresses. In this case, address field names are prefixed with the type of address, for example, BillingCity, BillingState, and so on.
Retrieving Compound Address Fields
Using
compound fields can simplify code that works with addresses, especially
for SOQL queries. SOQL SELECT clauses can reference
addresses directly, instead of all of the individual component fields.
1SELECT Name, BillingAddress
2FROM AccountTo write code that’s compatible
with API versions before 30.0, as well as API 30.0
and above, use the individual fields:
1SELECT Name, BillingStreet, BillingCity, BillingState, BillingPostalCode,
2 BillingCountry, BillingLatitude, BillingLongitude
3FROM AccountCompound address field values are returned as a structured data type, Address. Code that works with compound address fields needs to reference the individual components of the returned value. See the code sample below.
Retrieve a Standard Address Compound Field with the SOAP API
The following Java method uses the Salesforce SOAP API to retrieve and display the Mailing Address for a list of contacts.
1// Modified version of code in the SOAP API QuickStart
2private void querySample() {
3 String soqlQuery = "SELECT FirstName, LastName, MailingAddress FROM Contact";
4 try {
5 QueryResult qr = connection.query(soqlQuery);
6 boolean done = false;
7
8 if (qr.getSize() > 0) {
9 System.out.println("\nLogged-in user can see "
10 + qr.getRecords().length + " contact records.");
11
12 while (!done) {
13 System.out.println("");
14 SObject[] records = qr.getRecords();
15 for (int i = 0; i < records.length; ++i) {
16 Contact con = (Contact) records[i];
17 String fName = con.getFirstName();
18 String lName = con.getLastName();
19
20 // Access the compound address field MailingAddress
21 Address addr = (Address) con.getMailingAddress();
22 String streetAddr = "";
23 if (null != addr) streetAddr = addr.getStreet();
24
25 if (fName == null) {
26 System.out.println("Contact " + (i + 1) + ": " + lName +
27 " -- " + streetAddr);
28 } else {
29 System.out.println("Contact " + (i + 1) + ": " + fName +
30 " " + lName +
31 " -- " + streetAddr);
32 }
33 }
34
35 if (qr.isDone()) {
36 done = true;
37 } else {
38 qr = connection.queryMore(qr.getQueryLocator());
39 }
40 }
41 } else {
42 System.out.println("No records found.");
43 }
44 } catch (ConnectionException ce) {
45 ce.printStackTrace();
46 }
47}Using Compound Address Fields as Locations
Compound address fields include a geolocation field, and can be
used as locations in SOQL WHERE and ORDER BY clauses. For example, here’s a SOQL query to retrieve the ten accounts closest to San Francisco.
1SELECT Id, Name, BillingAddress
2FROM Account
3WHERE DISTANCE(BillingAddress, GEOLOCATION(37.775,-122.418), 'mi') < 20
4ORDER BY DISTANCE(BillingAddress, GEOLOCATION(37.775,-122.418), 'mi')
5LIMIT 10