web
You’re offline. This is a read only version of the page.
close
Skip to main content

Notifications

Announcements

No record found.

Community site session details

Community site session details

Session Id :
Microsoft Dynamics AX (Archived)

The multi-part identifier "D.DATAAREAID" could not be bound

(0) ShareShare
ReportReport
Posted on by

I am getting an SQL error when I try to run my x++ class in Microsoft Dynamics AX. I've researched the issue around this site and google with no luck.

Here is the problematic query:

select custTable
order by custTable.AccountNum
join dirpartytable
join personDetails
outer join address
where custTable.PartyId == dirpartytable.PartyId && //custTable.TableId == dirpartytable.TableId &&
dirPartyTable.FirstName!='' && dirPartyTable.LastName!='' &&
custTable.PartyId == personDetails.PartyId &&
dirpartytable.RecId == address.AddrRecId && dirpartytable.TableId == address.AddrTableId &&
custTable.BBBStoreID != '' && custTable.MainContactId != '' && custTable.CRM_AccountNum == ''



And here is the error I am getting:

Error Message (04:52:10 pm) Cannot select a record in Customers (CustTable). Customer account: , .
The SQL database has issued an error.

Info Message (04:52:10 pm) SQL error description: [Microsoft][SQL Native Client][SQL Server]The multi-part identifier "D.DATAAREAID" could not be bound.




Info Message (04:52:10 pm) SQL statement: SELECT A.ACCOUNTNUM,A.NAME,A.ADDRESS,A.PHONE,A.TELEFAX,A.INVOICEACCOUNT,A.CUSTGROUP,A.LINEDISC,A.PAYMTERMID,A.CASHDISC,A.CURRENCY,A.SALESGROUP,A.BLOCKED,A.ONETIMECUSTOMER,A.ACCOUNTSTATEMENT,A.CREDITMAX,A.MANDATORYCREDITLIMIT,A.DIMENSION,A.DIMENSION2_,A.DIMENSION3_,A.VENDACCOUNT,A.TELEX,A.PRICEGROUP,A.MULTILINEDISC,A.ENDDISC,A.VATNUM,A.COUNTRYREGIONID,A.INVENTLOCATION,A.DLVTERM,A.DLVMODE,A.MARKUPGROUP,A.CLEARINGPERIOD,A.ZIPCODE,A.STATE,A.COUNTY,A.URL,A.EMAIL,A.CELLULARPHONE,A.PHONELOCAL,A.FREIGHTZONE,A.CREDITRATING,A.TAXGROUP,A.STATISTICSGROUP,A.PAYMMODE,A.COMMISSIONGROUP,A.BANKACCOUNT,A.PAYMSCHED,A.NAMEALIAS,A.CONTACTPERSONID,A.INVOICEADDRESS,A.OURACCOUNTNUM,A.SALESPOOLID,A.INCLTAX,A.CUSTITEMGROUPID,A.NUMBERSEQUENCEGROUP,A.LANGUAGEID,A.PAYMDAYID,A.LINEOFBUSINESSID,A.DESTINATIONCODEID,A.GIROTYPE,A.SUPPITEMGROUPID,A.GIROTYPEINTERESTNOTE,A.TAXLICENSENUM,A.PAYMSPEC,A.BANKCENTRALBANKPURPOSETEXT,A.BANKCENTRALBANKPURPOSECODE,A.CITY,A.STREET,A.PAGER,A.SMS,A.PACKMATERIALFEELICENSENUM,A.DLVREASON,A.GIROTYPECOLLECTIONLETTER,A.SALESCALENDARID,A.CUSTCLASSIFICATIONID,A.SHIPCARRIERACCOUNT,A.GIROTYPEPROJINVOICE,A.INVENTSITEID,A.ORDERENTRYDEADLINEGROUPID,A.SHIPCARRIERID,A.SHIPCARRIERFUELSURCHARGE,A.SHIPCARRIERBLINDSHIPMENT,A.PARTYTYPE,A.PARTYID,A.SHIPCARRIERACCOUNTCODE,A.PROJPRICEGROUP,A.GIROTYPEFREETEXTINVOICE,A.SYNCENTITYID,A.SYNCVERSION,A.SALESDISTRICTID,A.SEGMENTID,A.SUBSEGMENTID,A.RFIDITEMTAGGING,A.RFIDCASETAGGING,A.RFIDPALLETTAGGING,A.COMPANYCHAINID,A.MAINCONTACTID,A.IDENTIFICATIONNUMBER,A.PARTYCOUNTRY,A.PARTYSTATE,A.GIROTYPEACCOUNTSTATEMENT,A.COMPANYTYPE_MX,A.RFC_MX,A.CURP_MX,A.STATEINSCRIPTION_MX,A.EINVOICE,A.CREDITCARDADDRESSVERIFICATION,A.CREDITCARDCVC,A.CREDITCARDADDRESSVERIFICATI292,A.CREDITCARDADDRESSVERIFICATI293,A.USECASHDISC,A.CASHDISCBASEDAYS,A.USEPURCHREQUEST,A.ANNIVERSARY,A.CHILDRENNAMES,A.MARITALSTATUS,A.PROFESSION,A.BIRTHDATE,A.SPOUSE,A.WEBCUSTOMERID,A.FIRSTNAME,A.LASTNAME,A.MIDDLENAME,A.SPOUSEBIRTHDATE,A.GENDER,A.BBBNEWNAME,A.BBBUPDATENAME,A.BBBSTOREID,A.IGNMAINCONTACTID,A.EMAIL2,A.BBB_EMAIL2,A.CRM_ACCOUNTNUM,A.IGN_FIRSTNAME,A.MODIFIEDDATETIME,A.CREATEDDATETIME,A.RECVERSION,A.RECID,B.GENERATIONALSUFFIX,B.NAME,B.SALUTATION,B.PERSONNAMEORDER,B.LANGUAGEID,B.TYPE,B.PREFIX,B.PROFESSIONALSUFFIX,B.FIRSTNAME,B.MIDDLENAME,B.LASTNAME,B.PARTYID,B.NAMEALIAS,B.MODIFIEDDATETIME,B.MODIFIEDBY,B.CREATEDDATETIME,B.CREATEDBY,B.RECVERSION,B.RECID,C.PARTYID,C.NICKNAME,C.INITIALS,C.CHILDRENNAMES,C.BIRTHDATE,C.MARITALSTATUS,C.ANNIVERSARYDATE,C.HOBBIES,C.GENDER,C.SIPECOMMUNICATIONTYPEID,C.BBB_AGEGROUP,C.BBB_INCOMELEVEL,C.BBB_RINGSIZE,C.BBB_SPOUSERINGSIZE,C.BBB_CLIENTINFORMATION,C.BBB_SIXMONTHFOLLOWUP,C.BBB_PREFERREDCONTACT,C.BBB_SPOUSE_BIRTHDAY,C.BBB_SPOUSE_NAME,C.BBB_DATASOURCE_NAME,C.BBB_DATASOURCE_DATE,C.BBB_JEWELRY_PURCHASER,C.BBB_ZIP_FOUR,C.BBB_CONVERTED_DATE,C.BBB_CONVERTED_DESC,C.BBB_CONVERTED_PROSPECT,C.BBB_IS_VAULT_MEMBER,C.BBB_EM_UNSUBSCRIBE,C.BBB_DM_UNSUBSCRIBE,C.BBB_EM_BOUNCES,C.BBB_DM_BOUNCES,C.BBB_DO_NOT_CALL,C.MODIFIEDDATETIME,C.MODIFIEDBY,C.CREATEDDATETIME,C.CREATEDBY,C.RECVERSION,C.RECID,D.ADDRTABLEID,D.ADDRRECID,D.LINENUM,D.TYPE,D.NAME,D.ADDRESS,D.PHONE,D.TELEFAX,D.COUNTRYREGIONID,D.ZIPCODE,D.STATE,D.COUNTY,D.TELEX,D.URL,D.PHONELOCAL,D.CELLULARPHONE,D.EMAIL,D.TAXGROUP,D.CITY,D.STREET,D.PAGER,D.SMS,D.LATITUDE,D.LONGITUDE,D.SALESCALENDARID,D.TIMEZONE,D.DLVTERM,D.DLVMODE,D.SHIPCARRIERID,D.SHIPCARRIERBLINDSHIPMENT,D.SHIPCARRIERACCOUNT,D.SHIPCARRIERACCOUNTCODE,D.SHIPCARRIERRESIDENTIAL,D.BBB_ZIP4,D.RECVERSION,D.RECID,A.MEMO,B.MEMO FROM {oj CUSTTABLE A LEFT OUTER JOIN DIRPARTYTABLE B ON ((D.DATAAREAID=?) AND (((((((((A.PARTYID=B.PARTYID) AND (B.FIRSTNAME<>?)) AND (B.LASTNAME<>?)) AND (A.PARTYID=C.PARTYID)) AND (B.RECID=D.ADDRRECID)) AND (D.ADDRTABLEID=?)) AND (A.BBBSTOREID<>?)) AND (A.MAINCONTACTID<>?)) AND (A.CRM_ACCOUNTNUM=?)))},DIRPARTYTABLE B,DIRPERSONPARTYDETAIL C WHERE (A.DATAAREAID=?) AND (B.DATAAREAID=?) AND (C.DATAAREAID=?) ORDER BY A.DATAAREAID,A.ACCOUNTNUM



Any suggestions or ideas would be greatly appreciated!

*This post is locked for comments

I have the same question (0)
  • Martin Dráb Profile Picture
    237,801 Most Valuable Professional on at

    Technically the problem is that the FROM clause of the SQL statement doesn't define tables C and D at all.

    First of all, try to use a separate where clause for each table, as usual in Dynamics AX:

    select custTable
        order by custTable.AccountNum
        where custTable.BBBStoreID     != ''
           && custTable.MainContactId  != ''
           && custTable.CRM_AccountNum == ''
    
        join dirPartyTable
            where dirPartyTable.PartyId   == custTable.PartyId
               && dirPartyTable.FirstName != ''
               && dirPartyTable.LastName  != ''
    
        join personDetails
            where personDetails.PartyId == custTable.PartyId 
    
        outer join address
            where address.AddrRecId   == dirPartyTable.RecId
               && address.AddrTableId == dirPartyTable.TableId;

    Then let us know if it works and if not, please give us the new SQL query. Unfortunately I don't have any AX 2009 anymore so I can't test it.

  • Suggested answer
    Community Member Profile Picture
    on at

    SQL statement appears to be truncated at around 4K length, as there's no definition for tables C (personDetails) and D (address).

    Variable personDetails appears to be for standard table ContactPerson. It looks like there are customizations and new fields on all four tables, as BBB_* are not standard fields in Dynamics AX 2009.

    Anyway, to me this looks like an issue with inefficient select query and SQL buffer overflow. I would try the following:

    1. Limit the number of fields that query returns, by specifying the field list in the select statement to those that are actually needed. The query in the sample code is way too wide, DirPartyTable is relatively small record, but returning full CustTable + ContactPerson + Address + custom fields is possibly causing buffer overflows;
    2. Instead of that outer join on Address, I would look at dropping that from the select, and then use Address::find() in the while select loop. Or optimize the whole query and use the address framework properly;
    3. Increase the buffer size on your AX server configuration. In Dynamics AX Server Configuration Utility, increase the Maximum buffer size option and restart the AOS. Default is 24 (KB), so try e.g. with 64 and see how it goes. Note that this might help with eliminating the errors due to buffer overflows, but performance will be poor with too many fields in select.

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Responsible AI policies

As AI tools become more common, we’re introducing a Responsible AI Use…

Neeraj Kumar – Community Spotlight

We are honored to recognize Neeraj Kumar as our Community Spotlight honoree for…

Leaderboard > 🔒一 Microsoft Dynamics AX (Archived)

#1
Martin Dráb Profile Picture

Martin Dráb 4 Most Valuable Professional

#1
Priya_K Profile Picture

Priya_K 4

#3
MyDynamicsNAV Profile Picture

MyDynamicsNAV 2

Last 30 days Overall leaderboard

Featured topics

Product updates

Dynamics 365 release plans