SQLの窓

2020年08月11日


PowerShell で VisualStudio で作成した Form アプリケーションをビルドする( Form アプリケーションを テキストエディタのみで作成するテンプレート )

▼ ps.bat ( PowerShell をそのまま使えない場合は以下のバッチファイルを作成して使用します )
@powershell -NoProfile -ExecutionPolicy Unrestricted "./%1.ps1"
▼ build.ps1
Add-Type -path "Program.cs", "Form1.cs", "Form1.Designer.cs" `
	-ReferencedAssemblies System.Windows.Forms, System.Drawing `
	-OutputAssembly form-01.exe `
	-OutputType WindowsApplication

Read-Host "何かキーを押してください"


プログラムは、入力した内容をボタンをクリックした後 MessageBox で表示するだけのものです。つまりは、Form アプリケーションを テキストエディタのみで作成するテンプレートでもあります。

▼ Program.cs
using System;
using System.Windows.Forms;

namespace form_01
{
	static class Program
	{
		[STAThread]
		static void Main()
		{
			Application.EnableVisualStyles();
			Application.SetCompatibleTextRenderingDefault(false);
			Application.Run(new Form1());
		}
	}
}


▼ Form1.cs
using System;
using System.Windows.Forms;

namespace form_01
{
	public partial class Form1 : Form
	{
		public Form1()
		{
			InitializeComponent();
		}

		private void button1_Click(object sender, EventArgs e)
		{
			MessageBox.Show(textBox1.Text);
		}
	}
}


▼ Form1.Designer.cs
namespace form_01
{
	partial class Form1
	{
		private System.ComponentModel.IContainer components = null;

		protected override void Dispose(bool disposing)
		{
			if (disposing && (components != null))
			{
				components.Dispose();
			}
			base.Dispose(disposing);
		}

		private void InitializeComponent()
		{
			this.textBox1 = new System.Windows.Forms.TextBox();
			this.button1 = new System.Windows.Forms.Button();
			this.SuspendLayout();
			// 
			// textBox1
			// 
			this.textBox1.Location = new System.Drawing.Point(65, 48);
			this.textBox1.Name = "textBox1";
			this.textBox1.Size = new System.Drawing.Size(243, 19);
			this.textBox1.TabIndex = 0;
			// 
			// button1
			// 
			this.button1.Location = new System.Drawing.Point(64, 94);
			this.button1.Name = "button1";
			this.button1.Size = new System.Drawing.Size(243, 28);
			this.button1.TabIndex = 1;
			this.button1.Text = "実行";
			this.button1.UseVisualStyleBackColor = true;
			this.button1.Click += new System.EventHandler(this.button1_Click);
			// 
			// Form1
			// 
			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
			this.ClientSize = new System.Drawing.Size(534, 290);
			this.Controls.Add(this.button1);
			this.Controls.Add(this.textBox1);
			this.Name = "Form1";
			this.Text = "タイトル";
			this.ResumeLayout(false);
			this.PerformLayout();

		}

		private System.Windows.Forms.TextBox textBox1;
		private System.Windows.Forms.Button button1;
	}
}






【Pleiadesの最新記事】
posted by lightbox at 2020-08-11 18:56 | Pleiades | このブログの読者になる | 更新情報をチェックする

XAMPP 内 Tomcat Version 7 の設定と簡単な JSP の実行テスト



JDK は、OpenJDK をダウンロードして解凍して、C:\Java に設置したとします。 
( ※ ここでは、8 を使用しました )

▼ 必要なレジストリエントリ( これを手作業で作成します )
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft]

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit]
"JavaHome"="C:\\java"


XAMPP は、"C:\xampp" にインストールされているとします。

1) "C:\xampp\tomcat\conf\web.xml" の変更
<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
        <param-name>fork</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>xpoweredBy</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>trimSpaces</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
</servlet>


※ trimSpaces を true にする事によって無駄な改行を省く事ができます( 強調部分を追加です )
<servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>0</param-value>
    </init-param>
    <init-param>
        <param-name>listings</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>


※ この設定で、その仮想フォルダのファイルの一覧を表示可能にします

2) "C:\xampp\tomcat\conf\server.xml" の変更
※ Tomcat7 のみ。Tomcat8 以降は必要ありません
<Connector
	port="8080"
	protocol="HTTP/1.1"
	connectionTimeout="20000"
	redirectPort="8443"
	URIEncoding="UTF-8" />

ここまでで、いったん起動すると C:\xampp\tomcat\conf\Catalina\localhost が作成されます。

※ 本文が UTF-8 で記述するという前提のお話です。( 8080 で検索してコメントでないエントリに追加 )

3) ソースコードを配置する場所の定義

※ "C:\xampp\tomcat\conf\Catalina\localhost" に以下のファイルを作成します。
※ ソースコードを "C:\user\lightbox\tomcat" に lightbox.xml として作成するとします
<Context
	displayName="Web Application Home"
	docBase="C:\user\lightbox\tomcat"
	path="/lightbox"
	reloadable="true"
	useNaming="false">
</Context>

▼ 以下サンプルです
sample_01.jsp
<%@ page
	language="java"
	contentType="text/html;charset=utf-8" %>
<%!
// *********************************************************
// ローカル関数
// *********************************************************
public String printFor( int count ) {

	String ret = "";

	for( int i = 0; i < count; i++ ) {
		ret += String.format( "%d<br>", i+1 );
	}

	return ret;
}
%>
<%
// *********************************************************
// ページ処理
// *********************************************************
String strField = request.getParameter("field");
if ( strField == null ) {
	strField = "";
}

%>
<!DOCTYPE html>
<html>
<head>
<meta content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport">
<meta charset="UTF-8">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.css">

<style>
#main {
	padding: 30px;
	font-size: 24px;
}

form {
	margin-bottom: 20px;
}
</style>
</head>
<body>
<div id="main">

<form method="get">
	<input type="text" name="field" value="<%= strField %>">
	<input type="submit" name="send" value="GET">
</form>

<% 
out.println( printFor(15) ); 
%>

</div>
</body>
</html>






posted by lightbox at 2020-08-11 13:50 | java : JSP | このブログの読者になる | 更新情報をチェックする

2020年08月07日


VBScript : ADO : ODBC接続 : SQLExpress(SQLServer) 接続と通常処理( 更新は SQL で行う )



ドライバは、古い {SQL Server} ドライバを使用していますが、VBS では、{SQL Native Client} を使っても同じだと思います。

▼ SQLExpress(SQLServer) の 32ビット ODBC のクライアントの設定です


※ コメント部分ですが、このサンプルで SQL の更新を接続オブシェクトのメソッドで SQL 文字列を使って実行しています。

フィールドオブジェクトにセットして更新する方法もありますが、他の言語間での移植が困難になるので、このほうが良い環境はたくさんあると思います

関連する記事

SQLExpress 2005 の接続設定
VBScript : ADO : フィールドオブジェクトを使用した同一フォーマットのテーブル間のデータコピー
VBScript : ADO : 純正接続 : SQLExpress(SQLServer) 接続と通常処理

SQLExpress にインポートするデータ(MDB)


' ***********************************************************
' SQLExpress / ODBC / {SQL Server}
' ADO : 文字列更新
' FileSystemObject : CSV出力
' ***********************************************************
strDriver = "{SQL Server}"
strTarget = "reiwa"		' 別名
strDB = "lightbox"
strUser = "sa"
strPass = "passwordpassword"

' ***********************************************************
' ADO + FileSystemObject
' ***********************************************************
Set Cn = CreateObject( "ADODB.Connection" )
Set Rs = CreateObject( "ADODB.Recordset" )
Set Fso = CreateObject( "Scripting.FileSystemObject" )

' **********************************************************
' 接続文字列
' **********************************************************
ConnectionString = _
	"Provider=MSDASQL;" & _
	"Driver=" & strDriver & ";" & _
	"SERVER=" & strTarget & ";" & _
	"DATABASE=" & strDB & ";" & _
	"UID=" & strUser & ";" & _
	"PWD=" & strPass & ";"

' **********************************************************
' 接続
' クライアントカーソル(3)を使う事が推奨されます
' **********************************************************
Cn.CursorLocation = 3
on error resume next
Cn.Open ConnectionString
if Err.Number <> 0 then
	WScript.Echo Err.Description
	Wscript.Quit
end if
on error goto 0

Query = "select * from [社員マスタ]"

' **********************************************************
' レコードセット
' オブジェクト更新時はレコード単位の共有的ロック(3)を
' 使用します( デフォルトでは更新できません )
' ※ デフォルトでも SQLによる更新は可能です
' **********************************************************
'Rs.LockType = 3
on error resume next
Rs.Open Query, Cn
if Err.Number <> 0 then
	Cn.Close
	Wscript.Echo Err.Description
	Wscript.Quit
end if
on error goto 0

' **********************************************************
' 出力ファイルオープン
' **********************************************************
Set Csv = Fso.CreateTextFile( "社員マスタ.csv", True )

' **********************************************************
' タイトル出力
' **********************************************************
Buffer = ""
For i = 0 to Rs.Fields.Count - 1
	if Buffer <> "" then
		Buffer = Buffer & ","
	end if
	Buffer = Buffer & Rs.Fields(i).Name
Next
Csv.WriteLine Buffer

' **********************************************************
' データ出力
' **********************************************************
' UpdateCnt = 0
Do While not Rs.EOF
	Buffer = ""
	For i = 0 to Rs.Fields.Count - 1
		if Buffer <> "" then
			Buffer = Buffer & ","
		end if
		Buffer = Buffer & Rs.Fields(i).Value
	Next

	' 更新
'	strDay = (UpdateCnt mod 10) + 1
'	Query = "update [社員マスタ] set [生年月日] = '2005/01/0" & strDay & "'"
'	Query = Query & " where 社員コード = '" 
'	Query = Query & Rs.Fields("社員コード").Value
'	Query = Query & "'"
	Cn.Execute( Query )

	Csv.WriteLine Buffer
	Rs.MoveNext
'	UpdateCnt = UpdateCnt + 1
Loop

' **********************************************************
' ファイルクローズ
' **********************************************************
Csv.Close
' **********************************************************
' レコードセットクローズ
' **********************************************************
Rs.Close
' **********************************************************
' 接続解除
' **********************************************************
Cn.Close


▼ hanbaic.mdb よりインポートする為の バッチファイル
C:\Windows\SysWOW64\cscript.exe import.vbs
Windows10 64ビットで、Office が 32ビットの場合を想定しています

▼ hanbaic.mdb よりインポートする為の VBScript
' ***********************************************************
' hanbaic.mdb からインポート
' ***********************************************************
strMdbPath = "C:\Users\lightbox\Downloads\hanbaic_mdb\hanbaic.mdb"
strConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strMdbPath & ";"

' ***********************************************************
' ADO
' ***********************************************************
Set Cn = CreateObject( "ADODB.Connection" )

' **********************************************************
' MDB 用接続文字列
' **********************************************************
ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strMdbPath & ";"

' **********************************************************
' 接続
' **********************************************************
on error resume next
Cn.Open ConnectionString
if Err.Number <> 0 then
	WScript.Echo Err.Description
	Wscript.Quit
end if
on error goto 0

' **********************************************************
' 実行
' **********************************************************
RefString = "[ODBC;Driver={SQL Server};Server=reiwa;Database=lightbox;Uid=sa;Pwd=passwordpassword]"
Query = "select * into " & RefString & ".[社員マスタ] from [社員マスタ]"

on error resume next
Cn.Execute Query
if Err.Number <> 0 then
	WScript.Echo Err.Description
	Wscript.Quit
end if
on error goto 0

' **********************************************************
' 接続解除
' **********************************************************
Cn.Close




posted by lightbox at 2020-08-07 14:06 | SQLExpress | このブログの読者になる | 更新情報をチェックする

2020年08月02日


GAS : スプレッドシートのメニューに関数実行用のメニューを追加する



SpreadsheetApp.getUI
スクリプトがメニュー、ダイアログ、サイドバーなどの機能を追加できるようにする、スプレッドシートのユーザーインターフェイス環境のインスタンスを返します。 スクリプトは、開いているスプレッドシートの現在のインスタンスのUIとのみ対話でき、スクリプトがスプレッドシートにバインドされている場合に限ります。
createCal は関数名です。
// ************************************
// メニューの追加
// ************************************
function onOpen(e) {
	var ui = SpreadsheetApp.getUi();
	ui.createMenu('カレンダー作成')
		 .addItem('カレンダーへ適用', 'createCal')
		 .addToUi();
	
}

// ************************************
// 
// ************************************
function createCal() {


}





posted by lightbox at 2020-08-02 20:46 | GAS | このブログの読者になる | 更新情報をチェックする

2020年07月31日


GAS : Classroom API で、コースに生徒を一括登録する

スクリプトエディタのリソースメニュー(Google の拡張サービス)より API を実行可能にしておく必要があります。



コースID を指定して、A 列に並べたユーザ文字列を元に、生徒として一括登録します

function createStudent() {

	var CourceId = "コースID";

	// 選択したシートを対象とします
	var spreadsheet = SpreadsheetApp.getActive();

	// 行番号
	var i = 1;

	while (true) {

		// 登録済のフォルダを排除する為に順に比較していく
		var targetRange = spreadsheet.getRange('A' + i);
		var cellWork = targetRange.getValue().toString();
		if (cellWork != '') {

			// 生徒作成用の JSON
			var json = {
				"userId": cellWork + "@ドメイン"
			};

			// 生徒を追加
			// ( 招待済でも確定します )
			try {
				Classroom.Courses.Students.create(json, CourceId);

			}
			catch(e) {
				GmailApp.sendEmail("メールアドレス", "Classroom 生徒登録エラー", JSON.stringify(json) + "\r\n" + e.message );

			}

			i++;

		}
		else {
			break;
		}
	}
}



関連する記事

GAS : Classroom API で、コース一覧と、コース毎のトピック一覧をスプレッドシートに出力




posted by lightbox at 2020-07-31 14:46 | GAS | このブログの読者になる | 更新情報をチェックする

GAS : Classroom API で、コース一覧と、コース毎のトピック一覧をスプレッドシートに出力

スクリプトエディタのリソースメニュー(Google の拡張サービス)より API を実行可能にしておく必要があります。



A に コースの ID、B にコース名、D にトピック ID、E にトピック名をセットします。

function listCourseAndTopic() {

	// 選択したシートを対象とします
	var spreadsheet = SpreadsheetApp.getActive();

	// コースの一覧( 1つ以上あるという前提 )
	var json = Classroom.Courses.list();

	var cnt = json.courses.length;
	
	var rowno = 0;

	for( var i = 0; i < cnt; i++ ) {
		var targetRange = spreadsheet.getRange('A' + (rowno + i + 1));
		targetRange.setValue(json.courses[i].id);
		targetRange = spreadsheet.getRange('B' + (rowno + i + 1));
		targetRange.setValue(json.courses[i].name);

		// トピックが無い場合、jsonTopic は {} となります
		jsonTopic = Classroom.Courses.Topics.list( json.courses[i].id );
		try {
			for ( var j = 0; j < jsonTopic.topic.length; j++ ) {
				var targetRange = spreadsheet.getRange('D' + (rowno + i + 1));
				targetRange.setValue(jsonTopic.topic[j].topicId);
				targetRange = spreadsheet.getRange('E' + (rowno + i + 1));
				targetRange.setValue(jsonTopic.topic[j].name);
				rowno++;
			}

			// トピックがあった場合一行空ける為にコメント
			// rowno--;
		}
		catch(e){
				// トピック無しでエラーの為ここで一行空けます
				rowno++;
		}

	}

}





posted by lightbox at 2020-07-31 14:20 | GAS | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり