• 締切済み

ADOレコードセットのプロパティ設定

Oracle内の(複数テーブルからジョインした)レコードセットを VBで取得し、必要なテーブルのみアップデートしようとすると、エラーが 出ます。これは、レコードセットのプロパティで Uniqueテーブルを設定しなければならないと思われますが、その設定の 方法が分かりません。どうすればいいか、教えてください。

みんなの回答

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

情報が不足してます。 エラー内容や、更新の部分、レコードセットの部分のコードなど がないと何とも言えません。 更新したいテーブルのキーもわかったらうれしいかも?

funadan
質問者

補足

即レスありがとうございます! テーブルは2つを参照しています。 ProductMaster(field:iid, ProductID, ProductName) PurchaseOrder(field:iid, POID, PID, Qty) どちらもiidがUniqueKeyです。 レコードセット部分では、ProductMaster.ProductID=PurchaseOrder.PIDで ジョインしています。それで取得したレコードセットに対し実際更新したいのは PurchaseOrderのほうだけなのですが、 VBのデータグリッドからジョインしたレコードセットに 例えばAddNewしようとすると、(PurchaseOrderに1レコード追加したい)、 なぜかProductMasterにまで更新をかけようとします。で、エラーが Oracleエラーの、 「ProductMaster iidにNullは不可能です」 といったエラーメッセージが出てきます。 データグリッド上はPurchaseOrder,ProductMaster両方からの情報を 表示したいのですが、PurchaseOrderを単体で操作したい。で MSDNやら何やかんや調べてるうちに、Uniqueテーブルプロパティというところに いきついたんです(もしかしたら、間違ってるかも知れませんが、、) が、その設定の方法が分からないのです。。。 どうしたらいいのか、分かったら教えてください。

関連するQ&A

  • ADOのレコードセットをローカルにキャッシュする方法

    ご質問させて頂きます。 MS SQL 2000 と VB 6.0 の環境で、ADO接続しています。 SQLサーバに接続し、データをレコードセットに取得したのですが、Connectionをクローズするとレコードセットも参照できなくなってしまいます。 Connectionをクローズ後もレコードセットを使えるようにする方法はありませんでしょうか? どうぞ宜しくお願いします。

  • VBからオラクルの先頭レコードを取得

    VB6をoo4oでオラクルに接続しています。オラクルのテーブルの先頭レコード値や次のレコードの値の取得方法を教えて下さい。フィールドの値を参照して取得するのではなく、ただ単に先頭レコードや次のレコードの値を取得したいです。教えて下さい!

  • レコードセットからレコードセットって作れますか?

    WindowsXP,VB6,SP5,で開発しています。 タイトルそのままなのですが、 ある事情で、まずはデータベース(Access)からレコードセットを作成しています。 そのレコードセットをもとに色々と抽出したいんです。 もし、データベースからSQL文で抽出するときみたいに、そのレコードセットを、 SUM(~とかGROUP化したりとかできればいいなあと思っているのですが、 その方法がわからず、2,3回遠回りしてレコードセットを作成してます。 レコードセットからレコードセットを作成することってできないのでしょうか? わかりにくくてすみませんが、どうぞよろしくお願いしますm(_ _)m

  • ADOでループすると1レコードずつ飛ばしてしまう

    アクセスなのですが Sub test() Set cn = CurrentProject.Connection rs.Open "テーブル", cn, adOpenKeyset, adLockOptimistic rs.Filter = "(店名 = '" & str店名 & "') And (URL = '未')" For j = 1 To rs.RecordCount rs("URL") = "http" rs.Update rs.MoveNext Next rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub このようにして、既存のレコードにフィルタをかけて該当のレコードの値を更新しているのですが rs.MoveNext をいれると、 1レコード目、3レコード目、5レコード目・・・と言う順番になってしまい、 最終的にrs.RecordCountの数を越したレコードを指定してしまい 実行時エラー 3021 「BOFとEOFのいずれかTRUEになっていか、または現のレコードが要求された操作には、現在のレコードが必要です。」 となってしまいます。 だからって rs.MoveNextをいれないと、rs.RecordCountに達するまで、 いつまでも同じレコードをループしてしまいます。 1レコードずつ順番にデータを掴む方法を教えてください。

  • VB.NET データセットとADOレコードセットについて。

    最近.NETの勉強を始めました。質問なのですが (1)参考書として買った本にはデータセットが基本の構文がずらりと載っているのですが、 (2)勉強用に貰ったVBデータはADOで基盤が作ってあり、データセットは1つも出てきていません。例えばデータグリッド等は無しです。 (1)と(2)は、今後プログラムを書くにあたり、どうとらえていけばよいんでしょうか? 大きいシステムの流れはVBデータでつかめますが、細かい、(例えば、コンボボックスの値をデータから抽出したい)等の事が分からなくてネットでも見つける事ができません。データグリッドも使いたいのですが。 参考書には載っていますが、全てデータセットを使ってあります。 データセットとADOレコードセットは共に書くことは不可なのですか? テーブルごと仮で持ってくる時、こっちはデータセットでこっちは違うとかだやはり困りますよね。 実際のお仕事の現場ではどのようにされていますか? 明確なADOの使い道(こんな時はADOだ。など)も簡単に教えていただけるとありがたいです。

  • ADOによるレコードセット検索

    いつもお世話になっております。GomiYasikiです。 レコードセットをWhere句の様な複数条件で検索したいのですが、 サブクエリーを使っている場合、DAOだとエラーが出てしまいます。 そのためADOで行いたいのですが、可能なのでしょうか? (クエリーでも構いません) 行いたいのは以下の様な事です。 条件がFieldA='AAAA' and FieldB=123 and FieldC=1で カーソル●以降、若しくはselectの結果レコードのxx行目以降にこの条件のレコードが存在するかを調べたいです。 度々ですが、宜しくお願い致します。  FieldA, FieldB, FieldC  AAAA, 123, 1 ●BBBB, 456, 2  CCCC, 123, 3  DDDD, 122, 1  AAAA, 123, 1

  • ADOのCursorLocationプロパティ

    いつも参考にさせて頂いております。 現在でVB6.0SP6でOracleのデータベースの内容を ADO経由で表示するプログラムを開発しております。 その際、ADOのプロパティにCursorLocationという プロパティがあり、設定値としてadUseClientと adUseServerがあるのですが、ヘルプを呼んでもいまいち 内容が理解ができません。 また、ヘルプではCursorLocationのデフォルト値は adUseServerになっているのですが、実際にADOのコントロールを貼り付けるとadUseClientが設定されます。 それぞれの特色と通常どちらを使うべきなのか教えてください。 宜しくお願いいたします。

  • VBのレコードセットを閉じないとどうなるんですか?

    VB6.0のレコードセットに関する素朴な疑問なんですが、レコードセットをオープンして、DBから値を取得し、 そのあとそのレコードセットを閉じないでプログラムを終了すると、何かしらの障害が発生するような事はあるんでしょうか?それとも、レコードセットを閉じる記述がされていない場合、たとえばプログラム終了時に暗黙で閉じられていたりするもんなのでしょうか? 以上、どなたかご存知の方いらっしゃいましたら、ご回答お願い致します。

  • フォームのレコードソースの設定の仕方

    フォームを以下の手順で作成し、 1. 4つぐらいのテーブル間でリレーションを設定 2. その中の1つのテーブルから、フォームの自動作成 3. 出来たフォームのレコードソースの「・・・」ボタンをクリックして、1で設定した3つのテーブルを追加し、必要な項目を追加して、その設定内容を保存  →最初のテーブルは「テーブル名.*」として一覧に追加、その他のテーブルは、必要な項目だけを追加 4. デザインモードで、フォームの項目を追加してフォームを作成 再度、フォームのレコードソースを開くと、中身が消えてしまい、何もありません。 そして、エラーがおき、「「*」を有効なフィールド名、式として認識出来ません」というようなエラーになり、表示できません。 複数のテーブルを連結してレコードソースにスル場合、このようなエラーが起きるのでしょうか。また、解決方法なども教えていただけると助かります。 よろしくお願いします。

  • オラクルからレコードを取得

    VBをoo4oでオラクルの接続していますが、オラクルのテーブルをレコードごとにEXCELのシートに出力したいです。 たとえばテーブルのレコード数が5の場合EXCELのsheet1からsheet5に分け出力したいです。 教えて下さい。