VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2002/09/03(Tue) 10:22
投稿者さー
Eメール
URL
タイトルVB SQLで アクセステーブルを操作する

こんにちわ。VB始めたばかりの初心者です。
かなり煮詰まってしまったので分かる方よろしくお願いします。
(長くなってしまいましたが…)

現在、VBでアクセスのテーブルを操作しています。
給与計算において、休職者が出た時の日数計算をしています。
テーブル名が長いので略して書きます。

テーブルA 処理年月日や支給年月日などのテーブル
   a1(数値型ex.200208)…給与年月 a2(日付型)…支給年月日
テーブルB 計算した日数を入れるテーブル
   b1(数値型)・・社員コード b2(数値型)・・日数 b3(日付型)…支給年月日
テーブルC 休職情報が書かれたテーブル
   c1(数値型)…社員コード c2(日付型ex.02/08/25)…休職開始日

とします。

現在処理中の時、同月に休職者がいた場合、その月の日数から休職開始日の日にち引いて日数を求め
ます。
テーブルBには、テーブルCと同じ人がいるとは限りません。
もし、同じコードがある場合はb2だけを更新し、
一致しない場合はテーブルBに追加して、b1、b2、b3 全ての項目を追加します。
現在処理中のものがあるかどうかの判断と、もしあった場合の年月(aa とします。)は求めてありま
す。

現在処理中の時、その月の一日をx、末日をwとし、
x=DateSerial(Year(aa),Mnth(aa),1)
w=DateSerial(Year(aa),Month(aa)+1,0) と求めました。

b1=c1が一致する時
Excute "update B inner join C on B.b1=C.c1 " _
     & "set b2('& day(w) &' - day(C.c2))" _
     & "where (C.c2 Between # '& format(x,'yy/mm/dd') &' #" _
     & "and # '& format(w,'yy/mm/dd') '& #)"
b1=c1が一致しない時
Excute "insert into B (b1 b2 b3) " _
     & "select C.c1,'& day(w) &' - day(C.c2),A.a2
     & "from A,B inner join C on B.b1=C.c1 " _
     & "where ((C.c2 between C.c2 Between # '& format(x,'yy/mm/dd') &' #&q
uot; _
     & "and # '& format(w,'yy/mm/dd') '& #) " _
     & "and (B.b1 is null))

と書いたのですが、演算子が足りませんと出てしまいました。
長々となってしまいましたが、分かる方お願いします。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -