アクセス講座
トップ > プログラム制御
Private Sub コマンド0_Click() Dim db As Database 'データベースを宣言 Dim rs As Recordset 'レコードセットを宣言 Set db = CurrentDb '開いているmdbのアドレスを入れる Set rs = db.OpenRecordset("select * FROM T_ひらがな") 'SQL文により、情報を入れる rs.MoveFirst '先頭行へ移動 Do Until rs.EOF 'ループ Debug.Print rs!データ 'データフィールドに入っているデータをイミデイトウィンドウに表示 rs.MoveNext '次の行へ Loop End Sub |
コメント挿入で説明。 |
■VBAにSQL文を直接書く
db.Executeを使用することで、SQL文を書くことができる。
Private Sub コマンド0_Click() Dim db As Database 'データベースを宣言 Set db = CurrentDb '開いているmdbのアドレスを入れる db.Execute ("insert into T_空データ select * FROM T_ひらがな") End Sub |
コメント挿入で説明。 |
Private Sub コマンド0_Click() Dim QDef As QueryDef '宣言 Set QDef = db.QueryDefs("Q_パススルー") 'クエリに命令を書く(パススルー) QDef.SQL = "TRUNCATE TABLE T_テーブルデータ" QDef.Connect = "ODBC;DSN=DB1;UID=administrator;DATABASE=DB1;Trusted_Connection=Yes;AnsiNPW=No" QDef.ReturnsRecords = False QDef.Execute Set QDef = Nothing End Sub |
データベース名:DB1 ユーザID:administrator TRUNCATE TABLEはバックアップを取得しないため動作が速い。しかし、アクセスでは採用されていないので、 このようにすることがある。 |
Private Sub コマンド0_Click() Dim stDate As Date Dim i As Long stDate = Now() For i = 1 To 100000 テキスト1 = F_残り時間(stDate, Now(), 100000, i) '処理時間を表示 Next i End Sub Private Function F_残り時間(ByVal stDate As Date, ByVal nowDate As Date, ByVal max As Long, ByVal cur As Long) As String Dim 経過秒 As Long Dim 残秒 As Long Dim 秒 As Long Dim 分 As Long Dim 時間 As Long 'エラー時は処理抜け On Error Resume Next 経過秒 = DateDiff("s", stDate, nowDate) '時間差(秒)を計算 残秒 = 経過秒 * max / cur - 経過秒 秒 = 残秒 分 = Int(秒 / 60) 秒 = 秒 Mod 60 時間 = Int(分 / 60) 分 = 分 Mod 60 F_残り時間 = "残り 約" & 時間 & "時間" & 分 & "分" & 秒 & "秒" End Function |
コメント挿入で説明。 |
Private Sub コマンド0_Click() 'フィールド名、テーブル名、条件 テキスト1 = DCount("*", "T_テーブル","ID = 10") End Sub |
IDが"10"であるデータ数を取得する。 |
Private Sub コマンド0_Click() 'フィールド名、テーブル名、条件 テキスト1 = DLookUp("データ", "T_テーブル","ID = 10") End Sub |
IDが"10"であるデータを取得する。 |