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]

 

inserted by FC2 system