基本的なことだと思いますが教えてください。
いろいろ探していますが解決できていませんので・・。
vb6、MDB(ACCESS2000)にADO接続です。
社員が出社してきた時から、勤務時間中の現在までの時間(勤務時間)を、最初にdatagridを開くとテーブルlistの[time2]にセットされ、開くたびに最新の勤務時間がupdateで参照できるようにしようとしています。
出勤した時間は、[time1]に既に入っています。例)2006/04/04 08:15:43
-----------------------------------------
Private Sub today_now_Click()
Dim w
w = CStr(DateTime.Now)
'勤務時間を[time2]にセットする。
editDB.Adodc1.RecordSource = "insert into [time2] from list ...
↑----この部分までが分からない
'出勤してからの勤務時間が長い順で社員を表示する
editDB.Adodc1.RecordSource = "select [time1],[出勤状況],[名前],[time2] from list where [time1] like '" & Date & "%'order by [出勤状況]DESC,[time2] asc "
editDB.Adodc1.Refresh
editDB.Caption = "本日の出勤状況 (勤務時間が長い順)"
editDB.Show
End Sub
# update と言いつつ insert 文。。。
まずはヘルプを読んでください。以下抜粋。
>RecordSource プロパティ (ADO データ (ADODC) コントロール)
> レコードセットを返すステートメントまたはクエリーを設定します。
Update 文や Insert 文はレコードセットを返しませんので設定できません。
Select 文で抽出したレコードセットを編集するような形になると思います。
…が、ボクはその手法を使いませんので、回答を省略します。
Update 文や Insert 文の実行は
http://www.microsoft.com/japan/msdn/data/techmat/ado/dao2ado_4.asp
のページを『Update』で検索すると下の方に2つ。。。
質問とは関係ないですが、editDB が参照変数でなく、直接のフォーム名の場合、
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200506/05060038.txt
ということがあるので参照変数を用意するようにしましょう。
通常は、自分自身なら Me.Adodc1〜とか、別フォームならローカル変数を
用意して使います。
特攻隊長まるるうさん、早速の回答感謝いたします。
>Update 文や Insert 文はレコードセットを返しませんので設定できません。
>Select 文で抽出したレコードセットを編集するような形になると思います。
[time2]は最初にデータがないので、Insert(追加)を行い、そのあとはUpdateで更新できると考えていたのですが・・無理なのですね。
私が基本をよく分かっていなかったので、まずはADOレコードセットにつてよく勉強していきたいと思います。教えていただき有難うございました。
>[time2]は最初にデータがないので、Insert(追加)を行い、そのあとはUpdateで更新できると考えていたのですが
そこも間違ってませんか?。
『データがない』という表現ですが、『レコードがない』のと『レコードはあるけど
[time2]のフィールドはNULLである』の場合があります。そこの部分を混同して
いるように思います。
SQL文で Insert 文は『レコードがない』場合に使います。
レコードがある場合は Update 文となります。
勤務時間を[time2]にセットする場合は、常に新しいレコードを追加するので
あれば Insert 文で間違っていません。最終的に、どんなデータがテーブルに
並んでいくのが理想なのか?データベーステーブル設計についても十分に
学ぶことをお勧めします。
特攻隊長まるるう様ご教授有難うございます。
ご指摘のとおりだと思います。
実現したかったことは、[time2]列は最初はすべてNULLであり、全社員の表示をする際に、その[time2]列に各社員別の「勤務時間」がセットされているというものです。今回の場合、新しいレコード(社員)を追加することではないので、Inert文自体の理解が不十分でした。SQL文とデータベーステーブル設計について基本から勉強したいと思います。一旦解決とさせていただきましたが、勉強しながらまた行き詰まった際にはよろしくご指導ください。
ツイート | ![]() |