Visual Vasic.Netでアクセスのデータベースと繋げてデータグリッドの中に必要な情報を表示したいのですが、(言っている事が不可解だったらすいません!)今、レビューのシステムで、一つの作品を採点者に配布するプログラムを書いているのですが、まだ採点者に配布されていない作品のリストをアクセスのPaperとReviewのテーブルを使って、登校日順に表示したいのですが、SQLの書き方が分かりません。Paper(作品)のテーブルにはPape_N0, Paper_Nameがあって、Reveiw のテーブルにはPaper No. Reviewer_No.などがあります。PaperのPrimaryKeyはPaper_No.でReviewのPrimaryKeyはPaperNoとReviewer_NO.です。レビューのテーブルにPaperNo.が無いものはまだReviewer(採点者)に配布されてないという事なので、SQLのWhereのところに
Paper.Paper_No not in Review.Paper_No. としてみたけどエラーメッセージが出ました。構文が間違ってますか?それともReviewのPrimaryがコンポジットフライマリーキーだからでしょうか?DataAdapter設定途中のQuery BuilderのウィンドーでPaper_No が2回表示されています。2個目のPaper_No.のAliasにはExpr1と表示されています。質問の内容が分かっていただけたらいいのですが、きっと分かりずらいですよね。。。英語版のVB、アクセスを使ってます。宜しくお願いします。
まず簡単に確認するならば・・・
アクセスの方で、不一致クエリで同様の操作を行い、結果が正しく
得られるかを確認された方がいいと思います。
あとは、そのクエリを、デザインビューで表示し、SQLビューで
見れば欲しいSQL文が得られます。
後、VB.NETの方にそのSQL文を持っていって動作させれば・・・
ご検討下さい。
以上。
岡田 之仁さん、おはようございます!
アドバイスどうもありがとうございました!
そうですよね、思いつきませんでした!今から試してみます^^
アクセスでは出来たのですが、その構文をコピーしてDataAdapterのQueryBuilderに貼り付けたのですがエラーになりました。今原因を調べ中です。
話は変わるのですが(新しいトピックを作った方がいいかな?でも可能かどうか知りたいのでちょっとだけ、)
クリスタルリポートにもまだ採点者に配布されていない作品のリストを表示するのに、このような↑のような(Paper.Paper_No not in Review.Paper_No. )条件を付けられるでしょうか?
宜しくお願いします。
質問の意味がよくわかっていないのですが(済みません)、
条件付表示するのであれば、DataViewクラスが使えませんか?
> アクセスでは出来たのですが、
Access側のクエリモードは、ANSI-89モードとANSI-92モードの
どちらにしていますか?
OleDb接続の場合はANSI-92構文のSQLしか使えませんので、Access側が
ANSI-89モードになっていると、エラーになる可能性があります。
また、Accessが持つ関数(NzやDCountなど)をSQL中に使った場合にも、
エラーになります。(ISNULLなどの、Jet自身が持つ関数ならば使用可能)
魔界の仮面弁士さん、返信どうも有り難うございます。はっきりしない質問スミマセン!でも解決しました。(けど今度は他の問題が出てきたので、新しい質問を作ります。)有り難うございました。
編集 削除