2012-01-18 4 views
1

QODBC 드라이버를 사용하여 QuickBooks에 사용자 정의 응용 프로그램에서 작성된 인보이스를 가져 오는 코드 작업 중입니다. 거의 작동하지만, 실제 송장 레코드를 추가하는 INSERT에 문제가 있습니다. 내 전체 코드는 http://support.flexquarters.com/esupport/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=10726&nav=0,58,64에 배치 된 모델을 기반으로합니다. 이 특별한 경우 QuickBooks 인보이스 라인을 삽입하는 중 오류가 발생했습니다.

는 InvoiceLine 테이블에 인서트 노력하고 있습니다 만, 송장에 INSERT이 오류와 함께 실패합니다

[QODBC] 오류 : 3140 - "QuickBooks에 항목에 대한 잘못된 참조"에가있다 송장 행

INSERT INTO Invoice (CustomerRefListID, ARAccountRefFullName, TxnDate, RefNumber, TermsRefFullName, TemplateRefFullName, SalesRepRefListID, ClassRefListID) 
    VALUES ('80000855-1326914216', 'Receivables', {d '2012-01-17'}, '12-1005', '30 days', 'Customized Invoice', '30000-1034349330', '8F70000-912629594') 

CustomerRefListID, SalesRepListID 및 ClassRefListID의 값은 모두 각각의 테이블에 룩업을 수행하여 결정됩니다

여기이 경우 보내고있다 INSERT 명령입니다. Terms 테이블에 '30 일 '이 기록되어 있음을 확인했습니다.

이 명령을 생성하는 코드의 이전 버전은 며칠 전에 다른 데이터로 작동했습니다. 그것은 SalesRepRefFullName과 ClassRefFullName을 사용했습니다. 아마도 내가 사용 가능한 문자열이 항상 전체 이름과 정확하게 일치하지는 않는다고 생각하면서이 사례의 실패로 인해이를 수정했습니다.

의견을 환영합니다.

Tamar

+0

이것은 더욱 흥미로워졌습니다. INSERT 명령 (InvoiceLine 및 Invoice 용)을 분리하여 한 번에 하나씩 보냈습니다. 그런 식으로하면 똑같은 인서트 시퀀스가 ​​문제없이 실행됩니다. 그러나 명령을 작성한 코드를 단계별로 실행하면 위에서 설명한대로 최종 삽입이 실패합니다. INSERT 명령은 프로그램의 로그에 기록하고 수동 테스트를 수행하기 위해 잘라내어 붙여 넣기 때문에 동일하다고 확신합니다. INSERT 사이의 다른 SQL 명령이 문제를 일으킬 수 있습니까? ListIDs를 얻으려면 SELECT 명령 만 보내면됩니다. –

답변

1

해결되었습니다. 참조 된 항목이 인보이스 자체가 아닌 광고 항목 중 하나에 있음이 밝혀졌습니다. 광고 항목 중 하나에서 RefID가 비어 있음을 알지 못했습니다.

확실히 유용한 오류 메시지는 아닙니다.

0

항목이 Quickbooks에 없습니다. 먼저 Quickbooks에서 만든 다음 인보이스에서 참조 할 수 있습니다.

+0

하지만 어떤 아이템? 그냥 (항목 "")라고 말합니다. 내가 참조하고있는 모든 ListID는 이미 존재합니다. –

관련 문제