Hatena::ブログ(Diary)

tabizouの日記

2017-10-08

Excel VBA での Transaction について

20:13

環境はWin10 Pro x64 + Excel2013 x32 + SQL Server 2016 Express x64

使用したデータはこちら郵便番号検索の17ISHIKA.CSV

使用したテーブルこちら

元ネタはこちら

1.BeginTrans、CommitTrans、RollbackTrans メソッド

2.ObjectStateEnum

1.より抜粋

ネストされたトランザクションをサポートしているプロバイダの場合、開いているトランザクションで BeginTrans メソッドを呼び出すと、ネストされた新規トランザクションが開始されます。戻り値は、ネストのレベルを示します。戻り値 "1" はトップ レベルのトランザクション (ほかのトランザクション内でネストしていないトランザクション)、"2" はセカンド レベルのトランザクション (トップ レベルのトランザクション内でネストしているトランザクション) が開いたことを示します ("3" 以下も同様です)。CommitTrans または RollbackTrans メソッドを呼び出すと、最後に開いたトランザクションのみを操作します。さらに上のレベルのトランザクションを処理するには、カレント トランザクションを閉じるか、またはロール バックする必要があります。

2.より抜粋

ObjectStateEnum

定数 説明
adStateClosed 0 オブジェクトが閉じていることを示します。
adStateOpen 1 オブジェクトが開いていることを示します。
adStateConnecting 2 オブジェクトが接続していることを示します。
adStateExecuting 4 オブジェクトがコマンドを実行中であることを示します。
adStateFetching 8 オブジェクトの行が取得されていることを示します。


ADO/WFC 等価

パッケージ: com.ms.wfc.data

定数
AdoEnums.ObjectState.CLOSED
AdoEnums.ObjectState.OPEN
AdoEnums.ObjectState.CONNECTING
AdoEnums.ObjectState.EXECUTING
AdoEnums.ObjectState.FETCHING

Private Function setCSV2DB() As Boolean

On Error GoTo ERR_PROC

    Dim adoCon      As ADODB.Connection
    Dim adoRst      As ADODB.Recordset
    Dim vAry        As Variant
    Dim host        As String
    Dim user        As String
    Dim pass        As String
    Dim conn        As String
    Dim strSQL      As String
    Dim fd          As Integer
    Dim strLine     As String
    Dim fName       As String
    Dim trLevel     As Long

    host = "SQLSVODBC32"
    user = "demo"
    pass = "demo"
    fName = "C:\Dev\code\vscode\excel\17ISHIKA.CSV"
    fd = FreeFile

    conn = "DSN=" & host & ";UID=" & user & ";PWD=" & pass
    Open fName For Input As #fd

    Set adoCon = New ADODB.Connection
    adoCon.ConnectionString = conn
    adoCon.CursorLocation = adUseClient
    
Debug.Print adoCon.State         '2. より 0
    
    Call adoCon.Open
    trLevel = 0
Debug.Print adoCon.State         '2. より 1

    strSQL = "TRUNCATE TABLE POSTAL"
    trLevel = adoCon.BeginTrans  '1. よりトップ レベルのトランザクション = 1
Debug.Print trLevel

    Call adoCon.Execute(strSQL, 0)

    While Not EOF(fd)
        Line Input #fd, strLine

        strLine = Replace(strLine, """", "")
        vAry = Split(strLine, ",")
        strSQL = "INSERT INTO POSTAL (POSTAL, CITY, ADRLINE1) VALUES "
        strSQL = strSQL & "('" & Trim(vAry(2)) & "','" & Trim(vAry(7)) & "','" & Trim(vAry(8)) & "')"
        Call adoCon.Execute(strSQL, 0)
    Wend

    adoCon.CommitTrans
    trLevel = trLevel - 1
Debug.Print adoCon.State

    adoCon.Close
    Set adoCon = Nothing
    Close #fd
    dbSetCSV = True
    Exit Function

ERR_PROC:
    trLevel = trLevel - 1
    adoCon.Close
    Set adoCon = Nothing
    Close #fd
    dbSetCSV = False

End Function

2017-10-06

Win10 Pro x64 で vscode を使ってみる

22:31

環境はWin10 Pro x64 + vscode-1.16

以前から気になっていた vscode を使ってみる

ダウンロードこちらから

zip版を解凍して、適当なフォルダに配置する

以下のサイトを参考に環境を設定する(少しづつだけど)

VSCodeの拡張機能おすすめ(8/14更新)

Visual Studio CodeでHTML作成環境を整える

無料で利用できる、軽量かつ、高機能な汎用ソースコードエディタ Visual Studio Code

Windows版】VS Code キーボードショートカット一覧 (オススメ付き)

以下設定メモ

・インデント見える化

ファイル→基本設定→設定 を選択すると「settings.json」ファイルが開くため、下記のとおり設定。

settings.json

// Place your settings in this file to overwrite the default settings

{

// エディターでインデントのガイドを表示する必要があるかどうかを制御します

"editor.renderIndentGuides": true

}

・現在インストールしているプラグイン

code runner

Ctrl + Alt + n で開いているファイルを実行する

nodejs とか python のコードの起動(オイラは)

ヒストリが効くから、ターミナルからコマンドを直接叩くのもありかな・・

Open in Browser

Shift + Alt + B 押下後ブラウザ選択メニューで選んだブラウザで開いているファイルを実行する

html+js のデバック時使う

evilinspector

全角空白が目立つように表示される

日本語入力後、切替忘れで入力してもわかりやすい

ESLint

まだ設定していない

IntelliSense for CSS class names

JavaScript (ES6) snippets

Node.js Modules Intellisense

Python

2017-10-05

Win版PHPをインストールしてみる

21:14

環境はWin10 Pro x64 + httpd-2.4.27-Win64-VC15 + php-7.1.10-Win32-VC14-x64

条件反射的に Apache には php はつきものだよなぁ・・ ということで設定してみる

参考にしたのは以下のサイト(ほぼまんまですが メモということで)

ローカルでPHP×Apache連携(Windows環境)

PHP For Windows: Binaries and sources Releasesより

php-7.1.10-Win32-VC14-x64.zipをDLして、適当なフォルダに

解凍して配置する。

自分の場合は C:\Dev\Lang\php7 とリネームして配置

C:\Apache24\conf\httpd.conf の最後に以下を追加する

LoadModule php7_module C:\Dev\Lang\php7\php7apache2_4.dll
AddHandler application/x-httpd-php .php
AddHandler application/x-httpd-php-source .phps
PHPIniDir  "C:/Dev/Lang/php7"

apache再起動する

C:\Apache24\htdocs 以下に以下を配置

> cat info.php
<?php phpinfo(); ?>

http://localhost:8080/info.php にアクセスすると phpinfo が表示される

2017-10-03

Win版Apacheをインストールしてみる

21:56

環境はWin10 Pro x64 + httpd-2.4.27-Win64-VC15

参考にしたのは以下のサイト

Apacheインストール

Windows版Apacheのconfigテスト

こちらより、適当なサイトを選択してダウンロードする

httpd-2.4.27-Win64-VC15.zip を解凍して c:\ に配置する

ReadMe.txt より

[Build with Visual Studio 2017 (VC15) x64] とあるので

VS2017をインストールしていない場合は最新のサポートされる Visual C++ のダウンロードより

[Visual Studio 2017 用 Microsoft Visual C++頒布可能パッケージ]

をDLしてインストールする必要があるかもしれません

C:\Apache24\conf\httpd.conf を修正する

58行目 Listen 8080 <- 8080に修正

222行目 ServerName localhost:8080 <- コメントアウトlocalhost:8080に修正

修正後 以下で httpd.conf の確認を行う

> C:\Apache24\bin\httpd -t

Syntax OK

以下はコンソールを管理者モードで起動して行う

サービスとして登録

自動起動に設定されるので、変更する場合はサービス画面より変更する

> C:\Apache24\bin\httpd -k install

Installing the 'Apache2.4' service

The 'Apache2.4' service is successfully installed.

Testing httpd.conf....

Errors reported here must be corrected before the service can be started.

サービスから削除

> C:\Apache24\bin\httpd -k uninstall

Removing the 'Apache2.4' service

The 'Apache2.4' service has been removed successfully.

以下は通常の画面より実行可能

起動

> C:\Apache24\bin\httpd -k start

終了

> C:\Apache24\bin\httpd -k stop

ReadMe.txt より

ApacheMonitor

Double click ApacheMonitor.exe, or put it in your Startup folder.

自分は C:\Apache24\bin\ApacheMonitor.exe のショートカットを貼り付けています

2017-09-30

nodejs + chromedriver を試してみる

22:24

環境はWin10 Pro x64 + nodejs 8.6 + chromedriver-2017/08/30

chromedriver は SeleniumBasic と同居させる

SeleniumBasicはこちらからダウンロード

exeを実行すると、C:\Users\user_name\AppData\Local\SeleniumBasic にインストールされる

chromedriverはこちらからダウンロード

して SeleniumBasic のchromedriverに上書きする

> npm install selenium-webdriver
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN nodejssamp@1.0.0 No description
npm WARN nodejssamp@1.0.0 No repository field.

//+ selenium-webdriver@3.5.0
added 30 packages in 14.251s

    var webdriver = require('selenium-webdriver'),
        By = webdriver.By,
        until = webdriver.until;

    var driver = new webdriver.Builder()
        .forBrowser('chrome')
        .build();

    driver.get('http://www.google.co.jp’);
//    起動はできるのだが、検索がうまくいかない・・・
//    driver.findElement(By.name('q')).sendKeys('webdriver');
//    driver.findElement(By.name('btnG')).click();
//    driver.wait(until.titleIs('webdriver - Google Search'), 1000);
    driver.quit();