No.9ベストアンサー
- 回答日時:
#8です。
非連結フォーム内に、サブフォームを置いているのですね。
なんだか難しくしているだけの様な気もしますが、試しにやってみました。
単純化していますので、動作が確認できたらお好きな様にアレンジして下さい。
Private Declare Sub Sleep Lib "KERNEL32.dll" (ByVal dwMilliseconds As Long)
Dim stopFlag As Boolean
Private Sub Form_Load()
Me.tosenGamen.Visible = False
End Sub
Private Sub コマンド6_Click()
Dim rs As DAO.Recordset
Dim currentID As String
stopFlag = False
Set rs = Me.tosenGamen.Form.RecordsetClone
rs.MoveFirst
Do Until stopFlag
currentID = rs!moto
Me.テキスト4.Value = currentID
Sleep 10
DoEvents
rs.MoveNext
If rs.EOF Then rs.MoveFirst
Loop
Me.tosenGamen.Visible = True
Me.tosenGamen.SetFocus
DoCmd.GoToControl "moto"
DoCmd.FindRecord currentID, acEntire
Set rs = Nothing
End Sub
Private Sub コマンド7_Click()
stopFlag = True
End Sub
No.8
- 回答日時:
#2,6です。
テーブルの構造と、フォームの構造がいまいち理解できません。
サブフォームに表示したいとの事ですが、メインのフォームには何が入っているのでしょうか?
単独のテーブルから作成した単票のオートフォームの、ヘッダーセクションに、
非連結のテキストボックスと、スタートボタン、ストップボタンを置き、詳細フォームのVisibleプロパティを
操作すればご希望に近い事ができると思いますが、それではダメですか?
下記コードはご参考までに。ここではIDは、オートナンバーの数字でやっています。
Private Declare Sub Sleep Lib "KERNEL32.dll" (ByVal dwMilliseconds As Long)
Dim stopFlag As Boolean
Private Sub Form_Load()
Me.詳細.Visible = False
End Sub
Private Sub コマンド14_Click()
Dim rs As DAO.Recordset
Dim currentID As Long
Dim strID As String
stopFlag = False
Set rs = Me.RecordsetClone
Do Until stopFlag
currentID = rs!ID
strID = Format(currentID, "000")
Me.テキスト12.Value = Mid(strID, 1, 1)
Me.テキスト16.Value = Mid(strID, 2, 1)
Me.テキスト17.Value = Mid(strID, 3, 1)
Sleep 10
DoEvents
rs.MoveNext
If rs.EOF Then rs.MoveFirst
Loop
Me.詳細.Visible = True
DoCmd.GoToControl "id"
DoCmd.FindRecord currentID, acEntire
Set rs = Nothing
End Sub
Private Sub コマンド15_Click()
stopFlag = True
End Sub
この回答への補足
すみません
ご説明します
テーブルに〒、住所、氏名、idコード5桁です
idコードのフィールド名がmotoです
メインのフォームにはstartbとstopbとテーブルのidコード5桁をだしたいのです
サブフォムには〒、住所、氏名、idコードを出します
下記のようにつくりましたが
startbで最初レコードのidコードが画面にでるだけで
次々とidコードが表示されません
データが終わりまでいってループになってしまいます
Option Compare Database
Private Declare Sub Sleep Lib "KERNEL32.dll" (ByValdwMilliseconds As Long)
Private Sub Form_Open(Cancel As Integer)
Forms!gamen!当選者画面.Visible = False
End Sub
Private Sub stopb_DblClick(Cancel As Integer)
STOPFLAG = True
Forms!gamen!当選者画面.Visible = True
Forms!gamen!stopB.ForeColor = 255
Forms!gamen!stopB.BorderColor = 255
Forms!gamen!stopB.Caption = "当選者決定"
End Sub
Private Sub stratb_Click()
Dim db As DAO.Database
Dim RS As DAO.Recordset
Set db = CurrentDb()
Set RS = db.OpenRecordset("JLIST", dbOpenDynaset)
Dim STOPFLAG As Boolean
STOPFLAG = False
RS.MoveFirst
Do Until STOPFLAG
Me!S1.Value = Mid(RS!MOTO, 1, 1)
Me!S2.Value = Mid(RS!MOTO, 2, 1)
Me!S3.Value = Mid(RS!MOTO, 3, 1)
Me!S4.Value = Mid(RS!MOTO, 4, 1)
Me!S5.Value = Mid(RS!MOTO, 5, 1)
DoEvents
Sleep 50
RS.MoveNext
If RS.EOF Then RS.MoveFirst
Loop
End Sub
No.7
- 回答日時:
補足に記述があったので気が付きませんでした。
。さて、提示されたコードで何故うまく行かないかと言うと
Do Until RS.EOF
~~省略~~
'doevens
'Sleep 10
RS.MoveNext
で一回レコードセットを最後まで進めているだけです。
No.6 のmitarashi さんのコードを確認してください
> If rs.EOF Then rs.MoveFirst
最後まで行ったら最初に戻っていますよ!
また、
> Private Sub Form_Open(Cancel As Integer)
フォームのオープン時イベントではマズイかと。
おなじく、No.6 のmitarashi さんのコードを確認してください。
コマンドボタンのイベントで処理されています。
サブフォームに当選者の詳細をだしたいのですよね?
メインフォームにRS!MOTOのフィールドを配置(親A)(不可視)でかまいません
サブフォームにもRS!MOTOのフィールドを配置して(子A)
サブフォームのプロパティを開きデータのリンク子フィールド(子A)と
リンク親フィールド(親A)を設定すればリンクできますよ
具体的なコードは・・・ほとんどmitarashiさんのコードと一緒になってしまうので
(悪く言えばパクリ)ご勘弁ください。
※お礼欄に記述して投稿されると(私のではなくmitarasi さんのとこですよ!)
メールが先方に送られますので、気が付いてくれるかと思います。
『補足』と『お礼』を旨く使い分けてください。
追伸
DoEvents ←→doevens スペルミスでは?
No.6
- 回答日時:
#2です。
DAOはあまり使った事がないのですが、今回の事例はDAOを使う方が簡単そうです。Access2000の場合は、Microsoft DAO 3.6 Object Libraryに参照設定する必要があります。
また、単票フォームにテキストボックス1個と、コマンドボタン2個があるとします。
番号は実際に合わせて付け替えるか、コントロールのプロパティで命名して、そちらと入れ替えて下さい。
Private Declare Sub Sleep Lib "KERNEL32.dll" (ByVal dwMilliseconds As Long)
Dim stopFlag As Boolean
Private Sub コマンド10_Click()
Dim rs As DAO.Recordset
stopFlag = False
Set rs = Me.RecordsetClone
Do Until stopFlag
Me.テキスト8.Value = rs!ID
Sleep 10
DoEvents
rs.MoveNext
If rs.EOF Then rs.MoveFirst
Loop
DoCmd.GoToControl "id"
DoCmd.FindRecord Me.テキスト8.Value, acEntire
Set rs = Nothing
End Sub
Private Sub コマンド11_Click()
stopFlag = True
End Sub
No.5
- 回答日時:
No3 nicotinism です。
お試しいただけなかったのが残念です。
まぁ少しトリッキーではあるのですが。
さて
回答者は千里眼の持ち主ではありませんので
No2 の方の回答のようになってしまいます。Me too
>MoveNextでデータは進めいているのですが
>Formに反映されないのです
これのVBAでのコードの内容が分かれば、そちらの状況に応じた回答も
出来ようかとおもいます。
フォームは単票フォームなんですよね?
その説明も欲しいですね。
この回答への補足
すみません
コード書きました
標準モジュールの書き方が
わからないのでdoevensはエラーに
なってしまいますがデータは最後まで
行って最後が表示されます
でもどうも画面には反映されていないようです
ご教示お願いします
Option Compare Database
Private Declare Sub Sleep Lib "KERNEL32.dll" (ByValdwMilliseconds As Long)
Private Sub Form_Open(Cancel As Integer)
'当選者画面はサブフォーム
Forms!gamen!当選者画面.Visible = False
Dim db As DAO.Database
Dim RS As DAO.Recordset
Set db = CurrentDb()
Set RS = db.OpenRecordset("JLIST", dbOpenDynaset)
RS.MoveFirst
Do Until RS.EOF
Me!S1.Value = Mid(RS!MOTO, 1, 1)
Me!S2.Value = Mid(RS!MOTO, 2, 1)
Me!S3.Value = Mid(RS!MOTO, 3, 1)
Me!S4.Value = Mid(RS!MOTO, 4, 1)
Me!S5.Value = Mid(RS!MOTO, 5, 1)
'5桁の数字各々テキストボックス
'MOTOはテーブルにあるコード
'doevens
'Sleep 10
RS.MoveNext
Loop
End Sub
No.4
- 回答日時:
「再クエリ」が抜けているだけ?。
タイマーコントロール使った時間表示を見ると、
一定時間ごとに表示が変わりますが・・・。
ビンゴゲームやスロットマシンの抽選番号を表示する、みたいなもの?。
これならどこかにサンプルはありそう。
この回答への補足
すみません、フォームでレコードソースを指定し
配置したテキステボックスのコントロールソースにテーブルのフィールドを
指定すればフォームに反映しますし、レコードセレクターでレコードを進めること
もできますが、
それをプログラムの中でフォームとテーブルをどうセットするか
がわからないのです。多分そこをおしえていただけたら解決すると思うのですが
No.3
- 回答日時:
抽選機みたいなもの・・に反応して考えました (^^ゞ
大前提
単票フォームであること
下準備
フォームに非連結のテキストボックスを1個。名前をNos
同様にコマンドボタンを1個。名前を btn0 とします。
コマンドボタンの標題を、開始 にします(ピクチャはなしに)。
標準モジュールに下記の一行を追加
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
コマンドボタン btn0 のクリック時イベントに以下を
Private Sub btn0_Click()
Dim rc As Long
rc = Me.RecordsetClone.RecordCount
If Me!btn0.Caption = "開始" Then
Me!btn0.Caption = "停止"
Do Until Me!btn0.Caption = "開始"
Me!Nos = Int(Rnd * rc) + 1
DoEvents
Sleep 50
Loop
Else
Me!btn0.Caption = "開始"
DoCmd.GoToRecord acDataForm, Me.Name, acGoTo, Me!Nos
End If
End Sub
異常終了に備えて
フォームの読み込み時イベントに
Private Sub Form_Load()
Me!btn0.Caption = "開始"
End Sub
OSやAccessのバージョンによっては動かないかもしれない。
当方 WindowsXP Access2002
ご参考までに。
No.2
- 回答日時:
質問文からはどの様に実現しようとしているのかが読み取れません。
次のケースが思いつきます。
1.非連結のフォーム上に、テキストボックス1個と、スタート、ストップボタンを置き、ストップボタンを押したときのコード番号により、単票フォームを呼び出す。
2.単票フォームの上部のヘッダー部に、テキストボックス1個と、スタート、ストップボタンを置き、ストップボタンを押したときのコード番号により、単票フォームのレコードを移動する。
3.単票フォームの上部のヘッダー部に、スタート、ストップボタンを置き、ストップボタンを押すまで単票フォームのレコードを次々と移動する。
2番目でやってみました。Sleep関数を用いているのは、CPUの使用率が100%になってしまうのを防ぐためです。もし3にしたければ、改造は容易です。
テキストボックス、コマンドボタンの名前は成り行きです(最初に1をやってみたので大きな数字になっています)ので、試される場合は実際に合わせてください。テーブル名と、コード番号の入ったフィールド名についても同様に修正してください。ご参考まで。
Private Declare Sub Sleep Lib "KERNEL32.dll" (ByVal dwMilliseconds As Long)
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim stopFlag As Boolean
Private Sub Form_Load()
Set cn = CurrentProject.Connection
Set rs = New ADODB.Recordset
rs.Open "テーブル名", cn, adOpenForwardOnly, adLockReadOnly
End Sub
Private Sub Form_Unload(Cancel As Integer)
If rs.State = adStateOpen Then rs.Close
Set rs = Nothing
If cn.State = adStateOpen Then cn.Close
Set cn = Nothing
End Sub
Private Sub コマンド10_Click()
stopFlag = False
Do Until stopFlag
Me.テキスト8.Value = rs!ID
Sleep 10
DoEvents
rs.MoveNext
If rs.EOF Then rs.MoveFirst
Loop
DoCmd.GoToControl "id"
DoCmd.FindRecord Me.テキスト8.Value, acEntire
End Sub
Private Sub コマンド11_Click()
stopFlag = True
End Sub
この回答への補足
すみません
コード書きました
標準モジュールの書き方が
わからないのでdoevensはエラーに
なってしまいますがデータは最後まで
行って最後が表示されます
でもどうも画面には反映されていないようです
ご教示お願いします
Option Compare Database
Private Declare Sub Sleep Lib "KERNEL32.dll" (ByValdwMilliseconds As Long)
Private Sub Form_Open(Cancel As Integer)
'当選者画面はサブフォーム
Forms!gamen!当選者画面.Visible = False
Dim db As DAO.Database
Dim RS As DAO.Recordset
Set db = CurrentDb()
Set RS = db.OpenRecordset("JLIST", dbOpenDynaset)
RS.MoveFirst
Do Until RS.EOF
Me!S1.Value = Mid(RS!MOTO, 1, 1)
Me!S2.Value = Mid(RS!MOTO, 2, 1)
Me!S3.Value = Mid(RS!MOTO, 3, 1)
Me!S4.Value = Mid(RS!MOTO, 4, 1)
Me!S5.Value = Mid(RS!MOTO, 5, 1)
'5桁の数字各々テキストボックス
'MOTOはテーブルにあるコード
'doevens
'Sleep 10
RS.MoveNext
Loop
End Sub
No.1
- 回答日時:
例えば、
検索項目を入力して、検索ボタン押下、それで検索に見合うデータを表示、
さらに
また
検索項目を入力して、検索ボタン押下、それで検索に見合う(違う)データを表示、
さらに
また
検索項目を入力して、検索ボタン押下、それで検索に見合う(違う)データを表示、
・・・・
はできます。
これをするには、「再クエリ」の実行が絡みます。
今仕掛りのはプログラミング的にはどんな仕掛けですか?。
>Formに反映されないのです。
何か表示されていると思いますが、1回目表示のものと何ら変わらず、ですか?。
この回答への補足
すみません、フォームでレコードソースを指定し
配置したテキステボックスのコントロールソースにテーブルのフィールドを
指定すればフォームに反映しますし、レコードセレクターでレコードを進めること
もできますが、
それをプログラムの中でフォームとテーブルをどうセットするか
がわからないのです。多分そこをおしえていただけたら解決すると思うのですが
レコードはMovenextしているようです。画面はかわりません最初のままです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- Google Drive Google form を利用して 問い合わせフォームを作りたい 1 2022/04/25 14:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Notesでアンケートをとりたい
-
Accessでaccdeへ変換で機能しない
-
Access「レコードの移動」マク...
-
エクセルVBA オプションボタ...
-
JW-CADのAutoモードの解除はで...
-
コマンドプロンプト使用時に「'...
-
エクセルVBA ユーザーフォーム...
-
USBメモリを丸ごと仮想イメージ...
-
access2000でカレンダーコント...
-
Accessでエラーメッセージの表...
-
コマンドボタンに色を付けるこ...
-
ユーザーフォームのスクロール...
-
アクセスで「モジュールがあり...
-
Autocad LT 引き出し線の上に文...
-
Access レポート印刷するときに...
-
YahooのIDがロックされてしまい...
-
データベースのINT型項目にNULL...
-
passwordが入れられません・・・・
-
エクセルをACCESSのレポ...
-
レコードを保存するコード ア...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA オプションボタ...
-
EXCEL VBAのユーザーフォームに...
-
ExcelVBAでセルをクリックして...
-
アクセスで「モジュールがあり...
-
コマンドプロンプト使用時に「'...
-
ACCESS フォームでの、データ...
-
標準モジュールだとエラーにな...
-
Accessでaccdeへ変換で機能しない
-
Notesでアンケートをとりたい
-
JW-CADのAutoモードの解除はで...
-
エクセルVBAからアクセスフ...
-
Accessでエラーメッセージの表...
-
Autocad LT 引き出し線の上に文...
-
ACCESS カンマをスペースに置...
-
ExcelVBAで指定外のUserFormを...
-
ユーザーフォームのスクロール...
-
access の 閉じるボタンを無効...
-
ACCESS フォームで、ボタンの...
-
USBメモリを丸ごと仮想イメージ...
-
エクセルVBA ユーザーフォーム...
おすすめ情報