7

एएक्स में कई इकाइयां हैं। जब मैं पोस्ट नहीं किए गए timesheets पोस्ट करने के लिए यह एक है जहाँ मैं एसक्यूएल त्रुटि मिल रही है के अलावा सभी संस्थाओं के लिए ठीक काम करता है की कोशिश: "रूपांतरण विफल जब चरित्र स्ट्रिंग से तिथि और/या समय परिवर्तित"डायनेमिक्स एक्स 2012: रूपांतरण स्ट्रिंग से तारीख और/या समय को परिवर्तित करते समय

कॉल स्टैक नीचे है:

enter image description here

हाइलाइट किए गए विधि में मुझे लगता है कि यह AccountDistribution तालिका में किसी भी SourceDocumentHeader नहीं मिल रहा है, तो AccountingDate खाली है।

क्या किसी को भी एक ही समस्या का सामना करना पड़ा है और यह जानता है कि इसे कैसे हल किया जाए? यह मेरे लिए अजीब बात है क्योंकि अन्य सभी संस्थाएं ठीक काम करती हैं।

धन्यवाद।

उत्तर

6

जो आप देख रहे हैं उसका तकनीकी स्पष्टीकरण यह है कि कोड का यह हिस्सा अमान्य एसक्यूएल उत्पन्न करता है, लेकिन ऐसा लगता है कि आपको अपने सेटअप में कोई समस्या है।

यदि आप खाली तिथि पर date2str चलाते हैं तो यह एक खाली स्ट्रिंग देता है। कृपया इसे नौकरी में आज़माएं और आप इंफोलॉग में एक खाली स्ट्रिंग देखेंगे।

static void TestEmptyDate(Args _args) 
{ 
    AccountingDate _date; 
    ; 
    info(date2str(_date, 321, 2, 3, 2, 3, 4, DateFlags::None)); 
} 

तो विधि updateDistributionsForEvent में श्रेणीबद्ध किया जाता है कि एक SQL विवरण उत्पन्न करने के लिए:

sqlStatementText = strFmt('UPDATE T1 SET ACCOUNTINGEVENT=%1,RECVERSION=%2 FROM ACCOUNTINGDISTRIBUTION T1 WITH (INDEX(I_7452SOURCEDOCUMENTHEADERIDX)) CROSS JOIN SOURCEDOCUMENTLINE T2 ', _accountingEventRecId, xGlobal::randomPositiveInt32()); 

sqlStatementText += strFmt('WHERE (((T1.PARTITION=%1) AND (T1.ACCOUNTINGEVENT=0) AND (T1.ACCOUNTINGDATE={ d\'%2\'})) AND (T1.SOURCEDOCUMENTHEADER=%3)) AND ', getcurrentpartitionrecid(), sqlDate, _sourceDocumentRecId); 
sqlStatementText += strFmt('((T2.RECID=T1.SOURCEDOCUMENTLINE) AND (T2.ACCOUNTINGSTATUS=%1 OR T2.ACCOUNTINGSTATUS=%2)) AND (T2.PARTITION=%3)', enum2int(SourceDocumentLineAccountingStatus::Completed), enum2int(SourceDocumentLineAccountingStatus::Canceled), getcurrentpartitionrecid()); 

कहाँ T1.ACCOUNTINGDATE={ d\'%2\'} प्रासंगिक हिस्सा जो एसक्यूएल स्ट्रिंग में T1.ACCOUNTINGDATE={ d''} उत्पन्न करता है।

आप एसक्यूएल में

select {d''} 

चल रहा प्रयास करें यदि आप मिल जाएगा

Msg 241, Level 16, State 3, Line 1 Conversion failed when converting date and/or time from character string.

क्योंकि कोई रिक्त स्ट्रिंग एक तारीख को पार्स नहीं किया जा सकता है।

संबंधित मुद्दे