・VB6.0
・SQLserver
・Win2000
初心者です。不慣れで説明不足も有るかと思いますが、どなたか宜しくお願いいたします。
テーブルA
------------------------------------
名 年齢 趣味 性別 誕生日
------------------------------------
a 20 音楽 NULL NULL
b 22 映画 NULL NULL
・
・
・
テーブルB
------------------------------------
名 誕生日 出身 年齢 性別
------------------------------------
a 19XX/04/04 東京 20 1
c 19xx/08/22 大阪 25 0
・
・
・
上記のような二つのテーブルがあります。
もし名前と年齢が一致した場合、テーブルAに、テーブルBから一致した人の誕生日と性別(1or0)のデータを入れたいのです。
一致させるところまでは出来たのですが、それをテーブルAに入れ込む方法がわかりません。
今のやり方としては、
①まずテーブルAのレコードをDo〜Loopで全件見て、名前と年齢を取得。
②1レコード見るたびに、SQL文で「テーブルBの名前と年齢」と、①で取得した値が一致するか確認。
③一致したらイミディエイトに一致したデータだけ誕生日と性別を表示させてみる。
③で表示はできたので、あとはテーブルAに入れ込むだけなのですが・・・。
今、AのレコードセットをRs,BのレコードセットをRs2として、
-----------------------------------------------------
'一致しなかった場合はポインタがEOFにあるはず
if Rs2.EOF Then
'一致した場合イミディエイトに表示
Else
Debug.Print Rs2.Fields("性別"),Rs.Fields("誕生日")
----------------------------------------------------
という感じで書いています。
この後(一致した場合の処理)で、
------------------------------------------------------
Rs.AddNew
Rs.Fields("性別") = Rs2.Fields("性別")
Rs.Fields("誕生日") = Rs2.Fields("誕生日")
Rs.Update
としたのですが、うまく入ってくれません。ヘルプもインストールできず
何が駄目なのかわからなくて大変困っています。
どうか助けてください!
説明不足な点があれば補足いたしますので、宜しくお願いいたします。
あれ。テーブル内に年齢列を持ってしまうと、誕生日列の内容に応じて、
毎日、データを更新しなければいけないのでは?
誕生日を渡すと、年齢を返すようなストアドファンクションを作っておいて、
実行時に動的に計算させた方が良い気がします。
> 一致させるところまでは出来たのですが、それをテーブルAに入れ込む方法がわかりません。
こういう時は、レコードセットをループで処理するのではなく、SQL で処理すべきかと。
> Rs.AddNew
> Rs.Fields("性別") = Rs2.Fields("性別")
> Rs.Fields("誕生日") = Rs2.Fields("誕生日")
> Rs.Update
> としたのですが、うまく入ってくれません。
AddNew するからいけないのでは。
一致する B テーブルの値を使って、既存の Aテーブルの内容を『更新』させようと
しているのに、AddNew メソッドで『新規に行を追加』してしまっては駄目ですよね。
> 何が駄目なのかわからなくて大変困っています。
もっとも駄目な点は、ヘルプをインストールできていないという、今の状況にあるのでは。
インストールできない原因を取り除かないと、今後の開発にも支障をきたしますよね。
魔界の仮面弁士 さま
こんにちわ。解答ありがとうございました。
おっしゃるとおりで、Updateさせたら追加することが出来ました。
>もっとも駄目な点は、ヘルプをインストールできていないという、今の状況にあるのでは。
>インストールできない原因を取り除かないと、今後の開発にも支障をきたしますよね。
おっしゃるとおりです。
本当はインストールしたいのですが、社のほうで紛失したそうでして・・・・。
でもやっぱり、もう一度上司に相談してみます。
ご親切に、感謝します。
ありがとうございました。
ツイート | ![]() |