「Access2003」の「イベントプロシージヤ」



◇-?「Access2003」の「イベントプロシージヤ」-しん(2005/1/26-13:15)No.232424
 ┣?!Re:「Access2003」の...-unknown(2005/1/27-00:29)No.232583
 ┗?【解決】Re:「Access200...-しん(2005/1/28-10:41)No.232898

▲このページのトップに戻る
232424「Access2003」の「イベントプロシージヤ」しん 2005/1/26-13:15

メーカー名:東芝
OS名:WindowsXp HomeEdition
パソコン名:PAEX522PDE3
ソフト関連:ソフトを組み込んだが動かない
使用回線:ADSL
--
下記は抜粋したものですが、その中で
「' フオームにイベントを組み込む」この部分を使用しなければ
プログラムは正常に作動します。
しかし
「'フオームを描く」の中の
.OnTimer = "=my()"
の部分を削除して

先ほどの
「' フオームにイベントを組み込む」を生かすと正常に作動しません

原因、対処方法をどなたか聞かせて下さい。
お願いいたします。

+++++++++++++++++++++++++++++++++++++
Option Compare Database
Option Explicit
Private pmyFrm As Form
Private pHour As Control '時刻表示

Sub CLOCK()
Dim myfrm As Form
Dim myModule As Module
Dim ctlLabel As Control
Dim myctl As Control
Dim frmName As String
Dim frmEvent As String
'*****************************************************
'フオームを描く
Set myfrm = CreateForm
With myfrm
.OnTimer = "=my()"
.TimerInterval = 1000
End With
'*****************************************************
' 表示枠を描く(時刻表示)
Set ctlLabel = CreateControl(myfrm.Name, acLabel)
With ctlLabel
.Name = "時刻"
.Caption = "00000000"
.FontSize = 72
.SizeToFit
End With
'*****************************************問題の部分ここから******
' フオームにイベントを組み込む
'frmEvent = "Private Sub Form_Timer()" & vbCrLf & _
" Me!pHour.Caption = Time" & vbCrLf & _
"End Sub"

' Set myModule = myfrm.Module
' myModule.InsertText frmEvent
' myModule.InsertLines 3, vbTab & "Private pHour As Integer"
'******************************************問題の部分ここまで******
' フオームを開く
frmName = myfrm.Name
DoCmd.OpenForm myfrm.Name
DoCmd.Maximize
'*****************************************************
' 開いたFormからフオーム名とコントロール名を得る
Set pmyFrm = Forms(frmName)
For Each myctl In pmyFrm.Controls
If myctl.Name = "時刻" Then Set pHour = myctl
Next
End Sub

++++++++++++++++++++++++++++++++++
Function my()
pHour.Caption = Time
End Function

▲このページのトップに戻る
232583Re:「Access2003」の「イベントプロシージヤ」unknown 2005/1/27-00:29
記事番号232424へのコメント
しんさんは No.232424「「Access2003」の「イベントプロシージヤ」」で書きました。
>下記は抜粋したものですが、その中で
>「' フオームにイベントを組み込む」この部分を使用しなければ
>プログラムは正常に作動します。
>しかし
>「'フオームを描く」の中の
> .OnTimer = "=my()"
>の部分を削除して
>
>先ほどの
>「' フオームにイベントを組み込む」を生かすと正常に作動しません
>
>原因、対処方法をどなたか聞かせて下さい。
>お願いいたします。

参考程度です。自信無し。

Access2000では下記で時刻表示するようです。

'*****************************************問題の部分ここから******
' フオームにイベントを組み込む
' Me!を修正。コントロールの指定を変数で渡せなかったような気が、、、
frmEvent = "Private Sub Form_Timer()" & vbCrLf & _
" Me![時刻].Caption = Time" & vbCrLf & _
"End Sub"
Set myModule = myfrm.Module
myModule.InsertText frmEvent
myModule.InsertLines 3, vbTab & "Private pHour As Integer"
'******************************************問題の部分ここまで******

ただし、“pHour”にSetされるかは未検証です(汗

.OnTimer="=my()"
はうまく動作しない、、、むぅぅ。

▲このページのトップに戻る
232898Re:「Access2003」の「イベントプロシージヤ」しん 2005/1/28-10:41
記事番号232424へのコメント
しんさんは No.232424「「Access2003」の「イベントプロシージヤ」」で書きました。
>メーカー名:東芝
>OS名:WindowsXp HomeEdition
>パソコン名:PAEX522PDE3
>ソフト関連:ソフトを組み込んだが動かない
>使用回線:ADSL
>--
>下記は抜粋したものですが、その中で
>
>+++++++++++++++++++++++++++++++++++++
早速の御指導有難うございます。

色々試してみました、結果、基本的には下記のコーテイングで行ってみます。

Sub Clock_4()
Dim myfrm As Form
Dim myModule As Module
Dim myLabel As Control
'*****************************************************
' フオームを描く
Set myfrm = CreateForm
With myfrm
.TimerInterval = 1000
End With
'*****************************************************
' 表示枠を描く(時刻表示)
Set myLabel = CreateControl(myfrm.Name, acLabel)
With myLabel
.Name = "時刻"
.Caption = "00000000"
.FontSize = 127
.SizeToFit
End With
'*****************************************************
' フオームにイベントを組み込む
Set myModule = myfrm.Module
myModule.InsertText "Private Sub Form_Timer()" & vbCrLf & _
"時刻.Caption = Time" & vbCrLf & "End Sub"
'*****************************************************
' フオームを開く
DoCmd.OpenForm myfrm.Name
End Sub

++++++++++++++++++++++++++++++++++++
(1)「pHour」 の部分 を 「時刻」に変更
(2)Me!時刻 は 時刻 だけでも 正常に作動する
こんな事を学びました。
色々有難うございました

+++++++++++++++++++++++++++++++++++
また、下記の方法でも正常に作動しました

Private pmyFrm As Form
Private pHour As Control '時刻表示

Sub Clock_3()
Dim myfrm As Form
Dim ctlLabel As Control
Dim myctl As Control
Dim frmName As String
'*****************************************************
'フオームを描く
Set myfrm = CreateForm
With myfrm
.OnTimer = "=myff()"
.TimerInterval = 1000
End With
'*****************************************************
' 表示枠を描く(時刻表示)
Set ctlLabel = CreateControl(myfrm.Name, acLabel)
With ctlLabel
.Name = "時刻"
.Caption = "00000000"
.FontSize = 127
.SizeToFit
End With
'*****************************************************
' フオームを開く
frmName = myfrm.Name
DoCmd.OpenForm myfrm.Name
DoCmd.Maximize
'*****************************************************
' 開いたFormからフオーム名とコントロール名を得る
Set pmyFrm = Forms(frmName)
For Each myctl In pmyFrm.Controls
If myctl.Name = "時刻" Then Set pHour = myctl
Next
End Sub

Function myff()
pHour.Caption = Time
End Function


A1.本ページは参考になりましたか? 又はアドバイスがありますか?
解決 参考になった 参考にならなかった アドバイスする

A2.何度目の訪問ですか?
初めて来た   数度目(2〜4) 5回以上来ている   管理人:

A3.何か一言どうぞ(アドレスは書くことができません)

A4.アドレスがあればどうぞ(1つまで)


↑↑↑↑よろしければ押してください↑↑↑↑

何か一言(本ページで参考になったならないを含めて残してあります)
◎:解決 ○:参考になった ×:参考にならなかった !:アドバイスあり

参考回数投稿日時何か一言