雑なメモ(無保証)

Microsoft Access


Rev.29を表示中。最新版はこちら

文字を入力してレコードを検索

2006/04/18
1.とりあえず、検索対象のテーブルからオートフォームでフォームを作っとく。
2.検索文字を入力するテキストエリアを追加。
3.以下のコードをイベントプロシージャに記述する。

Private Sub SearchKey_Exit(Cancel As Integer)
   Dim rs As Recordset
   Set rs = Me.RecordsetClone
       
   rs.FindFirst "[検索対象フィールド] = " & SearchKey
   
   If rs.NoMatch Then
       Beep
       MsgBox ("該当するレコードがありません")
   Else
       Me.Bookmark = rs.Bookmark
   End If
      
   rs.Close

End Sub


SearchKey_Exitはフォーカスが移動したあと実行される関数らしい。
FindFirstはレコードを先頭から検索する関数。
検索対象フィールドの後ろの「=」が入る理由がわからないがこれで良いらしい。
検索対象と検索文字は同じ型じゃないと検索できない。
「BookMark」は現在の表示対象レコードをさしてるらしい。
「rs」はクローン?らしいんで、「Me」(現在表示しているフォーム)に代入しないといけないらしい。


サブレポートで並び替え

2006/04/18
クエリを作ってそこで並び替えを行い、クエリでサブレポートを作るとできる。
(もっといい方法があるかも)

クエリでテーブルの先頭5レコードのみ抽出する

2006/04/18
クエリのデザインビューの画面で、下半分の領域を選択し、
右クリック→プロパティで、クエリプロパティが表示されるので、
[トップ値]に5を指定。


サブフォームのデータを並び替える

2006/04/18
サブフォームのイベント「開く時」に以下のVBAコードを追加。
Private Sub Form_Open(Cancel As Integer)
Me.OrderBy = "(並べ替え項目)"
Me.OrderByOn = True
End Sub

降順にしたいときは、
Me.OrderBy = "(並べ替え項目) DESC"
とする。


年齢自動計算

2006/04/14
イベントプロシージャで[生年月日]ボックスに値が入力された後、[年齢]ボックスに計算した年齢を入れる。

[生年月日]ボックスに以下のVBAコードを設定する

Private Sub 生年月日_Exit(Cancel As Integer)
If IsNull(Me!生年月日) Then
GoTo exit_shori
End If
Me!年齢 = DateDiff("yyyy", Me!生年月日, Date)
If Format(Me!生年月日 - 1, "mm/dd") > Format(Date, "mm/dd") Then
Me!年齢 = Me!年齢 - 1
End If
exit_shori:
End Sub

年齢テキストボックスは[編集ロック=はい]にして編集されるのを防ぐ。
編集ロックはタブオーダー設定されているとできないみたいなので、年齢テキストボックスのタブオーダーをはずしておく。


サブテーブルを作る

2006/04/11
テーブルのデータシートビューでメニューの[挿入]-[サブデータシート]を実行。
すると、なんかテーブルの選択画面が出てくるので、挿入するテーブルを選ぶ。
「リンク子フィールド」と「リンク親フィールド」は、
なんか関連付けするフィールドみたいなので、
それぞれが対応しているフィールドを選ぶ。
データシートビューでは、一個しか指定できない。
フォームだと何個でも貼り付けられるみたい。

フォームにサブフォーム(サブデータ)を貼り付けるときは、
フォームをデザインビューで開いて、窓の左端に出てきたツールバーから、
「サブフォーム/サブレポート」をクリクリッ。
窓が出てくるので、貼り付けたいフォームを選んで、
あとは、なんか聞いてくるけど、そのままOK!

で完成。


郵便番号から住所を自動で入力させる

2006/04/11
テーブルのデザインビューで「郵便番号」とかの項目を選択後、
下のほうにある標準タブから「住所入力支援」をクリクリッ。
右側に出てきた「・・・」ボタンを押すとウィザードが立ち上がるので
後は、指示に従うだけで完成。まぁ、便利2!

漢字で名前を入力すると振り仮名を自動で入力させる

2006/04/11
テーブルのデザインビューで「氏名」とかの項目を選択後、
下のほうにある標準タブから「ふりがな」をクリクリッ。
右側に出てきた「・・・」ボタンを押すとウィザードが立ち上がるので
後は、指示に従うだけで完成。まぁ、便利!

自動的に番号を振る

2006/04/04
フォームのイベントタグで実現してみた。
イベントタブ内にあるトリガを選択して下記のコードを追加。

Me!No = DMAX("No","TableA") + 1

これだけ。
フォーム内の「No」テキストボックスに、「TableA」の中の
「No」フィールド中で一番大きい数字を取り出して1加算して
代入。

ところで、トリガの名称で「ダーティー時」ってあるんだけど、
「汚れた時」?「入力時」の方がしっくり来るんですけど。。。


FrontPageへ戻る

最終更新 2006/05/25 00:26:18 - llinfo_arp
(2006/04/05 15:10:57 作成)


Amazon