「未分類」カテゴリーアーカイブ

AccessVBAでクエリを実行

Visual Basic EditorでSQLステートメントを記述する場合、基本構文はSQLビューと同じですが、ステートメントの記述方法が少し違います。SQLステートメントは、VBAでは文字列として扱われます。そのためSQLステートメントをダブルクォーテーションで囲む必要があります。抽出条件が文字列の場合は、条件値をシングルクォーテーションで囲みます。

アクションクエリをVBAで実行するには、RunSQLメソッドを使います。

《書式》

DoCmd.RunSQL “SQLステートメント”

《設定例》

複数行に分ける場合、行ごとにダブルクォーテーションで囲み、アンパサンド(&)と、行継続文字を入力します。
行の終わりの文字とアンパサンドの前後には半角スペースを入力する必要があります。
下記例は、「T顧客マスタ」テーブルの「都道府県」が“東京都”のレコードを表示するというものです。

“SELECT * FROM T顧客マスタ” & _
“WHERE 都道府県 = ‘東京都 ‘”

《設定例》※SQL練習1.mdb の“F都道府県抽出”

次の例では、コンボボックス「都道府県」で指定した値で抽出し、リストボックスに
表示しています。
RowSourceプロパティを使うと、は連結していないデータをリストボックスに表示できます。

Private Sub 都道府県_AfterUpdate() Me!表示.RowSource = “SELECT * FROM T得意先マスタ ” & _
” WHERE 都道府県 = ‘” & Me!都道府県 & “‘” End Sub

アクションクエリの種類 

アクションクエリには4つの種類があります。

  1. 追加クエリ(INSERT INTO)
  2. 更新クエリ(UPDATE)
  3. 削除クエリ(DELETE)
  4. テーブル作成クエリ(SELECT INTO)

追加クエリ(レコードを登録する) 

《書式》

INSERT INTO 追加先テーブル名
SELECT フィールド名
FROM 追加元テーブル名
WHERE 条件式

フィールド名は、複数のフィールドを指定する場合はカンマで区切り、すべてのフィールドを指定する場合はアスタリスク(*)を入力します。
条件式は、「フィールド名 演算子 値」の形式で指定します。

《設定例》

次の例は、T商品マスタの備考フィールドが“限定品”のレコードを、「T限定品」テーブルに追加します。

DoCmd.RunSQL “INSERT INTO T限定品 SELECT * FROM T商品マスタ ” & _
“WHERE 備考 = ‘限定品'”

更新クエリ(レコードを更新する)

《書式》

UPDATE テーブル名
SET 更新する値
WHERE 条件式

《設定例》

‘T得意先マスタの「チェック」フィールドをすべてONにする
Dim SQL As String
SQL = “UPDATE T得意先マスタ ” & _
     ”SET チェック = On “
DoCmd.RunSQL SQL

削除クエリ(レコードを削除する)

削除クエリを使うと、指定条件を満たすレコードをテーブルから削除できます。

《書式》

DELETE FROM テーブル名
WHERE 条件式

《設定例》

次の例ではT得意先マスタの「顧客区分」フィールドの値が“D”のレコードを削除します。

Dim SQL As String

SQL = “DELETE FROM T得意先マスタ ” & _
     “WHERE 顧客区分 = ‘D’ “
DoCmd.RunSQL SQL

テーブル作成クエリ 

元のテーブルをコピーして新しいテーブルを作成します。

《書式》

SELECT フィールド名
INTO 新しいテーブル名
FROM 元のテーブル名
WHERE 条件式

《設定例》

「T得意先マスタ」テーブルで、都道府県が“埼玉県”のすべてのレコードをコピーして 「T顧客マスタ」テーブルを作成します。

Dim SQL As String
SQL = “SELECT * INTO T顧客マスタ ” & _
     “FROM T得意先マスタ ” & _
     “WHERE 都道府県 = ‘埼玉県'”
DoCmd.RunSQL SQL

SQL Server にTCP/IP接続する方法

SQL Server 構成マネージャ を起動します。


※注意:SQL Server 構成マネージャーは Microsoft 管理コンソール プログラムのス
ナップインであり、スタンドアロン プログラムではないため、
新しいバージョンの Windows では、 SQL Server 構成マネージャーは
アプリケーションとして表示されません。
Windows 10:>
SQL Server 構成マネージャーを開くには、 スタート画面で、
「SQLServerManager13.msc」( SQL Server 2016 (13.x)の場合) と入力します。
他のバージョンの SQL Server 場合、13 を対応する数値に置き換えます。
SQLServerManager13.msc をクリックすると、構成マネージャーが開きます。
スタート画面やタスク バーに構成マネージャーをピン留めするには、
SQLServerManager13.msc を右クリックして、 [ファイルの場所を開く] をクリック
します。 エクスプローラーでは、SQLServerManager13.msc を右クリックし、
[スタート画面にピン留め] または [タスクバーにピン留め] をクリックします。

Windows 8:>
SQL Server 構成マネージャーを開くには、検索チャームの [アプリ] で、
「SQLServerManager<バージョン>.msc」(「SQLServerManager13.msc」など) と
入力し、Enter キーを押します



ツリー表示部から[ SQL Server ネットワークの構成 ] - [ SQLEXPRESS のプロトコル ](インスタンス名) をクリックします。
右ペインにプロトコルの一覧が表示されますので[ TCP/IP ] を右クリックして「有効化」を選択します。

https://www.projectgroup.info/documents/MSSQL/MSSQL-20120002.html


Anaconda

Anaconda:
Pythonでよく利用されるライブラリを含んだ開発環境
scikit-learnも含まれている

scikit-learn:

pandas:(BSDライセンス)
    Pythonにおいて、データ解析を支援する機能を提供するライブラリである。
    特に、数表および時系列データを操作するためのデータ構造と演算を提供する

SQL Server のユーザー定義関数(スカラー値関数)確認

生成したユーザー定義関数は、SQL Server Management Studio の
プログラミング > 関数 > テーブル値関数 ・スカラー値関数の箇所で見つけることができます。

ユーザー定義関数の作成
・スカラー関数 (スカラー UDF)         ⇒RETURNS int
・インライン テーブル値関数 (TVF)       ⇒RETURNS TABLE
・複数ステートメント テーブル値関数 (MSTVF)  ⇒RETURNS @retFindReports TABLE

※ ユーザー定義関数は、データベースの状態を変更するアクションの実行に使用することはできません。

※ 出力先がテーブルである OUTPUT INTO 句をユーザー定義関数に含めることはできません。

※ SET ステートメントはユーザー定義関数では使用できません。

※ FOR XML 句は使用できません。

※ ユーザー定義関数はストアド プロシージャを呼び出すことができませんが、拡張ストアド プロシージャを呼び出すことはできます。

※ エラー処理は、ユーザー定義の関数では制限されます。
  UDF では TRY…CATCH、@ERROR、RAISERROR はいずれもサポートされません。

※ ユーザー定義関数は入れ子にすることができます。
  32 レベルまで入れ子にすることができます。

https://sql55.com/t-sql/t-sql-alter-drop-user-defined-function.php
https://docs.microsoft.com/ja-jp/sql/relational-databases/user-defined-functions/create-user-defined-functions-database-engine?view=sql-server-ver15

型文字(0♯)-VB-

♯記号などは、「リテラル」というもので型を
暗黙に示すもので、#はDouble型を示す。

Dim i as Double と宣言すれば i はDouble型に決まって
いますので♯は要らないが、
稀に Dim i as Variant(何でも型)と宣言したとき、i=1#とすると
Double型として明示代入ができる。
とはいえ、変数の中身が訳がわからなくなるので、こんな書き方は
通常はしない。プログラム文中を判りやすく見せているだけ。

<参照> 
型文字 (Visual Basic)

識別子の型文字 データの種類 例
% Integer Dim L%
& Long Dim M&
@ Decimal Const W@ = 37.5
! Single Dim Q!

# Double Dim X
$ String Dim V$ = “Secret”

https://docs.microsoft.com/ja-jp/dotnet/visual-basic/programming-guide/language-features/data-types/type-characters

砂時計の表示(Hourglass メソッド)


(1)マウスポインタの形状を砂時計にする
 DoCmd.Hourglass True/False
 
(2)いろいろな形状
 Screen.MousePointer = 値

【 値 】
0:規定値
1:矢印
3:I字型
7:上下の矢印
9:左右の矢印
11:砂時計

※これ以外の値を指定した場合は、規定値と同じ。

マウスポインタの形状を砂時計にする
DoCmd.Hourglass True
マウスポインタの形状を標準に戻す
DoCmd.Hourglass False
マウスポインタの形状を「I字型」に変える
Screen.MousePointer = 3
マウスポインタの形状を標準に戻す
Screen.MousePointer = 0

https://docs.microsoft.com/ja-jp/office/vba/api/access.docmd.hourglass
http://www.mtanabe.com/tips.php?tips_id=70

複数の値をフォームからレポートに渡す

●複数の値をフォームからレポートに渡す

https://blog.goo.ne.jp/shusei0815/e/3b120f0ca7226e011b9fec4003016b74
https://tsware.jp/tips/tips_648.htm

【フォーム側】

Dim strOpenArgs As String

‘別フォームに渡す引数を組み立てる(選択項目、タイトル、日付を渡す)
strOpenArgs = Nz(Me.cmb選択.Value, 0) & “,” & Nz(Me.txtタイトル.Value, 0) & “,” & Nz(Me.txt日付.Value, 0)

DoCmd.OpenReport “R_レポート1”, acViewPreview, , , , strOpenArgs)

【レポート側】
イベント・・・フォーマット (今回は、ページヘッダーセクションのフォーマットイベントです)
Private Sub ページヘッダーセクション_Format(Cancel As Integer, FormatCount As Integer)
Dim v As Variant

‘OpenArgsをカンマごとに分解して配列に格納する
v = Split(Nz(Me.OpenArgs), “,”)

Me.txt帳票タイプ = v(0) ‘タイトル(全体数/正袋数/端数)
Me.txtタイトル = v(1) ‘タイトル(製造計画/完成)
Me.txt製造日 = v(2) ‘製造日

End Sub