2023.07.01以前に改修した神エクセル帳票の記入項目を見直し、データベースに登録する項目をピックアップします。テーブルレイアウトを決めてデータ定義書を作成し、CREATE文の出力機能を搭載してみました。改修神エクセル帳票の記入項目からデータベースに登録する項目をピックアップし、データ定義書を作成してみたいと思います。帳票の記入項目からDB登録項目のピックアップ帳票は、以前の記事「神エクセルを改修してみる」で、改修したユーザID登録申請書(図1)を活用したいと思います。本帳票の記入項目から、データベースに登録する項目をピックアップします。図1:改修したユーザID登録申請書全体(#1:申請者記入欄と#2:説明事項と運営者記入欄)キャプチャ改修したユーザID登録申請書には、利用する記入項目を抽出し、登録先のDBレイアウトに沿って並べる体で、帳票欄外に申請書データ抽出欄が設けられています(図2)。都合が良いので、図2の抽出項目を登録対象としてデータの整備を行って行きたいと思います。図2:申請書データ抽出欄、長いので上下段に分けて掲載、実際は登録先のDBレイアウトに倣って、一行にまとまめられています表1は、改修したユーザID登録申請書の各入力欄(図1)と、申請書データ抽出欄(図2)の各カラム名の対応表です。表1からデータベースに登録する項目をピックアップします。No1:誓約は申請受理の前提で、ユーザID登録申請書本体の「情報セキュリティに関する誓約」のチェックボックスがONの状態で、誓約書の役割を果たすので、登録項目ではない(抽出データ一式の登録可/不可判定の為、取得はする)。No2~No16は、ユーザID登録に必須な情報の為、データベース登録項目とします。※カラム値は入力欄をセル参照して取得し、チェックボックス・ラジオボタンは、選択値を直接データ抽出欄に出力するテーブルレイアウトの決定とデータ定義書の作成ここ迄の経緯を踏まえて、表1のNo2~No16を記載順にExcel上に展開して、テーブルレイアウトとし、各項目に項目名、データ型、桁数、主キー設定等を追加し、帳票から抽出したデータを、ユーザID情報テーブルにまとめて登録する体で、データ定義書を作成しました(図3)。※図3:No16~18は内部データ管理用に追加したカラムです。図3:ユーザID情報テーブルのテーブルレイアウト(#1)と各項目のデータ定義(#2)図3:ユーザID情報テーブルのデータ定義で黄色く着色した列が、実際のデータ処理に使う項目です。黄緑色に着色したNo列の項番は、各項目のデータ取得に使う為、連番を振ってあります。データ定義書にCREATE文出力機能を搭載する一般にデータ定義書は、対象テーブルのテーブルレイアウトに準じて記載されているのて、そのことを利用し、記載データを使ってCREATE文を出力する機能が付いていることが多いです。本定義書にも、図3の着色列を利用し、CREATE文を出力する機能を搭載してみました。データ定義書はExcelで作ったので、CREATE文を出力する機能は、ExcelVBAにて実装しました。汎用的に使えるように、CREATE文は標準SQL構文で出力する仕様とします。これらを踏まえて、参考サイト(デザインポケット:VBAでテーブル仕様書からDLL文を自動生成する)の掲載コード等を手本にして、以下のようなコードを作成しました。"Create文の出力が終わりました。Sub以上が「main」ルーチンです。プログラムの概要は、以下のようになります。現行のデータ定義シートとデータ定義書のフォルダパス(出力先フォルダパス)を取得するCREATE文出力サブルーチンを呼出し、データ定義シートと出力先フォルダパスを渡すCREATE文の出力を通知し、出力先フォルダを開くmainルーチンのコード構成は、参考サイトに倣ったもので、典型的なパラメータの受け渡しかしていないので、出力先フォルダを開くのに使った、Shell関数だけ説明します。windowstyle(オプション))として記載されています。0)、pathname:指定プログラム(パス指定含む)、windowstyle:省略可能(オプション)。(Integer)値。指定省略時、プログラムがフォーカスを持った状態で最小化されて起動する。windowstyle(オプション)のように戻り値を聴かず、外部関数のような使い方をすることが多いです。今回は、データ定義書と同じフォルダに、自身で作成したSQLファイルを出力する為、不確定要素がないので、こちらの使い方に倣い、上記「main」ルーチンコード欄の17行目、以下のような記述になりました。Sub以上が「mk_Create_statement」サブルーチンです。プログラムの概要は、以下のようになります。上記「mk_Create_statement」サブルーチンコード欄の6行目のサブルーチン定義の通りです。mainルーチン13行目のサブルーチン呼出しから、引数で受動的に渡されてきます。mainルーチンから出力先フォルダパスを受け取るString型引数データ定義シートからテーブルIDを取得サブルーチンコード欄の33行目にてデータ定義シートから取得しています。テーブルIDを受けるString型変数SQLファイル名の設定サブルーチンコード欄の36行目で、出力するSQLファイル名を設定しています。“.sql”」で、出力先明示の為、フルパス付きで設定しています。String型変数、ファイル名格納例(”C:\temp\Create_T_UIDINFO.sql”)出力先フォルダにSQLファイル(CREATE文)を出力サブルーチンコード欄の40行目で未使用のファイル番号を取得し、41行目で取得したファイル番号に、ファイル設定を紐づけてOpenします。同時に出力先フォルダに、設定したファイル名で出力されます。以下の範囲のファイル番号を返します。以下の範囲のファイル番号を返します。TABLE文を作成サブルーチンコード欄の44~116行で、データ定義シートからテーブルレイアウトと各項目の定義情報を取得してCREATE文として編集し、SQLファイルに出力しています。TABLE文の編集を開始します。以降、汎用的に使えるように、標準SQL構文で出力します。TABLE文編集のメイン処理です。ループ文のコードが長い為、各処理ごとにブロック分けして、一部簡略化して説明します。Whileループの開始で、データ定義シートのNo列(図3)について、項番の存在チェックを行い、No列に記入された項番分、ループ処理を行います。処理開始行については、30行目で設定しています。初期値)を取得しています。“〇”)がある行のカラムID(clmID)を、主キー格納配列(pkarray(30))に収集し主キーカウンタ(pkcount)をカウントアップしています。データ型編集コード欄の69~79行で、データ定義シートのデータ型/桁数列(図3#2)から、データ型(clmtype)/桁数(clmleng)を取得し、処理行のデータ型に対応した定義書式に編集しています。扱うデータ型は、VARCHAR、INTEGER、DATE型のみを想定しています。初期値編集(指定時のみ)コード欄の82~84行で、データ定義シートの初期値列(図3#2)に値指定がある行の項目に、初期値(clmval)設定を追記します。NULL”指定を追記します。カラム毎のカンマ区切りコード欄の92~93行で、編集が終わった各項目の先頭に字下げ(空白)を追記し、末尾に区切り(カンマ)を追記します。主キー情報の編集サブルーチンコード欄の99~111行で、主キー指定項目について、主キー制約を追記します。KEY~)を編集し、先に出力したCREATE文に追記します。KEY~)の編集開始コード欄の100行目から、主キー制約設定に”テーブルID_PK”と名前を付けて、編集を開始します。主キー制約設定項目の編集開始コード欄の101~108行で、主キー制約を設定する各項目の末尾に、区切り(カンマ)を追記して出力します。主キー格納配列(pkarray(30))を展開し、各項目毎に出力する。TABLE文出力の終わったSQLファイルを閉じるデータ定義書に搭載した機能のテストCreate文出力ボタンの追加データ定義シートに「Create文出力」ボタンを追加し、mainルーチンを関連付けます。クリックイベント(CreateTable_Click)を選択したら、マクロの保存先に「作業中のブック」を選択して、OKをクリック図4:「Create文出力」ボタンを追加し、mainルーチンに関連図ける手順Create文を出力するデータ定義シートに「Create文出力」ボタンを押下し、CREATE文を出力します(図5)。「Create文出力の出力が終わりました。“.sql”)で、SQLファイルが作成(Create_T_UIDINFO.sql)されている事を確認します(図6)。図6:「Create文出力の出力が終わりました。作成したSQLファイル(Create_T_UIDINFO.sql)のCreate文の以下出力内容と、図3のデータ定義書の設定内容を見比べて、仕様通りCREATE文が出力されている事を確認します。(user_id))作成したデータ定義書のダウンロード今回作成したデータ定義書は、以下の通りです。Developerプログラムを活用して、RHELのISOファイルを取得しました。今回は、取得したISOファイルを使い、Hyper-V環境にRHELをインストールした時の記録から、Hyper-V環境に仮想マシンを作成し、RHELインストール用の設定を行うまでの手順をまとめました。ソフトウェア改修神エクセルの活用:DB準備(Access)改修した神エクセル帳票から回収したデータを格納するため、今回は、Officeの構成アプリとして企業のPCに良く入っている、Accessを使ってデータベースを作成します。Mk-2を使って外部から空のDBファイルを操作し、遠隔操作っぽくデータ格納用のテーブルを作ってみます。Developerを試す(RHELの初期設定)前回はHyper-V環境の仮想マシンに、ISOファイルからRHELのインストールを行いました。今回はインストールしたRHELを起動し、初期設定を完了させるまでの手順をまとめました。WordPress別記事の特定図表へリンクを張る記事を書いていて、過去記事に掲載した図表を参照してもらいたい時、以前に、HTMLアンカー、目次を利用する方法を紹介しました。今回は、カスタムHTMLの利用について調べてみました。ソフトウェア補足:RHEL8の環境整備(WinSCPによるファイル共有-Win10側)先日の投稿で、ホスト/ゲスト間でクリップボードが共有し、相互にテキストデータのコピー&ペーストができるよう環境を整備しました。「scp等ファイル転送」によるファイル共有の実現ついては、具体的な説明をはしょっていたので、補足します。今回はWinSCP(Windows上で動くグラフィカルなファイル転送(FTP/FTPS/SFTP/SCP)クライアントソフト)を使用して、ファイル共有を実現しようと思います。WordPressExif情報についての雑感スマホの写メをはじめ、デジタル写真には大概、Exif情報(メタデータ或いは、ジオタグの記述も同じ意味で使われてる?)という、様々な撮影情報を記録したデータが、勝手に付与されます。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。max-age=0"),l.setRequestHeader("dlm-xhr-request","dlm_XMLHttpRequest"),l.send()}}タイトルとURLをコピーしました。