TableXとTableYの2つのデータテーブルを持つ型付きデータセットがあります。デザイナーで作成。TableAdaptersはありません。
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);
この更新により、「updateTableZ...」で始まるSQLステートメントが生成されます。「TableXを更新...」である必要があります。
これは、データテーブルを埋めるメソッドが、別のテーブル「select ....... from TableZ」からデータを取得するSQLステートメントを実行し、データテーブルスキーマで次のように読み取るためだと思います。
<?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を適切なテーブルに対して実行するためにできることはありますか?(TableX)