2011-11-24 5 views
1

델파이 7, Devart의 dbExpress 드라이버 4.70을 사용하고 있습니다.델파이 7 마스터 세부 관계 쿼리 결과 ORA-01036

나는 두 TSQLTables (그들 AB 전화), 두 TDataSetProviders (dspAdspB), 두 TClientDataSets (cdsAcdsB), 두 TDataSources (dsAdsB)와 두 개의 DBGrids (gridAgridB)를 놓습니다. 모든 것이 잘되어 있습니다. cdsA.Active을 true로 설정하면 gridA의 데이터를 볼 수 있습니다. cdsB 당 동일합니다.

는 지금은 관계

A JOIN B ON a = b. 

필드 a이의 필드 bb 너무 B의 기본 키 진정한 A 'B에 의해 참조의 foreing 키'입니다 구현하려는. 내가 cdsB.Open를 할 때, 나는이 오류가있어

cdsB.MasterSource := dsA; 
cdsB.MasterFields := a; 
cdsB.IndexFieldNames := b; 

:

ORA-01036: illegal variable name/number".

필드 a 값은 테이블 A에 항상 null있다가 (이 I은 다음 (I 그래픽 도구를 사용)와 같은 물건을 설정 데이터 없음). 이 Execute: select * from A

...

Execute: select * from ENTI where (b is NULL)

:1 (Number,IN) = <NULL>

내가 그리워 했는가

, 어떻게이 고정 될 수 TSQLMonitor는 다음과 같은 쿼리를보고?

+4

실행중인 전체 SQL 문을 포함하도록 질문을 편집하십시오. –

+0

B를 열기 전에 cdsA가 열려 있습니까? –

+0

디자이너를 사용하기 때문에 Object Inspector에서 MasterFields 속성을 두 번 클릭하면 [ 'Field Link Designer] (http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/)가 시작됩니다. html/devcommon/fieldlinkdesigner_xml.html). 참조 : [테이블을 다른 데이터 세트의 세부 정보로 만들기] (http : //docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devwin32/5datasetmakingthetableadetailofanotherdataset_xml.html) –

답변

0

Datasnap을 사용하는 경우 클라이언트 데이터가 아니라 소스 데이터 세트에서 M/D 관계를 설정해야합니다. 마스터 클라이언트 데이터 세트에 "데이터 세트 필드"를 생성합니다. 그런 다음이 필드를 하위 클라이언트 데이터 집합에 할당합니다. 이 접근법은 또한 더 중요합니다.

어쨌든 잘 작동해야합니다. SQL에 문제가있는 것 같습니다.