ラベル ソフトウェア開発 の投稿を表示しています。 すべての投稿を表示
ラベル ソフトウェア開発 の投稿を表示しています。 すべての投稿を表示

正規表現 サンプル

久しく使っていないと即忘れるため、完全「自分用」メモです。

メールアドレス チェック

万能ではありませんが、基本はこれでいいかなと。
/[!#-9A-~]+@+[a-z0-9]+.+[^.]$/g
※正規表現とは関係ありませんが、メールを取り扱う場合、ドメイン部をDNSサーバへ問い合わせる機能があると「メールアドレスの入力間違い」による運用負担が軽減できるケースがあります。というか、ありました。

電話番号 チェック

市外局番-市内局番-加入者番号(OAB~J)版。
/^\d{2,5}-\d{1,4}-\d{4}$/g
市外局番は2~4桁ではなく、最大5桁がまだ存在しています。
これを知らないと痛い目にあいます。というか、あいました!
市外局番5桁の地区はWikiPediaの「2013年5月現在 現存する5桁市外局番」から確認できます。

大文字・小文字のチェック

最後のgの部分によって、大文字・小文字のチェックが切り替わります。
g:大文字・小文字を判定
i:大文字・小文字はチェックせず判定
それ以外にも機能がありますが、よく使うのは上記2つ。

数値の文字数制限

制限したい文字数。
/\d{n}/in
例えば、8文字の数値は\d{8}と記述
6~8文字の場合は、\d{6,8} と記述
文字列xxxとの組み合わせは、/xxx\d{n}/i

ワイルドカード

あらゆる文字の連続を抽出する。
/.*/g

特定文字の連続

この場合、aが連続する文字列を抽出する。
/a*/g

論理演算

abを含んで、かつ、bcを含む
/^(?=.*ab)(?=.*bc).*$/
abを含んで、かつ、bcを含まない
/^(?=.*ab)(?!.*bc).*$/

該当テキストを検索し、置換

行最後がA01~A99をZ01~Z99に置換したい場合
検索:A(\d{2})$
置換:Z$1
テキストエディタでよく使いますが、検索部のかっこ()を忘れる事がよくありますので、要注意!
(\d{5})-(\d{3})のように検索した場合は、最初のかっこ部が$1、次のかっこ部が$2に格納

更に詳しく知りたい場合は、「Microsoft msdn - 正規表現の概説」を参照してください。

.NET Framework 4.0 Client ProfileとExtendedの違い

とあるソフトウェアをインストールする前にシステム要件を見て気が付きました。
.NET Framework 4.0 Client Profileと.NET Framework 4.0 Extendedの違いを把握していない事に!
今回は.NET Framework 4.0 Client Profileと.NET Framework 4.0 Extendedの違いについてメモ。

.NET Framework 4.0 Client Profileの機能

Client Profileという名の通り、クライアント アプリケーションに最適化されたサブセット(部分集合体)です。
ASP.NETなどいくつかの機能は含まれていません。
では、Client Profileにはどの機能が含まれているか?、これはmsdnの下記URLにしっかり明記されています。
.NET Framework Client Profile – msdn
  • common language runtime (CLR)
  • ClickOnce
  • Windows Forms
  • Windows Presentation Foundation (WPF)
  • Windows Communication Foundation (WCF)
  • Entity Framework
  • Windows Workflow Foundation
  • Speech
  • XSLT support
  • LINQ to SQL
  • Runtime design libraries for Entity Framework and WCF Data Services
  • Managed Extensibility Framework (MEF)
  • Dynamic types
  • Parallel-programming features, such as Task Parallel Library (TPL), Parallel LINQ (PLINQ), and Coordination Data Structures (CDS)
  • Debugging client applications

.NET Framework 4.0 Extendedの機能

.NET Framework 4 Client Profileは下記4機能を含んでいません。
  • ASP.NET
  • Advanced Windows Communication Foundation (WCF) functionality
  • .NET Framework Data Provider for Oracle
  • MSBuild for compiling
前述のmsdnのWebページには
(.NET Framework 4 Client Profile is) Part of the .NET Framework.
The .NET Framework is made up of the .NET Framework 4 Client Profile and .NET Framework 4 Extended components that exist separately in Programs and Features.
と記載されているので、
.NET Framework 4.0 = .NET Framework 4 Client Profile + .NET Framework 4 Extended
であると考えています。
間違っていたらご指摘くださいm(_ _)m
そうなると、.NET Framework 4 Extendedは上記4機能にあたるのかなと・・・


個人的に開発したいアプリケーションがいくつかあるので、今回のような基礎的な事を知らないとまずいな!と痛感しました。
まだまだ精進あるのみです。
余談:.NET Framework 4.0がインストールされた環境に.NET Framework 1.0をインストールするには
今ではほとんどないのでしょうが、.NET Framework 4.0がインストールされた環境に.NET Framework 1.0をインストールすることは出来ないそうです。
.NET Framework 4 ダウンロード
の中段にあるReadme ファイルに明記されており、どうしても.NET Framework 1.0をインストールしなければならない場合は
  1. コントロール パネルの [プログラムと機能] を開きます。
  2. .NET Framework 4 Extended をアンインストールします。
  3. .NET Framework 4 Client Profile をアンインストールします。
  4. .NET Framework 1.0 をインストールします。
  5. .NET Framework 4 をインストールします。
の手順を行うそうです。
Windows 8 / 8.1 PreviewはWindows の機能に.NET Framework 4.5が組み込まれていますが、.NET Framework 1.0はインストール可能か?と思いましたが、.NET Framework 1.0のシステム要件を見ると[Windows 98~XP SP2+IE 5.01以降]となっているのでそもそも無理なんですね。
本当に無理かは時間が出来たらやってみたいです。

Windowsにインストールされている.Net Frameworkのバージョン確認方法

Windows 8.1 Previewにインストールされている.NET Frameworkのバージョンを確認したいな~と思ったもののすぐに確認方法が思い浮かばなかったので.NET Frameworkのバージョンを確認する方法をメモ。
合わせて、各OSに標準で組み込まれているバージョン、Windows Updateからインストールするバージョンもメモしておきます。

目視で確認する

  • [コントロール パネル]→[プログラム]→[Windows の機能の有効化または無効化]をクリックし、一覧をチェック
  • [コントロール パネル]→[プログラム]→[プログラムのアンインストールまたは変更]をクリックし、一覧をチェック
Windows XP
Windows Updateを行う事で、1.1、および、2.0 SP2、3.0 SP2、3.5 SP1、各Language Packがインストールされます。
2013-06-29_194021
Windows  Vista
OSに.NET Framework 3.0が組み込まれています。
2013-06-29_193912
Windows Updateを行う事で、3.5 SP1、および、4 Client Profile、各Language Packがインストールされます。
2013-06-29_202821
WIndows 7
OS自体に.NET Framework 3.5.1が組み込まれています。
2013-06-29_193958
Windows Updateを行う事で、4 Client ProfileおよびLanguage Packがインストールされます。
2013-06-29_194621
Windows 8 / 8.1
OS自体に.NET Framework 2.0、3.0、3.5、4.5が組み込まれています。
image

バッチ・ファイルで確認する方法

@ITの記事に.NET Frameworkのバージョンを確認する記事がありました。
記事内にバッチ・ファイルで確認する方法があり、非常に使えるツールでしたのでこちらもご紹介。
.NET Frameworkのバージョンを確認する方法 - @IT

VBアプリケーションからExcelやWordのOfficeファイルを開く方法

Visual BasicアプリケーションからExcelやWordなどOfficeファイルを開く方法をメモ。
本内容はVS2012 & .Net Framework 3.5を用いています。
2013.06.26 コメントでいただいた内容を反映してみました。

方法1 Shell関数を利用する

VBAでおなじみのShell関数を利用してExcelやWordなどOfficeファイルを開きます。
開いたファイルは別プロセスとなります。
Shell 関数 - msdn visual basic

Dim procId As Integer
Dim execPath as String = "c:\xxxxxx\xxx.xlsx"

procId = Shell(execPath, AppWinStyle.NormalFocus)

MSDNのヘルプを見るとVisual Basic 2005/2008となっていますが、Visual Basic 2012でも利用できました。しかし、2012などで利用してもいいかはよく分かりません・・・
2013-06-26_132206

方法2 Processクラスを利用する

Process クラスは.Net Framework 1.1~4.5と幅広く利用できるので、環境が変わっても実行ファイルが動作すると思っています。
開いたファイルは別プロセスとなります。
Process クラス - msdn

Dim officeFileProc As New Process
Dim execPath as String = "c:\xxxxxx\xxx.xlsx"

With officeFileProc
     .StartInfo.FileName = execPath
     .Start()
End With

ProcessクラスにはExistedイベントがあるので外部アプリケーションの終了を待つ事もできます。利用した限りですが、Shell関数よりもProcessクラスを利用した方が使い勝手がいいと感じています。

方法3 COMオブジェクトを利用する

方法1,2を知る前に試したのがCOMオブジェクトを利用した方法です。
利用する前にMicrosoft Excel xxx Object Libraryなどを参照する設定を行います。
2013-06-26_142835

<System.Runtime.InteropServices.DllImport("user32.dll")> _
Shared Function SetForegroundWindow(ByVal hWnd As IntPtr) As Boolean
End Function

Dim retWindowFore As Boolean
Dim xlApplication As Excel.Application = New Excel.Application
Dim xlBooks  As Excel.Workbooks

xlBooks = xlApplication.Workbooks
xlBooks.Open(ExcelFile)

xlApplication.Visible = True

'Excel ウィンドウをフォアグラウンド
retWindowFore = SetForegroundWindow(xlApplication.Hwnd)

'終了と解放-2013.06.26 追記分
xlApplication.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApplication)
前述の2方法に比べてですが、ExcelやWordをただ起動するだけならば「方法1,2」をおススメします。
理由は
  1. COMオブジェクトを利用し単純にExcelやWordを起動するとExcelやWordはバックグラウンドで起動してしまう
    ※user32.dllをインポートしSetForegroundWindow関数でフォアグランドにする方法で対処しました。(正しい作法かは分かりません・・・)
  2. [VBアプリケーションからExcelやWordを起動→ExcelやWordを終了する]とプロセスが残り、メモリがひっ迫する可能性がある
    2013-06-26_103054
  3. [VBアプリケーションからExcelやWordを起動→VBアプリケーションを終了→ExcelやWordを終了]するとタスクマネージャからプロセスを終了させるしかない
などのデメリットがあり、結局COMオブジェクトよる操作を諦めProcessクラスを利用しました。
当初、上記2,3の動作が全く分かりませんでしたが、わんくま同盟のメンバーさんが運営されている「C#とVB.NETの入門サイト」の
COM オブジェクトの参照カウントを解放する
に明記されている
COM オブジェクトを扱う場合は、参照カウントの解放を意識しなければなりません。使用した COM オブジェクトの参照カウントが、正しくデクリメントされていないと意図したタイミングでプロセスが解放されません。
を再度読み返したところ、動作が理解できました。
COMオブジェクトを使う場合は、意図的に[終了と解放]を使う事が大事なんですね!
インフラもそうですが、アプリケーション開発ももっと深い知識が必要。
日々精進、精進・・・

テキストエディタNotepad++の文字化けを直そう

image
今までテキストエディタを何種類か試してきましたが、最近は各種プログラム言語に対応したNotepad++を使っています。
導入したのはいいんですが、新規作成→日本語を入力すると予想に反し文字化け・・・
今回はNotepad++の文字化けの直し方をメモ。

Notepad++ EUC-JP版

image
K.Y氏、Don HO氏が本家Notepad++をEUC-JPに対応させてくれました。
ありがとうございます。
ダウンロードは下記リンクからどうぞ。

デフォルト状態だと日本語はおもいっきり文字化けします

image
デフォルト状態で日本語を入力すると文字化けします。
正しく表示させる方法は下記の通り。
  1. 設定→スタイル設定を選択image
  2. Global Stylesのフォントを日本語フォントに変更※例:MSPゴシック
    image

注意:@から始まるフォントは縦書き用です

image
日本語フォントに変更する際、@から始まるフォントを指定すると縦書きになってしまいます。
この点は注意してください。

余談:アイコンがかなり可愛い!

image
テキストファイルなどをNotepad++に関連付けました。
アイコンがかなり可愛い!
緑が映えるのでNotepad++だとすぐわかるのもいいですね。

余談2:ショートカット

今回の内容とは関係ないけど、notepad++のショートカットがサクラエディタと違っていたのでメモ。
Notepad++ Tips
置換はCtrl+Hなんだね。
サクラエディタはCtrl+Rなんだよね~ 

プラグインとアドオンとアドインの違い

みなさん、プラグインとアドオンとアドインの違いって分かりますか?
最近気がついたのですが、Windows Home Server2011の拡張ソフトウェアはアドイン、Windows Live Writerはプラグインを使っています。
抽象的な意味合いは全て同じだと思っていましたが、具体的な意味はどうも違うようです。
ちょっと調べてみたのでメモしておきます。

WLW C#でプラグインを開発するときは.Net Frameworkのバージョンに気をつけましょう

Windows Live Writer(WLW)のプラグインを作ってみようと思い、現在C#で開発を行なっています。

実際にDLLを作成しWLWにロードさせてみましたが全く認識しない・・・

原因はビルドするときの.Net Frameworkのバージョンによるものでしたのでメモしておきます。

同じ事をしようと思っている人は是非設定を変更してくださいね。

.Net Framework v4でビルド→WLWは認識しません

Visual C# 2010 Expressのデフォルト設定では対象のフレームワーク欄は.Net Framework v4になっています。

デフォルト設定でビルドするとDLLは出来ますが、WLWでは全く認識しません。

WLWが認識したバージョンは2.0、3.0、3.5

数日原因が分からず右往左往してましたが、マシンのセットアップするときに.Net Framework 3.5は下位互換(2.0/3.0)だったことををふと思い出しました。

試しに対象のフレームワーク欄を.Net Framework 2.0に変更しテストプログラムをビルド、WLWでロードしたところプラグインが動作しました。

image

なお、.Net Framework 3.0と3.5でビルドしてもプラグインは認識します。

image

.Net Framework 3.5 Client Profileはビルド時にエラー

.Net Framework 3.5 Client Profileはビルドする時に下記のエラーでダメ。

image

改めて.Net Frameworkのバージョンを勉強してみる

@ITさんの.NET Frameworkのバージョンを整理するという記事をみて改めて勉強してみました。

下記画像を見れば書くバージョンの互換性がひと目でわかりますね。

.Net Framework 2.0でビルドすると2.0/3.0/3.5の環境で動作、

.Net Framework 3.0でビルドすると3.0/3.5の環境で動作するようです。

image

プラグインは.Net Framework 2.0を選択すべし?

海外サイト記事How to create a Windows Live writer plugin using C# Part 1にもしっかり書かれていますね。

you are selecting the target framework as .Net 2.0, otherwise it may not works.
image

今度から開発は.Net Framework2.0に固定して行いたいと思います。

いや~久しぶりにハマったな・・・

Pythonでお手軽なHDD死活監視プログラムを作ってみた

先日低速病で有名なWD20EARSが突然OSから見えなくなる・・・という記事を書きましたが、HDDが突然見えなくと困るのでスクリプトを使ってHDDの死活監視をしてみたいと思います。

最近触っていないPythonを使ってプログラムを組みます。

死活監視の仕様

  1. LLを使って簡単にHDDの死活監視をする
  2. 該当ドライブが存在しているか定期的にチェック
  3. 存在していない場合、メールでアラートを出す

Pythonの環境を作る

  1. Pythonをインストールする
    何はともあれ、Pythonがインストールされていないとお話になりませんのでインストールしましょう。
    バージョンが2.x系と3.x系がありますが、私は2.7.xを使っています。
    2.x系を使う理由は安定性と3.x系の動向がどうなるか分からなかったから。

  2. pywin32をインストールする
    win32apiをコールすることができるpywin32をインストールしましょう。

プログラムを組んでみる

メール送信はウノウラボさんのPythonでメールを送信したい人のためのサンプル集の記事を参考にしました。

#coding:shift-jis
 
#
# HDD死活監視プログラム
# version - 1.0.0
#
 
#base module
import os, sys, datetime
import datetime
 
#pywin32 module
import win32api
 
#config-file parser module
import ConfigParser
 
#gmail
import smtplib
from email.MIMEText import MIMEText
from email.Header import Header
from email.Utils import formatdate
 
def create_message(from_addr, to_addr, subject, body, encoding):
    msg = MIMEText(body, 'plain', encoding)
    msg['Subject'] = Header(subject, encoding)
    msg['From'] = from_addr
    msg['To'] = to_addr
    msg['Date'] = formatdate()
    return msg
 
 
def send_via_gmail(from_addr, to_addr, msg):
    s = smtplib.SMTP('smtp.gmail.com', 587)
    s.ehlo()
    s.starttls()
    s.ehlo()
    s.login('Gメールのアドレス', 'パスワード')
    s.sendmail(from_addr, [to_addr], msg.as_string())
    s.close()
 
def logging(msg):
    now = datetime.datetime.now()
    log_msg = str(now) + '\t' + (msg) + '\n'
    LOG_FILE = os.path.join(os.path.dirname(__file__), 'log.txt')
 
    write_file(LOG_FILE, log_msg)
 
def write_file(file_path, msg):
    file = open(file_path, 'a')
    file.write(msg)
    file.flush()
    file.close()
 
if __name__ == '__main__':
 
    hdd_path = '監視するドライブ文字(例c:)'
    
    #ドライブチェック-pywin32使用-
    try:
        chkhdd = win32api.GetDiskFreeSpaceEx(hdd_path)
        log_msg = 'Active'
        
    except:
        print('no hdd')
        print('alert email sending...')
        
        #Gメール送信
        from_addr = '送信元メールアドレス'
        to_addr = '宛先メールアドレス'
        to_subj = u'HDDが見えなくなりました'
        to_body = u'サーバのHDDが見えなくなりました。\n確認してください!'
        msg = create_message(from_addr, to_addr, to_subj, to_body, 'ISO-2022-JP')
        send_via_gmail(from_addr, to_addr, msg)
        
        log_msg = 'Error! No HDD'
    
    logging(log_msg)
    
    quit()

タスクスケジューラで定期的にチェック


後はタスクスケジューラを使って定期的にプログラムを実行します。


私は15分に1回実行するようにしました。




プログラムは10分程度で作れましたが、正直こんなプログラム組まずに、HDDがずっと見える状態であればいいんですけどね・・・

それにしても、Pythonは手軽&高機能ですな~!


Microsoft社の取り組み

Microsoft社のまわし者ではありませんが、開発者へのサポート事業?として気になったものがあったのでメモ。
起業したときなどに使えそうですので、知っておくと得ですね。
  1. 開発者を支援する各種無償プログラム
    企業3年未満の会社や学生に対し、VS2010やWindows7、SQLServer2008などが無償提供されるプログラム。
    http://msdn.microsoft.com/ja-jp/hh341463
  2. Windows7移行実践ガイド
    XPから7への移行に関する特設サイト。
    チェッカーツールなどがあったりします。
    かなり前から移行を行なっている企業が多いと思いますが、躊躇しているところは一度使ってみるといいかもしれませんね。
    http://msdn.microsoft.com/ja-jp/windows/gg581817
  3. MSDN サンプルコード
    VS2010での開発はほとんどしたことがないのですが、MSDNではサンプルコードを提供してくれています。
    初めての人には優しいですね。使えるかどうかは別として・・・
    http://code.msdn.microsoft.com/
自社の製品をずっと使い続けさせる(離れられなくする)手法なんでしょうが、結構大胆ですね。
せっかくなので、該当する人たちは使い倒した方がいいでしょうね。


win32apiを使ったpythonプログラム

pythonからwin32apiをコールしたい時があり、どうすればいいか調べたのでメモ。
方法は二種類。
  1. ctypesの使用
    デフォルトで使用できるライブラリです。
    使い方は一般的なwin32apiをコールする感じですね。
  2. pywin32の使用
    「超」簡単にwin32apiを使用することができます。
詳しい違いはbonlifeさんのブログ記事を参照しましょう。

androidアプリ開発 調べた内容をメモ


  1. contextについて
    http://individualmemo.blog104.fc2.com/blog-entry-41.html
  2. gravityとlayout_gravityの違い
    http://magpad.jugem.jp/?eid=153
  3. app inventorで簡単androidアプリ
    http://www.appinventorbeta.com/learn/setup/setupwindows.html
  4. android:id="@+id/xxxx"はなに
    http://www.javadrive.jp/android/xml_layout/index6.html
  5. Toastとは
    http://wiki.livedoor.jp/moonlight_aska/d/%A5%C8%A1%BC%A5%B9%A5%C8%C4%CC%C3%CE%A4%F2%C9%BD%BC%A8%A4%B9%A4%EB
    LENGTH_SHORT:2秒間 LENGTH_LONG:4秒間

androidアプリ開発 パッケージ名の命名規則

以前から興味があったandroidアプリを開発してみようと思い、勉強を開始。
いかんせん、javaは初言語だけにわからないことが結構ある。
記述以前に文言が分からないね。
というわけで、java初心者の自分が調べた内容をメモ。

★パッケージの命名規則
プロジェクト作成時に設定しないといけないプロジェクト名ですが、他の方が作ったプログラムと重複しないように命名しなければならないそうです。
開発会社がドメインを取得しているのであれば、下記のような感じ。
ドメイン:xxx.hoge.com → プロジェクト名:com.hoge.xxx
Flashのクラスなんかもこんな階層構造になっていたから、考え方が一緒なのかも。

個人でドメインを取得している人は少なくないと思います。
その場合は、パッケージ名 登録/利用サービスを使う手があります。
※参考サイト:JAVAの道(http://www.javaroad.jp/java_package2.htm

python iteratorとgeneratorについて

最近、pythonを勉強中でして基本的な使い方はわかってきましたが、いかんせん組み込み関数のメカニズムがわからない点が多いです。

今回はiterator(イテレータ)とgenerator(ジェネレータ)について。

★iteratorとは
wikipediaではiteratortとは、
プログラミング言語において配列やそれに類似するデータ 構造の各要素に対する繰返し処理の抽象化
のことだそうです。
実際のところ、リストや文字列などの要素を1つずつ繰り返し抽出する機能のようです。
※表現が間違っていたらすみません。


★iteratorのサンプル
下記2つのサンプルは同じことをやっています。
※pythonのバージョンは2.7


d = [1,2,3,4]
#for文を使う
for i in d:
 print i


#iter関数を使う
it = iter(d)
next(i) #1
next(i) #2
・・・

★iteratorのメカニズム
python.jpのチュートリアルに記載されているとおり、forコンテナオブジェクトのiter関数を呼び出し、next関数で定義されたイテレータオブジェクト(抽出したデータ)を返します。

★generatorとは
python.jpのチュートリアルでは、generatorを
イテレータを作成するための簡潔で強力なツール
と説明されています。
メカニズムについても明記されているので、ちゃんと理解すればかなり使えるでしょう。
こういったツールがpythonらしいのかもしれませんね。



エキスパ-トPythonプログラミング
エキスパ-トPythonプログラミング
著者:タレク・ジアデ
価格:3,780円(税込、送料込)
楽天ブックスで詳細を見る

インデントのスタイル


最近になって再度プログラムの勉強をやっていますが、今まで基礎や歴史などをちゃんと理解しないでやっていたことが分かりました。
このうち、きになったことがあったのでメモしておきます。

今回はインデントについて。

インデントのスタイルは数種類あるようですが、目についた物を3つピックアップしてみました。
wikipediaに字下げスタイルという記事があり、もっと詳しく掲載されています。
  • K&Rスタイル
    CやFlashの開発する際はこのスタイル
    if (a > 0) {
     xxxx
    } else {
     yyy
    }
  • Microsoftスタイル
    MS VSなどはこのスタイルとか
    if (a > 0)
    {
     xxxx
    }
    else
    {
     yyy
    }
  • GNUスタイル
    GNU関係者はほぼ使っているとか。
    if (a > 0)
     {
      xxxx
     }
    else
     {
      yyy
     }

PowerBuilder:: PBから外部WSHを実行する

PB内部から外部WSHファイルを実行する方法をメモ。
Run("cscript.exe xxxx.vbs")
EXEファイルやバッチファイルは、cscript.exeなしで実行できます。

追伸
なかなかPBのテクニックが掲載されているWebサイトがなく困ってましたが、 ヨサゲなページを発見。
PowerBuilder Tips&Tricks

PB:: ドロップダウンリストボックスの行番号を取得

ドロップダウンリストボックスの何行目が選択されたかを知る方法を教えてもらったのでメモ。
  1. ドロップダウンリストボックスのテキストにIDを付ける
    001:xxxxx
    003:yyyy
    999:zzzzzzz
  2. 選択されているテキストを取得し、IDをチェック
    sId = LEFT(ddlb.text, 3)
  3. findItem関数を使ってIDを検索、戻り値が行番号
    iRowId = ddlb.findItem(sId, 0)
他の開発アプリケーションではありそうな機能なんだけどな~どうだろうか、PowerBuilder・・・

VB.Net:: 調べたクラス・関数等をメモ

SSISのスクリプトタスクを記述するにあたり、VB.Netの習得が必要になりました。

勉強のため調べた内容をざっとメモ。

★SqlConnectionクラス
SQLServerに接続するためのクラス。
Imports System.Data.SqlClientが必要

★OdbcConnectionクラス
ODBCを使ったDBに接続するためのクラス
Imports System.Data.Odbcが必要

★日時制御
DateTime構造体を使用。
サンプルはこちらにたくさんあります。
  1. 現在時刻
    obj.Today()
  2. 日の加減算
    obj.AddDays(x)
    ※年月日も同じようにAddXXXで処理できます。
  3. 出力形式
    obj.ToString("yyyy/MM/dd")

トランザクション制御
富士通のアプリケーション開発ガイドにトランザクション制御があったので拝借。
  1. コネクションを接続します。詳細は、“C.5.1 接続および切断”を参照してください。
  2. OdbcCommand.ExecuteNonQueryメソッドでSET TRANSACTION文を実行しアクセスモードを設定します。
  3. OdbcConnection.BeginTransactionメソッドでトランザクションを開始します。
    引数IsolationLevelに独立性水準(IsolationLevel.ReadCommitted)を設定します。
    OdbcTransactionオブジェクトが作成されます。
  4. 作成されたOdbcTransactionオブジェクトを、データ操作を行うオブジェクト(OdbcCommand)のTransactionプロパティに設定し実行します。
  5. データ操作が正常終了した場合、OdbcTransaction.Commitメソッドを実行します。
    データ操作が異常終了した場合、OdbcTransaction.Rollbackメソッドを実行します。
  6. コネクションを切断します。
  7. オブジェクトを破棄します。 
★値渡しと参照渡し
値渡し(ByVal)と参照渡し(ByRef)の違い。
値渡し→プロシージャ側で新しい変数に値がコピーされる。呼び出し側の変数への影響はなし
参照渡し→プロシージャ側に変数自体を渡されるため、呼び出し側の変数そのものに影響する。

ByRefの使いどころは、
  • 戻り値が複数ある
  • イベントの引数にスイッチの役割をもたせたい
  • 構造体データを引数に取りたい
  • オブジェクトを渡す
などがあるようです。(CavalierLab.さんのページより)

Windows:: .Net Framework2.0のエラー

SQL Server Business Intelligence Development StudioからODBC経由でPostgreSQLに接続しようとしたところ、.Net Framework 2.0のエラーが発生。

どうも下記画像のエラーは有名なエラーらしく、再インストールすることで改善できるとのこと。


2.0を再インストールする場合は、下記の手順で行います。
  1. 上位バージョンから削除し、最後に2.0を。
  2. 念のため再起動
  3. .Net Framework 3.5SP1をインストール
    ※3.5SP1は2.0~3.0までを包括的インストールしてくれます。
  4. Windows Updateで残りのパッチをあてる
2.0を再インストールすることで、下記エラーは出なくなりました。

開発環境でこんな状態が発生するのはいかがなもんかと思いますな~

DB:: PostgreSQL ODBCドライバと管理ツールPgAdminのダウンロード

PostgreSQLをちょいちょい使い始めましたが、ネイティブ接続ができないためODBCで接続するようにしています。

ODBCドライバと管理ツールPgAdminののダウンロードサイトをメモしておきます。

★PostgreSQL ODBC Driver
http://www.postgresql.org/ftp/odbc/versions/msi/

★管理ツールPgAdmin
http://www.pgadmin.org/

PB:: MDIウィンドウ

PBでMDI(マルチプル ドキュメント インターフェース)ウィンドウの作成方法をメモ。

★MDIウィンドウ作成方法
  1. Menuオブジェクトを作成
    適当なサブメニュー項目を作成、clicked!イベントのスクリプトを記述
    ※下のサンプルではreadmeというサブメニュー項目を作っています。
  2. 対象ウィンドウのプロパティ「ウィンドウの種類」から「MDI」を選択
  3. メニュー名に適当な名前を入力
    右の「...」ボタンから①のMenuオブジェクトを選択
  4. 実行











★作成結果

スポンサーリンク