Access勉強(演算子,内部結合,データ型変換、フォーム,レポートの参照方法、他)

算術演算子

演算子意味
+-*/ ^+-×(乗算)÷(除算) ^(べき乗)
Mod除算の剰余(割り算の余り
割り算の商(割った結果

Modと¥をよく忘れてしまうのでメモ

演算子一覧表

https://support.microsoft.com/ja-jp/office/%E6%BC%94%E7%AE%97%E5%AD%90%E4%B8%80%E8%A6%A7%E8%A1%A8-e1bc04d5-8b76-429f-a252-e9223117d6bd

文字列Likeの抽出条件

Like 抽出条件を使ってデータを探す

https://support.microsoft.com/ja-jp/office/like-%E6%8A%BD%E5%87%BA%E6%9D%A1%E4%BB%B6%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E6%8E%A2%E3%81%99-65b07c8a-b314-435a-8b48-2b911856d4f9

文字パターン意味
?任意の一文字
*任意の文字列
#任意の一文字の数字
[文字列] [! 文字列]文字列内の一文字 !の方は文字列内以外の一文字
https://support.microsoft.com/ja-jp/office/like-%E6%8A%BD%E5%87%BA%E6%9D%A1%E4%BB%B6%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E6%8E%A2%E3%81%99-65b07c8a-b314-435a-8b48-2b911856d4f9

内部結合 (INNER JOIN)

構文
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

SQL INNER JOIN Keyword

https://www.w3schools.com/sql/sql_join_inner.asp

内部結合と外部結合の違い

https://medium-company.com/%E5%86%85%E9%83%A8%E7%B5%90%E5%90%88-%E5%A4%96%E9%83%A8%E7%B5%90%E5%90%88-%E9%81%95%E3%81%84/

 内部結合とは両方のテーブルに共通する列があった場合に両方のテーブルの行を結合して表示する事。片方にしかない行は表示されない。table1とtable2を結合。column_name(s)は列名の意味。共通の列を( ON table1.column_name = table2.column_name)という風に書く。

''記述例
' まず「Qクエリ」というクエリを作っておく。
' Tテーブルに列名AとBがあり、Tテーブル2に列名B,Cがある。それぞれを結合する。列ABCの表が完成
' 
'Dim strSQLIJ As String
'strSQLIJ = "SELECT A, B " & _
'           "FROM Tテーブル" & _
'           "INNER JOIN Tテーブル2 " & _
'           "ON Tテーブル.B = Tテーブル2.B;" 
' CurrentDb.QueryDefs("Qクエリ").SQL = strSQLIJ 
'' DoCmd.SetWarings False
' DoCmd.OpenQuery "Qクエリ"
'' DoCmd.SetWarnings True

内部結合(WHERE)

SQL WHERE Clause
SELECT column1, column2, …
FROM table_name
WHERE condition;

The SQL WHERE Clause

https://www.w3schools.com/sql/sql_where.asp

 condition がINNER JOINの( ON table1.column_name = table2.column_name)に該当。SELECTの中に出来上がる表のイメージを書くのでこちらの方が分かりやすいかも。WHEREに条件を書くので条件にがいとうしない行は表示されないという事もこっちの方が分かりやすい。

''記述例
' まず「Qクエリ」というクエリを作っておく。
' Tテーブルに列名AとBがあり、Tテーブル2に列名B,Cがある。それぞれを結合する。列ABCの表が完成
' 両方のテーブルに持っているものはTテーブル.Bのように書く。
'Dim strSQLWH As String
'strSQLWH = "SELECT A, Tテーブル.B, C" & _
'           "FROM Tテーブル, Tテーブル2" & _
'           "WHERE Tテーブル.B = Tテーブル2.B;" 
' CurrentDb.QueryDefs("Qクエリ").SQL = strSQLWH
'' DoCmd.SetWarings False
' DoCmd.OpenQuery "Qクエリ"
'' DoCmd.SetWarnings True

データ型変換関数(CDate他)

構文
CDate(expression)

データ型変換関数

https://docs.microsoft.com/ja-jp/office/vba/language/concepts/getting-started/type-conversion-functions

expressionのところに変更したい値を入れる。頭にCがつく。

''記述例
''「コントロールパネル」→「時計と地域」→「日付、時刻、数値形式の設定」
''で開いたウインドウの「日付(短い形式)」で指定された形式に変更される。
'MsgBox CDate("令和4年9月3日")
'

フォーム・レポートの参照方法

'Forms("フォーム名")
'Forms!フォーム名
'Forms![フォーム名]
'Forms.フォーム名

レポートの場合も同様。どの書き方もOK。一番下の書き方が楽な気がする。Sheets(“シート名”)みたいな書き方とそろえるなら一番上もいい。

Subプロシージャ,Functionプロシージャの違い

Functionプロシージャは戻り値(処理の結果)を返すことが出来る。プロシージャからプロシージャへの値(引数)はどちらも渡せる。

sql分 UPDATE SET

UPDATE table_name
SET column1 = value1, column2 = value2, …
WHERE condition;

The SQL UPDATE Statement

https://www.w3schools.com/sql/sql_update.asp
''記述例
' まず「Qクエリ」というクエリを作っておく。
' Tテーブルに列名AとBがあり 列Bに一律 1を足す場合 (WHEREを省略)

'Dim strSQLUD As String
'strSQLUD = "UPDATE Tテーブル" & _
'           "SET B = B + 1;" & _ 
' CurrentDb.QueryDefs("Qクエリ").SQL = strSQLUD
'' DoCmd.SetWarings False
' DoCmd.OpenQuery "Qクエリ"
'' DoCmd.SetWarnings True

コメントする

メールアドレスが公開されることはありません。

CAPTCHA