またまたご無沙汰してすいません。
テーブルA(テーブル名は、”ユーザーテーブル”としておきます。)
ID(オートナンバー型)
磁気カード抽出情報(テキスト型)
ユーザーID(テキスト型)
ユーザー名(テキスト型)
テーブルB(テーブル名は、”座席テーブル”としておきます。)
ID(オートナンバー型)
座席ID(テキスト型)
座席番号(テキスト型)
保存テーブル(テーブル名は、”保存テーブル”としておきます。)
ID(オートナンバー型)
日付(日付/時刻型)
磁気カード抽出情報(テキスト型)
ユーザーID(テキスト型)
ユーザー名(テキスト型)
受付時間(日付/時刻型)
終了時間(日付/時刻型)
座席ID(テキスト型)
座席番号(テキスト型)
フォーム(入力用フォーム)があって、その中に下記テキストボックスがある。
入力用テキストボックス(レコードソースは空白、タブストップは”はい”)
磁気カード抽出情報(レコードソースは空白、タブストップは”いいえ”)
ユーザーID(レコードソースは空白、タブストップは”いいえ”)
ユーザー名(レコードソースは空白、タブストップは”いいえ”)
受付時間(レコードソースは空白、タブストップは”いいえ”)
終了時間(レコードソースは空白、タブストップは”いいえ”)
座席ID(レコードソースは空白、タブストップは”いいえ”)
座席番号(レコードソースは空白、タブストップは”いいえ”)
下記が入力用フォームのコード(サンプルコードです。)
Private Sub 入力用テキストボックス_AfterUpdate()
If IsNull(Me.磁気カード抽出情報) Then
磁気カードデータセット処理
ElseIf IsNull(Me.ユーザーID) Then
バーコードデータセット処理
Else
保存処理
End If
End Sub
Public Sub 磁気カードデータセット処理()
Dim rst As New ADODB.Recordset
Dim txt磁気カード抽出情報 As Variant
txt磁気カード抽出情報 = Mid(Me!入力用テキストボックス, 16, 7)
Set rst = New ADODB.Recordset
rst.Open "ユーザーテーブル", _
CurrentProject.Connection, adOpenKeyset, adLockOptimistic
rst.Filter = "磁気カード抽出情報=" & "'" & txt磁気カード抽出情報 & "'"
If rst.EOF Then
MsgBox ("該当するユーザー情報はありません。")
Me.入力用テキストボックス = ""
Else
Me.磁気カード抽出情報 = rst![磁気カード抽出情報]
Me.ユーザーID = rst![ユーザーID]
Me.ユーザー名 = rst![ユーザー名]
Me.受付時間 = Now()
Me.入力用テキストボックス = ""
End If
rst.Close
Set rst = Nothing
End Sub
Public Sub バーコードデータセット処理()
Dim rst As New ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Open "select * from 座席テーブル where 座席ID='" & Me.入力用テキストボックス & "'", _
CurrentProject.Connection, adOpenKeyset, adLockOptimistic
If rst.EOF Then
MsgBox ("座席情報はありません。")
Me.入力用テキストボックス = ""
Else
Me.座席ID = rst![座席ID]
Me.座席番号 = rst![座席番号]
Me.終了時間 = Now()
Me.入力用テキストボックス = ""
End If
rst.Close
Set rst = Nothing
End Sub
Public Sub 保存処理()
If MsgBox("保存しますか?", vbYesNo) = vbYes Then
Dim rst As New ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Open "保存テーブル", _
CurrentProject.Connection, adOpenKeyset, adLockOptimistic
rst.AddNew
rst![日付] = Date
rst![磁気カード抽出情報] = Me.磁気カード抽出情報
rst![ユーザーID] = Me.ユーザーID
rst![ユーザー名] = Me.ユーザー名
rst![受付時間] = Me.受付時間
rst![終了時間] = Me.終了時間
rst![座席ID] = Me.座席ID
rst![座席番号] = Me.座席番号
rst.Update
rst.Close
Set rst = Nothing
End If
End Sub
【解説】
1)今回テーブルに接続する方法としてADO(ActiveX Data Object)という方法で
おこなっていますが、Access97とかでしたらDAO(Database Access Object)
で行う方法もあります。(Access2000からはADOが標準みたいですので、
DAOはつかいませんでした。)
2)テーブルにアクセスして抽出する方法は、
テーブルを開いてフィルタを使う方法(上記磁気カードデータセット処理)
SQLで抽出する方法(上記バーコードデータセット処理)
があり、どちらでもかまいません。
3)実際は保存するときに既に同じ情報があるかチェックしたりする必要がありますが今回は割愛しました。
4)処理後 Me.入力用テキストボックス.SetFocus で、フォーカスを移すことを
考えていましたが、うまくいかなかったため、入力用テキストボックス以外のテキストボックスのタブストップを”いいえ”とすることで代替させてもらいました。
5) 今回は、入力用テキストボックスの更新後処理で動かしていますが、
別にボタンを追加して、そのボタンをクリックしたときに処理が動くようにしてもいいかもしれません。
6)フォームは、保存テーブルを元にウイザードで作成するほうが簡単です。
7)今回フォームは非連結としました。(一時テーブルは割愛させていただきました。)
あと不明な点があれば、補足してください。
(新しく質問を起こしたほうが他の方の回答をすばやくもらえる可能性が高い
ですね。)
当方 最近公私ともに忙しく回答が送れたことをお詫びいたします。m(__)m
お礼
大変お世話になりありがとうございました 一応ご協力いただいたおかげで形になりました 本当にどうもありがとうございました。