現在までの時間をセットするには?

解決


fukube  2006-06-04 20:33:45  No: 95645

基本的なことだと思いますが教えてください。
いろいろ探していますが解決できていませんので・・。
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


特攻隊長まるるう  2006-06-06 22:38:53  No: 95646

# 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〜とか、別フォームならローカル変数を
用意して使います。


fukube  2006-06-08 07:00:10  No: 95647

特攻隊長まるるうさん、早速の回答感謝いたします。
>Update 文や Insert 文はレコードセットを返しませんので設定できません。
>Select 文で抽出したレコードセットを編集するような形になると思います。
[time2]は最初にデータがないので、Insert(追加)を行い、そのあとはUpdateで更新できると考えていたのですが・・無理なのですね。
私が基本をよく分かっていなかったので、まずはADOレコードセットにつてよく勉強していきたいと思います。教えていただき有難うございました。


特攻隊長まるるう  2006-06-09 03:13:27  No: 95648

>[time2]は最初にデータがないので、Insert(追加)を行い、そのあとはUpdateで更新できると考えていたのですが
そこも間違ってませんか?。

『データがない』という表現ですが、『レコードがない』のと『レコードはあるけど
[time2]のフィールドはNULLである』の場合があります。そこの部分を混同して
いるように思います。

SQL文で Insert 文は『レコードがない』場合に使います。
レコードがある場合は Update 文となります。

勤務時間を[time2]にセットする場合は、常に新しいレコードを追加するので
あれば Insert 文で間違っていません。最終的に、どんなデータがテーブルに
並んでいくのが理想なのか?データベーステーブル設計についても十分に
学ぶことをお勧めします。


fukube  2006-06-11 20:21:58  No: 95649

特攻隊長まるるう様ご教授有難うございます。
ご指摘のとおりだと思います。
実現したかったことは、[time2]列は最初はすべてNULLであり、全社員の表示をする際に、その[time2]列に各社員別の「勤務時間」がセットされているというものです。今回の場合、新しいレコード(社員)を追加することではないので、Inert文自体の理解が不十分でした。SQL文とデータベーステーブル設計について基本から勉強したいと思います。一旦解決とさせていただきましたが、勉強しながらまた行き詰まった際にはよろしくご指導ください。


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

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






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