2011-05-05 7 views
0

2 개의 데이터 테이블, TableX 및 TableY가있는 형식화 된 데이터 세트가 있습니다. 디자이너에서 생성됩니다. TableAdapters가 없습니다..net dataadapter update가 잘못된 테이블에서 실행됩니다.

TableX를 채울 때 SQL을 실행하고 다른 테이블 인 TableZ에서 데이터를 가져옵니다. 테이블이 레코드로 채워지고 TableX.tableName이 "TableX"입니다.

하지만 datadapter 및 commandbuilder를 사용하여 TableX에 대한 updatecommand를 생성하면 TableZ를 대신 업데이트하려고 시도합니다. 이걸 어떻게 바꿀 수 있니?

Oracle.DataAccess.Client.OracleDataAdapter da = new OracleDataAdapter("select * from " + table.TableName, this.Connection); 
Oracle.DataAccess.Client.OracleCommandBuilder cb = new OracleCommandBuilder(da); 
return cb.DataAdapter.Update(table); 

업데이트는 "update TableZ ..."로 시작하는 SQL 문을 생성합니다. "TableX 업데이트 ..."여야합니다.

나는 이것이 DataTable을 실행하는 다른 테이블에서 데이터를 취득하는 SQL 문을 채우는 방법 "을 선택합니다 ....... TableZ에서"때문에, 그리고 데이터 테이블 스키마에 읽기 추측 :

<?xml version="1.0" standalone="true"?> 
<dsConsignmentReport xmlns="http://tempuri.org/dsConsignmentReport.xsd"> 
    <xs:schema xmlns="http://tempuri.org/dsConsignmentReport.xsd" elementFormDefault="qualified" ...."> 
     <xs:element msdata:EnforceConstraints="False" msdata:Locale="nb-NO" ...> 
     <xs:complexType> 
     <xs:choice maxOccurs="unbounded" minOccurs="0"> -<xs:element name="TABLEX" msprop:BaseTable.0="TABLEZ"> 

"baseTable"값은 "TableZ"입니다. 이 문제를 해결하려면 어떻게해야합니까? 테이블을 채우기 위해 SQL 문을 변경할 수 없습니다. 올바른 테이블에 대해 DataAdapter를 실행하기 위해 할 수있는 일이 있습니까? (표 X)

답변

0

해결책을 찾았습니다. 내가 바로 생성 그런 다음 CUD 명령을

return cb.DataAdapter.Update(table); 

를 호출하기 전에 데이터 어댑터에서 CUD 명령을 만들었습니다.