- PR -

FindFirst

1
投稿者投稿内容
モンジ
ベテラン
会議室デビュー日: 2005/09/06
投稿数: 85
投稿日時: 2005-11-25 14:27
今まで、Accessを使っていましたが、今回からVBを使ってプログラミングをしています。
2つのテーブルがあり、一つがコードマスタテーブルで、もう一つが新規のコードマスタテーブルです。

新規のコードマスタテーブルをループさせ、コードマスタテーブルにあれば更新、無ければ追加。という処理を行おうと思っています。

accessならfindfirstを使ってすぐに処理できるのですが、VBの場合、どのようにすればよいか分からず、困っています。

どなたかご教授お願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-11-25 22:56
質問の意図がよく見えないのですが、SQL 文2つで実現できるんじゃないかなぁ?

UPDATE 新規 SET 忘れた(^-^; WHERE 新規.識別子=旧.識別子;
INSERT INTO 新規 (SELECT * FROM 旧 WHERE 識別子 NOT IN (SELECT 新規.識別子 FROM 新規));

 これを発行してやればいいですよね?ってことじゃないの?
___________________________________________________________________
□ written by Jitta on 2005/11/25
□ Microsoft MVP :Visual Developer ASP/ASP.NET Oct.2005-Sept.2006
_________________
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2005-11-26 06:23
引用:

accessならfindfirstを使ってすぐに処理できるのですが、VBの場合、どのようにすればよいか分からず、困っています。


利用環境をもう少し詳しく説明してください。

VB6, VB.NET ?
ADO, ADO.NET 1.x, ADO.NET 2.0 ?
この辺の利用環境を明確にしてください。
_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
モンジ
ベテラン
会議室デビュー日: 2005/09/06
投稿数: 85
投稿日時: 2005-11-26 08:18
Jittaさん、Accessさん返信ありがとうございます。

環境は、VB.NET2003、データベースがACCESS 2000、ADO.NET(1.xか2.0かはわかりません)

具体的に言いますと、
THINMOBという、新規品目コードを格納するテーブルがあり、
THINMOという品目コードのテーブルへ、品目コードが合致すれば、更新、なければ追加
という形を取りたいのです。

従来accessならば、
rs(THINMOB)
rs1(THINMO)

do until rs.EOF

rs1.findfirst"品目コード = '" & rs1!品目コード & "'"

if rs1.nomatch then
db.excute"insert into〜
else
rs1.edit
・・・
end if
rs.movenext
loop


というコードを書いておりました。
ただ、VBではfindfirstを使えないとのことなので、
どのように処理すればよいのか、困っております。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-11-26 10:14
引用:

モンジさんの書き込み (2005-11-26 08:18) より:
ただ、VBではfindfirstを使えないとのことなので、
どのように処理すればよいのか、困っております。


DataTable.Select使えば済む話なんじゃないの?
_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/
モンジ
ベテラン
会議室デビュー日: 2005/09/06
投稿数: 85
投稿日時: 2005-11-29 12:36
返事が遅くなりまして、申し訳ありません。

自分であれから色々やってみたのですが、
Jittaさんのおっしゃる通り、SQLを書くだけで解決すると思います。

ただ、非力なもので、SQLがうまく書けません。
どなたかご教授願います。

THINMO 新規品目データテーブル
THINMOA 品目データテーブル

1. 品目コードがTHINMOにあって、THINMOAにないものを、THINMOAにインサート

cn.Execute("INSERT INTO THINMOA " & _
"(SELECT * FROM THINMO WHERE 品目コード NOT IN " & _
"(SELECT THINMOA.品目コード FROM THINMOA))")

cn.Execute("Insert into THINMOA select * from THINMO")は、正常に作動します。
insert into構文のエラーだと考えられます。
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2005-11-29 12:56
引用:

モンジさんの書き込み (2005-11-29 12:36) より:
cn.Execute("INSERT INTO THINMOA " & _
"(SELECT * FROM THINMO WHERE 品目コード NOT IN " & _
"(SELECT THINMOA.品目コード FROM THINMOA))")

cn.Execute("Insert into THINMOA select * from THINMO")は、正常に作動します。
insert into構文のエラーだと考えられます。



括弧が余計なような気がします・・・

cn.Execute("INSERT INTO THINMOA " & _
"SELECT * FROM THINMO WHERE 品目コード NOT IN " & _
"(SELECT THINMOA.品目コード FROM THINMOA)")
モンジ
ベテラン
会議室デビュー日: 2005/09/06
投稿数: 85
投稿日時: 2005-11-30 07:35
かめたろさん、ありがとうございました。
もう少し冷静になって、見直すべきでした。
ありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)