レコードに特定のフィールドのみデータを入れるには?

解決


まちこ  2006-09-29 11:26:12  No: 133471

・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

としたのですが、うまく入ってくれません。ヘルプもインストールできず
何が駄目なのかわからなくて大変困っています。
どうか助けてください!
説明不足な点があれば補足いたしますので、宜しくお願いいたします。


魔界の仮面弁士  2006-09-29 18:20:38  No: 133472

あれ。テーブル内に年齢列を持ってしまうと、誕生日列の内容に応じて、
毎日、データを更新しなければいけないのでは?

誕生日を渡すと、年齢を返すようなストアドファンクションを作っておいて、
実行時に動的に計算させた方が良い気がします。

> 一致させるところまでは出来たのですが、それをテーブルAに入れ込む方法がわかりません。
こういう時は、レコードセットをループで処理するのではなく、SQL で処理すべきかと。

> Rs.AddNew
> Rs.Fields("性別") = Rs2.Fields("性別")
> Rs.Fields("誕生日") = Rs2.Fields("誕生日")
> Rs.Update
> としたのですが、うまく入ってくれません。

AddNew するからいけないのでは。
一致する B テーブルの値を使って、既存の Aテーブルの内容を『更新』させようと
しているのに、AddNew メソッドで『新規に行を追加』してしまっては駄目ですよね。

> 何が駄目なのかわからなくて大変困っています。
もっとも駄目な点は、ヘルプをインストールできていないという、今の状況にあるのでは。
インストールできない原因を取り除かないと、今後の開発にも支障をきたしますよね。


まちこ  2006-09-30 07:08:24  No: 133473

魔界の仮面弁士 さま
こんにちわ。解答ありがとうございました。
おっしゃるとおりで、Updateさせたら追加することが出来ました。

>もっとも駄目な点は、ヘルプをインストールできていないという、今の状況にあるのでは。
>インストールできない原因を取り除かないと、今後の開発にも支障をきたしますよね。

おっしゃるとおりです。
本当はインストールしたいのですが、社のほうで紛失したそうでして・・・・。
でもやっぱり、もう一度上司に相談してみます。
ご親切に、感謝します。
ありがとうございました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加