0

Visual Studio Designerで、2つのDataTableを持つDataSetを作成しました。SELECTステートメントを介してSQLServerからデータをプルしますEmployeeDTPayrollSheetDT2つのDataTableには、SSN列を介した関係があります。

関連するSQLServerデータベース構造:

  • テーブル:Employee、列:(SSN主キー)、Driver
  • テーブル:PayrollSheet、列:(SSN外部キー)、PSDate

PayrollSheetフォームには、DataSourceDisplayMemberとDataTableをバインドした複数のコンボボックスがValueMemberあります。EmployeeDTプログラムを起動すると、「ドライバー」コンボボックスの下矢印をクリックしてドライバー名を選択し、他のコンボボックスにそのドライバー/SQLレコードの情報を表示させることに成功しました。同じデータソースにバインドされているためです。

また、コンボボックスの横にリストボックスがあり、コンボボックスで選択されているPSDateものをすべて表示することを目的とSSNしています。

リストボックスは私の問題です。コンボボックスの値を変更し、PSDateをリストボックスに表示できるようにする必要があります。PayrollSheetDTDataTableは静的SQLクエリを実行するため、これを実行できるかどうかはわかりませんが、必要なのは、WHERE SSN = <selected ssn in other datatable>

これを行う方法をよく理解していませんが、を入力しようとするとTableAdapter、次のエラーが発生します。

1つ以上の行に、null以外、一意、または外部キーの制約に違反する値が含まれています。

ご協力いただきありがとうございます

4

1 に答える 1

1

これらのことは非常に細かいです。

そのエラーは、いくつかのことを意味する可能性があります。PayrollSheet テーブルを (一時的に) 削除して、Employee テーブルのみにデータを入力してみてください。

列名の短い単語/フレーズが完全に一致するように、列名がSQLクエリと一致していることを確認してください。EmployeeLastName は EmployeeLName と同じではありません。

親行 (Employee に戻る) を持たない "余分な" PayrollSheet 行、別名、PayrollSheet の孤立した行がないことを確認します。

これは一般的なヘルパーです。DataSet オブジェクト (厳密に型指定されたものではなく、"DataSet" のみ) を入力してみてください...そして ds.WriteXml(@"C:\myds.xml") を実行し、その xml を調べて列を確認します。名前が一致します。

また、データ型を確認してください。(ds 定義内の) 列が「not null」としてマークされていないことを確認すると、クエリは一部の行に対して null 値を返します。それはある種のティックタックの問題です、私はかなり確信しています。

100 倍中 99 倍、私がこの問題を抱えていたとき、それは私を台無しにした小さな何かでした。

于 2013-03-11T00:46:26.313 に答える