Access tips
access
多分自分しかわからないマニュアル
yes noボタン
Private Sub レコード追加ボタン_Click()
Dim Result As Integer
Result = MsgBox("入力月を追加します。", vbYesNo + vbDefaultButton2 + vbQuestion,
"入力月追加")
If Result = vbYes Then
'警告ダイアログをOFF
DoCmd.SetWarnings False
'クエリを開く(実行する)
DoCmd.OpenQuery "Q_2台数入力テーブル追加用"
DoCmd.Requery
'警告ダイアログをON(戻す)
DoCmd.SetWarnings True
End If
End Sub
テキストボックスの値でテーブルaを検索し、該当テーブルをテーブルbにコピー
Private Sub コマンド9_Click()
'------------オブジェクト変数の宣言
Dim db As ADODB.Connection
Dim rs As ADODB.Recordset 'T_H発番
Dim rs2 As ADODB.Recordset '台数入力
Dim rs3 As ADODB.Recordset 'T_4集計一時保存
'-------------オブジェクト変数へ代入
Set db = Application.CurrentProject.Connection
Set rs = New ADODB.Recordset
Set rs3 = New ADODB.Recordset
rs.Open "T_H発番", db, adOpenKeyset, adLockReadOnly
rs3.Open "T_4集計一時保存", db, adOpenKeyset, adLockOptimistic
rs.Find "担当コード = '" & 集計担当 & "'"
rs.MoveFirst
Do Until rs.EOF
rs3.AddNew
rs3!管理図番号 = rs!管理図番号
rs3!管理番号 = rs!管理番号
rs3!担当コード = rs!担当コード
rs3!図番 = rs!図番
rs3!機種 = rs!機種
rs3!得コード = rs!得コード
rs3!グループコード = rs!グループコード
rs3!受注単価 = rs!受注単価
rs3!発注台数 = rs!発注台数
rs3.Update
rs.MoveNext
Loop
rs.Close: Set rs = Nothing
rs3.Close: Set rs3 = Nothing
db.Close: Set db = Nothing
End Sub
値の代入
テキストボックス = 100 数値
テキストボックス = "日本" 文字
テキストボックス = #12/31/2007# 日付
テキストボックス = dateadd("m",
-1, #12/31/2007#) 対象の日付から-1月
日にちの場合は "D"
rs!管理番号 = Me!管理番号月 & "-" & Me!管理番号連
H12-126 = H12 - 126
入力値のチェック
If Len(Me.商品ID.Value) <> 4 Then
MsgBox "商品マスターは4桁入力です。", vbExclamation
Cancel = True
Exit Sub
End If
商品IDの入力桁数をLen( )関数で調べて4桁でなかったらエラーメッセージを表示します。
次にCancelにTrueを設定してこのイベントを終了します。
Me.とは、自フォームのことを指します。 プロジェクト画面にある自フォーム名を指定しても同じですが、Me.のほうがわかりやすいと思います。
If IsNull(Me.商品名.Value) Then
MsgBox "商品名は必須入力です。", vbExclamation
Cancel = True
Exit Sub
End If
商品名をIsNull( )関数で調べてデータが入力されているかどうか調べます。
If Not (Me.テキスト0 > 1 And Me.テキスト0 < 999) Then
MsgBox "得コードは1から999です。", vbExclamation
Cancel = True
Exit Sub
End If
テキスト0 が1から999の間で入力されているかどうか調べます。
なお、この検査方法では未入力は正常データとなります。 よって、未入力もエラーとしたい場合はデータが入力されているかどうかのチェックも行う必要があります。
管理番号月内での管理番号最大値取得し、連番をふる
H05-10 ⇒ 管理番号月-管理番号連
クエリー"SQL管理番号連番最大値書出用"は、テキストボックス"管理番号月"を参照し、その月の最大値
を取得し+1する。
Dlookup("フィールド名", "クエリ名")
Me![管理番号連] = Format(DLookup("管理番号連の最大", "SQL管理番号連番最大値書出用"),
"000")
テーブル追加
Private Sub 新規登録_Click()
Dim DB As ADODB.Connection
Dim rs As ADODB.Recordset
'データベースのオープン(データベースオブジェクトの作成)
Set DB = CurrentProject.Connection
'テーブルのオープン(レコードセットの作成)
Set rs = New ADODB.Recordset
rs.Open "T_MASTER", DB, adOpenKeyset, adLockOptimistic
'未入力のチェック
If IsNull(Me.フリガナ) Then
MsgBox "フリガナと電話番号は入力必須項目です"
End If
If IsNull(Me.TEL) Then
MsgBox "フリガナと電話番号は入力必須項目です"
End If
'重複チェック
'追加
rs.AddNew
rs!フリガナ = Me!フリガナ
rs!仕入先名 = Me!仕入先名
rs!郵便番号 = Me!郵便番号
rs!都道府県 = Me!都道府県
rs!住所1 = Me!住所1
rs!住所2 = Me!住所2
rs!代表役職名 = Me!代表役職名
rs!代表者氏名 = Me!代表者氏名
rs!TEL = Me!TEL
rs!FAX = Me!FAX
rs!備考 = Me!備考
rs.Update
'テキストボックスを空にする
Me!フリガナ = Null
Me!仕入先名 = Null
Me!郵便番号 = Null
Me!都道府県 = Null
Me!住所1 = Null
Me!住所2 = Null
Me!代表役職名 = Null
Me!代表者氏名 = Null
Me!TEL = Null
Me!FAX = Null
Me!備考 = Null
'テーブルのクローズ
rs.Close: Set rs = Nothing
'データベースのクローズ
DB.Close: Set DB = Nothing
End Sub
テキストボックス更新後処理に半角全角変換
'全角カタカナ変換
Me![フリガナ] = StrConv(Me![フリガナ], vbWide)
Me![フリガナ] = StrConv(Me![フリガナ], vbKatakana)
Dcount
'重複チェック群が数字型
If DCount("得コード", "T_得コードマスター", "得コード=" &
Me!得コード) <> 0 Then
Me.得コード = Null
Me.担当コード.SetFocus
Me.得コード.SetFocus
MsgBox "重複しています"
'重複チェック群が文字列
If DCount("フリガナ", "T_MASTER", "フリガナ='" & Me!フリガナ
& "'") <> 0 Then
Me.フリガナ = Null
Me.仕入先名.SetFocus
Me.フリガナ.SetFocus
MsgBox "重複しています"
End If
フォームのテキストBOXに条件に合うレーコード件数をカウントしたい
例 [酒類]の中の(ワイン)だけ
=Sum(IIf([酒類]="ワイン", 1, 0))
カラーパレット(office)
カレンダーコントロール さんぷる
挿入⇒activeXコントロール で カレンダーコントロール9.0 を選択
カレンダーコントロールクリック時のイベントに
Private Sub ActiveXコントロール3_Click()
Me.hiduke = Me.ActiveXコントロール3.Value
Me.Requery
End Sub
クエリーの抽出をカレンダーから取得
[Forms]![F_カレンダー]![ActiveXコントロール3].[Value]