hakeの日記

Windows環境でプログラミングの勉強をしています。

2018-01-01から1年間の記事一覧

EXCEL VBAメモ - SQLite3データベースのアクセス(SQLite ODBC使用)

ExcelからODBC経由でSQLite3へアクセスする方法 準備 SQLite ODBC Driver からSQLite ODBC Driverをダウンロードしてインストールする。64bit版はsqliteodbc_w64.exe(現時点の最新はVer.0.9996) インストールを行うとsqlite3.dllがC:\Windows\System32に見つ…

SQLite - ウィンドウ関数

特定のレコード範囲をウィンドウ設定して、そのウィンドウに対して操作を行う機能。 sqlite> select * from AAA; tt ii ---------- ---------- aa 6 bb 5 aa 4 bb 3 aa 2 bb 1 OVER句

SQLite - 重複の除去(DISTINCT)

指定したカラムで重複ているものを除去して出力する sqlite> select * from AAA; tt ii rr ---------- ---------- ---------- aaa 1 1.0 aaa 1 2.0 aaa 2 3.0 aaa 2 4.0 sqlite> select distinct tt from AAA; tt ---------- aaa sqlite> select distinct tt…

SQLite - 出力レコード数の制限(LIMIT, OFFSET)

LIMIT句で出力するレコード数を、OFFSET句で最初からスキップするレコード数を指定する。 sqlite> select * from AAA; tt rr ---------- ---------- aaa 8.0 bbb 7.0 ccc 6.0 ddd 5.0 aaa 4.0 bbb 3.0 ccc 2.0 ddd 1.0 sqlite> select * from AAA limit 1; t…

SQLite - 出力のソート(ORDER BY)

指定したカラムを昇順(ASC,省略可)または降順(DESC)でソートして出力する。 sqlite> select * from AAA; tt rr ---------- ---------- aaa 8.0 bbb 7.0 ccc 6.0 ddd 5.0 aaa 4.0 bbb 3.0 ccc 2.0 ddd 1.0 sqlite> select * from AAA order by tt asc, rr…

SQLite - カラム方向の結合(JOIN)

2つのテーブルの指定したカラムで結合することで2つのテーブルをカラム方向に広げたひとつのテーブルとして扱う sqlite> select * from AAA; tt ii ---------- ---------- aaa 1 bbb 2 ccc 3 ddd 4 sqlite> select * from BBB; ii rr ---------- ----------…

SQLite - グループ化(GROUP BY)

指定したカラム毎にグループ化して、そのグループ内で処理を行う sqlite> select * from AAA; tt cate val ---------- ---------- ---------- aaa A 1.0 bbb A 2.0 aaa A 3.0 bbb B 4.0 aaa B 5.0 bbb B 6.0 aaa C 7.0 bbb C 8.0 selectにカラム名のみ記述し…

SQLite - 集計関数

sqlite> select * from AAA; ii tt rr ---------- ---------- ---------- 1 aaa 1.0 2 bbb 2.0 3 ccc 3.0 ddd 4.0 5 eee SUMとTOTAL

SQLite - WHERE句

sqlite> select * from AAA; ii tt ---------- ---------- 1 aaa bbb 3 ccc 4 5 ddd 6 eee fff 8 9 ggg 一致、比較、否定

SQLite - ビューとインデックス

sqlite> create table AAA(ii integer, tt text, rr real); sqlite> insert into AAA values(1, 'aaa', 0.8), ...> (2, 'aaa', 0.7), ...> (3, 'bbb', 0.6), ...> (4, 'bbb', 0.5), ...> (5, 'ccc', 0.4), ...> (6, 'ccc', 0.3), ...> (7, 'ddd', 0.2), ...>…

SQLite - ROWIDとカラム制約事項

ROWID 特に指定しなくても、レコードをユニークに決定するROWIDというinteger型のカラムが内部的に付加される。 sqlite> create table AAA(ii integer, tt text); sqlite> insert into AAA values(10, 'aaa'),(20, 'bbb'); sqlite> select rowid,* from AAA;…

SQLiteを使う

個人や小規模のデータベースで使用するSQLiteの勉強 作成されるデータベースファイルは一個なので手軽に管理できる。 入手先 以下のサイトのDownloadから入手する。現時点のバージョンは3.25.3。 Windows環境でプログラムからDLLを使用する場合は、sqlite-dl…

EXCEL VBAメモ - ユーザーフォーム上のTextBoxにEnter押下で連続入力する

目的 ListBoxとTextBoxがあるユーザーフォームで、TextBoxに入力したデータをListBoxに追加していきたい。 その時Enter押下だけで連続に入力していく様にしたい。 試行錯誤 通常はTextBoxにデータを入力したあとにEnterを押すとフォーカスが別のコントロール…

C# - LINQ

Enumerableなオブジェクトに対して様々な加工が可能である。面白いのは組み合わせて使用できること。 注意点としてはReserveメソッドのみ自身を書き換えること。試した範囲では他のメソッドは新規のEnumerableなオブジェクトを生成した。

C# - 引数 - 値渡しと参照渡し

メソッドの引数を参照渡しで行う場合は、仮引数だけでなく、実引数側にも ref をつける。これはメソッドの引数にしたことで、メソッド側から書き換えが発生する可能性のあることを明示する為である。 メソッドの結果を引数経由で呼び出し側に渡す用途の場合…

C# - 引数 - 規定値/名前付き引数/可変長引数

メソッド定義の仮引数に規定値を付けると、メソッド呼び出し時にその引数を省略することができる。ただし仮引数の並びで、規定値有りの引数の後ろに規定値無しの引数を置くことはできない。また、メソッド呼び出し時に 仮引数名 : 値とすることで仮引数の順…

C# - foreach文とyield

IEnumerable<T>型のメソッドを定義して、その処理中に yield return 値; を記述することで、IEnumerable<T>オブジェクトを生成することができる。 IEnumerable<int> MyEnumerable() { 処理; yield return 値; 処理; } この方法を利用したほうが、IEnumerable</int>…

C# - foreach文とIEnumerableインターフェース(ジェネリック)

ジェネリックに対応させるには、昨日に対してIEnumerable<T>、IEnumerator<T>とIDisposableインターフェースを追加して継承する。 interface IEnumerable<T> { IEnumerator<T> GetEnumerator(); } interface IEnumerator<T> { T Current { get; } } GetEnumerator</t></t></t>…

C# - foreach文とIEnumerableインターフェース

foreach文において in の後に置けるオブジェクトはIEnumerableインターフェースを継承したクラスとなる。 IEnumerableは、GetEnumeratorメソッドでIEnumeratorオブジェクトを返す。 interface IEnumerable { IEnumerator GetEnumerator(); } GetEnumeratorメ…

C# - デリゲート

デリゲートとは要するにラムダ式をいれるデリーゲート型変数を定義して使用する仕組み。 デリゲート型は以下のように定義する。 delegate 戻り値型 デリゲート型(引数型と引数名リスト); あるデリゲート型で宣言したデリゲート変数は、その型で定義された戻…

C# - コレクション - List<T> その2

Listコレクションでラムダ式を引数にしているメソッドの使用例。

C# - ラムダ式とデリゲート型

処理をひとつの固まりとして扱うのがラムダ式。 (引数リスト) => {処理}; (引数リスト) => {処理; return 戻り値;};引数がひとつの場合や、処理が単文の場合は括弧を省略できる。また処理が単文の場合はreturnも省略できる。 ラムダ式は、デリゲート型の変数…

C# - コレクション - List<T>

配列のコレクション版。 の部分に型を指定してnewを行うことで、その型のコレクションとなる。

C# - 正規表現

基本的にはPowerShellやExcel VBAのものと同じ感じ。 マッチさせた結果は、MatchやMatchesのインスタンスに格納される。

Windows10 v1809 October 2018 Updateの配信を停止(勝手にフォルダ内のファイルが削除)

blog.livedoor.jpなんという凶悪なバグ! 幸い自分のPCでは、この症状は出ていない&データバックアップしているので問題は生じませんが…… 昨年のインストール失敗の例もあるので、配信されて直ぐに自分からインストールしに行くのは止めておいた方が良さげ…

C# - ディレクトリ内一覧の取得

Directoryクラスの静的メソッドを使用することで、全て、ファイルのみ、サブディレクトリのみと取得できる。またワイルドカードを使用して特定もののみを取得することも可能である。 全てを取得した場合は、ディレクトリかファイルかの区別はFile.GetAttribu…

Windows 10 October 2018 Update 適用

適用終了。 無事に済んで何よりでした。

C# - usingブロックの動作

昨日使用したusingブロックの動作の確認。 MSのドキュメントによると、using( )内で宣言できるのは、IDisposableインターフェースを継承したクラスになる。具体的には、void Dispose() メソッドを持っていることが必要となる。 usingブロックを抜ける際に、…

C# - テキストファイルのアクセス

テキストファイルに対して1行単位で読み書きする例。 エンコード(文字コード)は環境のデフォルトのものを取得して設定している。設定を省略した場合はutf-8となる。特定のエンコードを指定する場合は、GetEncodingメソッドを使用する。 通常はusingを使用…

c# - 例外処理(try / catch / finally / throw)

例外処理 例外処理は他の言語と一緒。tryブロックで例外が発生した場合、発生した例外の種類が書かれたcatchブロックの処理が実行される。finallyブロックは、例外の発生の有無に関わらず実行される。 例外の種類分けを行わない場合は、Exceptionでcatchする…