現象:Telerik FileExplorerを使用したWebページで以下のエラーが表示される。
Invalid Characters In Folder Name
原因:Telerik FileExplorerのInitalPathが無効だと表示されるエラーでした。
2011年12月27日火曜日
2011年12月16日金曜日
文字列に特定の文字列が含まれているかを調べるには?
文字列に特定の文字列が含まれているかを調べるには?(Contains編)
string str = "ろうにゃくなんにょ";
Console.WriteLine(str.Contains("にゃく")); // 出力:True
Console.WriteLine(str.Contains("にゃん")); // 出力:False
ある文字列の部分文字列として特定の文字列が含まれているかどうかを調べるには、Stringクラス(System名前空間)のIndexOfメソッドを用いればよい。
IndexOfメソッドは本来、ある文字列において、パラメータで指定した検索文字列が最初に見つかった位置を得るためのものだ。もし検索文字列が見つからなかった場合には、戻り値は-1となる。よって、IndexOfメソッドの戻り値が0以上かどうかをチェックすれば、文字列が含まれているかどうかを調べることができる。
static bool HasString(string target, string word) {
if (word == "")
return false;
if (target.IndexOf(word) >= 0) {
return true;
} else {
return false;
}
}
string str = "ろうにゃくなんにょ";
Console.WriteLine(str.Contains("にゃく")); // 出力:True
Console.WriteLine(str.Contains("にゃん")); // 出力:False
ある文字列の部分文字列として特定の文字列が含まれているかどうかを調べるには、Stringクラス(System名前空間)のIndexOfメソッドを用いればよい。
IndexOfメソッドは本来、ある文字列において、パラメータで指定した検索文字列が最初に見つかった位置を得るためのものだ。もし検索文字列が見つからなかった場合には、戻り値は-1となる。よって、IndexOfメソッドの戻り値が0以上かどうかをチェックすれば、文字列が含まれているかどうかを調べることができる。
static bool HasString(string target, string word) {
if (word == "")
return false;
if (target.IndexOf(word) >= 0) {
return true;
} else {
return false;
}
}
2011年12月9日金曜日
.NetでDiff 実装
いろんな場所で必要になってきた、Diff
以下の場所に.Netライブラリとしてありました。
http://www.codeproject.com/KB/recipes/diffengine.aspx
以下の場所に.Netライブラリとしてありました。
http://www.codeproject.com/KB/recipes/diffengine.aspx
2011年12月8日木曜日
LINQ to SQL でクエリを直接実行
var db = new HgeHoge(@"c:\Hoge.mdf");
var r = db.ExecuteQuery<table>("SELECT * FROM Fuga WHERE Id ={0}", 5);
元ネタ
http://blogs.wankuma.com/rti/archive/2009/09/16/181295.aspx
Group Byとか、直接SQLを記述したい場合などに使えそう。
var r = db.ExecuteQuery
元ネタ
http://blogs.wankuma.com/rti/archive/2009/09/16/181295.aspx
Group Byとか、直接SQLを記述したい場合などに使えそう。
windows installer にアクセスできない
TOP > itやweb/情報系ソフトやWEBサービスなど, pcerror/パソコンのエラー対応 >
インストールエラー発生の原因と対処、windowsインストーラサービスにアクセスできませんでした…とは?
Inst_errorインストールエラー発生。「windowsインストーラサービスにアクセスできませんでした」というエラーメッセージ。新しいアプリケーション(プログラム)をインストールできない状況だ。これはどういうことか?これはWindowsインストーラのレジストリが壊れている可能性が高い。
Windowsインストーラは便利なプログラムだが、何かの拍子にインストール処理に失敗すると、ファイルとレジストリが不整合を起こす(レジストリが壊れる)らしい。それ以後Windowsインストーラが起動時にエラーを発生するようになる場合がある。
Windowsインストーラを使用してアプリケーションをインストールすると、レジストリにアプリケーションのインストール情報が書き込まれ、%SystemRoot%\Installerという隠しフォルダ内に、Windowsインストーラ・パッケージやWindowsインストーラ修正パッケージが保存される。
何らかの理由で、これらの隠しファイルとレジストリ情報が不整合性になることがある。この状態になると新しいアプリケーションがインストールエラーになりインストールできなくなってしまう。
また、最近のアプリケーションは、レジストリなどを正しく設定しないと実行できないことが多いため、Windowsインストーラが使えなくなるとアプリケーションも使えないことが起こりえる。
対策としては、Windows インストーラを登録解除してから再登録する。
Msiexec_unregister
※以下はマイクロソフトオンラインサポートより(アプリケーションのインストール時にエラー メッセージ "Windows インストーラ サービスにアクセスできませんでした" が表示される)
方法 1 : Windows インストーラを登録解除してから再登録する
1. [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。
2. 次に、MSIEXEC /regserver と入力し、[OK] をクリックします。この操作を正しく実行しても、処理が行われていないように見えるか、または砂時計が一瞬表示されることがあります。このコマンドを実行したら、操作は完了です。
3. Windows インストーラ ベースのアプリケーションを再実行します。
インストールエラー発生の原因と対処、windowsインストーラサービスにアクセスできませんでした…とは?
Inst_errorインストールエラー発生。「windowsインストーラサービスにアクセスできませんでした」というエラーメッセージ。新しいアプリケーション(プログラム)をインストールできない状況だ。これはどういうことか?これはWindowsインストーラのレジストリが壊れている可能性が高い。
Windowsインストーラは便利なプログラムだが、何かの拍子にインストール処理に失敗すると、ファイルとレジストリが不整合を起こす(レジストリが壊れる)らしい。それ以後Windowsインストーラが起動時にエラーを発生するようになる場合がある。
Windowsインストーラを使用してアプリケーションをインストールすると、レジストリにアプリケーションのインストール情報が書き込まれ、%SystemRoot%\Installerという隠しフォルダ内に、Windowsインストーラ・パッケージやWindowsインストーラ修正パッケージが保存される。
何らかの理由で、これらの隠しファイルとレジストリ情報が不整合性になることがある。この状態になると新しいアプリケーションがインストールエラーになりインストールできなくなってしまう。
また、最近のアプリケーションは、レジストリなどを正しく設定しないと実行できないことが多いため、Windowsインストーラが使えなくなるとアプリケーションも使えないことが起こりえる。
対策としては、Windows インストーラを登録解除してから再登録する。
Msiexec_unregister
※以下はマイクロソフトオンラインサポートより(アプリケーションのインストール時にエラー メッセージ "Windows インストーラ サービスにアクセスできませんでした" が表示される)
方法 1 : Windows インストーラを登録解除してから再登録する
1. [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。
2. 次に、MSIEXEC /regserver と入力し、[OK] をクリックします。この操作を正しく実行しても、処理が行われていないように見えるか、または砂時計が一瞬表示されることがあります。このコマンドを実行したら、操作は完了です。
3. Windows インストーラ ベースのアプリケーションを再実行します。
2011年12月7日水曜日
UniPaasで、Windows制御
UniPaasで、Windows制御
閉じるボタンを無効にするだけなら、
メインプログラムのタスク前に
アクション 式 CallDLL('USER32.EnableMenuItem', '4444', CallDLL('USER32.GetSystemMenu', '444', CallDLL('USER32.GetAncestor', '444', WinHWND(0), 2), 0), 61536, 2)
ついでにこれを書いておけばシステムメニューの閉じるも消せます。
アクション 式 CallDLL('USER32.DeleteMenu', '4444', CallDLL('USER32.GetSystemMenu', '444', CallDLL('USER32.GetAncestor', '444', WinHWND(0), 2), 0), 6, 1024)
アクション 式 CallDLL('USER32.DeleteMenu', '4444', CallDLL('USER32.GetSystemMenu', '444', CallDLL('USER32.GetAncestor', '444', WinHWND(0), 2), 0), 5, 1024)
閉じるボタンを無効にするだけなら、
メインプログラムのタスク前に
アクション 式 CallDLL('USER32.EnableMenuItem', '4444', CallDLL('USER32.GetSystemMenu', '444', CallDLL('USER32.GetAncestor', '444', WinHWND(0), 2), 0), 61536, 2)
ついでにこれを書いておけばシステムメニューの閉じるも消せます。
アクション 式 CallDLL('USER32.DeleteMenu', '4444', CallDLL('USER32.GetSystemMenu', '444', CallDLL('USER32.GetAncestor', '444', WinHWND(0), 2), 0), 6, 1024)
アクション 式 CallDLL('USER32.DeleteMenu', '4444', CallDLL('USER32.GetSystemMenu', '444', CallDLL('USER32.GetAncestor', '444', WinHWND(0), 2), 0), 5, 1024)
2011年12月6日火曜日
IE8以降のタブセッション
はじめに
IE8は、今までのIE6/IE7とは異なり、IEのアイコンから新規にウインドウを起動しても、最初に起動したウインドウとセッションが共有されてしまいます。
* IE8
IE6/7の考え方は通用せず、上記のようなやり方であればいずれもセッションを共有します。プロセスが違うウィンドウであっても。
そもそもIE6/7であればウィンドウの数よりプロセスの数が多くなることはありませんでしたが、IE8の場合はプロセスがひとつであっても、タブを増やすと複数のプロセスが出来たりします。
IE8でセッションを共有しない新しいウィンドウを開きたい場合は、「ファイル」→ 「新規セッション」でウィンドウを開きます。
[Browser]IEのウィンドウごとのセッション共有・非共有 はてなブックマーク - [Browser]IEのウィンドウごとのセッション共有・非共有
このため、IE8を新規セッションで起動するには、ユーザ側で意図的に新規セッションを開始するようにしないといけません。IE8を新規セッションで起動するには、以下の2つの方法があります。
IE8を新規セッションで起動する(メニューから)
IE8のメニューから「ファイル」-「新規セッション」で新規ウインドウを立ち上げると新たにセッションが開始され、既存のウインドウとはセッションが別ものになります。
f:id:replication:20100517233322j:image
IE8を新規セッションで起動する(コマンド)
また、IE8のexeファイルをnomergeオプションつきで起動することで、新規セッションで立ち上げることができます。
IE8のインストールディレクトリへ移動
cd C:\Program Files\Internet Explorer
IE8をnomergeオプションをつけて起動する
iexplore.exe -nomerge
【一般的なWindow別セッションの実現方法】
1.コマンドプロンプトから、「iexplorer -nomerge」起動する。
※-nomergeオプションを付けてIE8を起動すると、既にIE8が起動していてもCookieは引き継ぎません。
2.IE8の「ファイル」→「新規セッション」を選択して別ウインドウを起動する。
どちらの場合でもユーザ操作が必要であるため、運用を徹底するしか方法はありません。
IE8でのWindow別セッションの実現 (プログラミングワークショップ) はてなブックマーク - IE8でのWindow別セッションの実現 (プログラミングワークショップ)
IE8は、今までのIE6/IE7とは異なり、IEのアイコンから新規にウインドウを起動しても、最初に起動したウインドウとセッションが共有されてしまいます。
* IE8
IE6/7の考え方は通用せず、上記のようなやり方であればいずれもセッションを共有します。プロセスが違うウィンドウであっても。
そもそもIE6/7であればウィンドウの数よりプロセスの数が多くなることはありませんでしたが、IE8の場合はプロセスがひとつであっても、タブを増やすと複数のプロセスが出来たりします。
IE8でセッションを共有しない新しいウィンドウを開きたい場合は、「ファイル」→ 「新規セッション」でウィンドウを開きます。
[Browser]IEのウィンドウごとのセッション共有・非共有 はてなブックマーク - [Browser]IEのウィンドウごとのセッション共有・非共有
このため、IE8を新規セッションで起動するには、ユーザ側で意図的に新規セッションを開始するようにしないといけません。IE8を新規セッションで起動するには、以下の2つの方法があります。
IE8を新規セッションで起動する(メニューから)
IE8のメニューから「ファイル」-「新規セッション」で新規ウインドウを立ち上げると新たにセッションが開始され、既存のウインドウとはセッションが別ものになります。
f:id:replication:20100517233322j:image
IE8を新規セッションで起動する(コマンド)
また、IE8のexeファイルをnomergeオプションつきで起動することで、新規セッションで立ち上げることができます。
IE8のインストールディレクトリへ移動
cd C:\Program Files\Internet Explorer
IE8をnomergeオプションをつけて起動する
iexplore.exe -nomerge
【一般的なWindow別セッションの実現方法】
1.コマンドプロンプトから、「iexplorer -nomerge」起動する。
※-nomergeオプションを付けてIE8を起動すると、既にIE8が起動していてもCookieは引き継ぎません。
2.IE8の「ファイル」→「新規セッション」を選択して別ウインドウを起動する。
どちらの場合でもユーザ操作が必要であるため、運用を徹底するしか方法はありません。
IE8でのWindow別セッションの実現 (プログラミングワークショップ) はてなブックマーク - IE8でのWindow別セッションの実現 (プログラミングワークショップ)
2011年11月24日木曜日
2011年11月21日月曜日
2011年11月1日火曜日
UniPaas1.9gからXPS印刷可能
UniPaas1.9gからXPS印刷可能
UniPaas1.9gのプリンタ印刷で、XPSを指定します。
入出力ファイルの式で、出力ファイル名を指定します。
うまく、上記式で指定したファイル名で、XPSが作成出来ました。
UniPaas1.9gのプリンタ印刷で、XPSを指定します。
入出力ファイルの式で、出力ファイル名を指定します。
うまく、上記式で指定したファイル名で、XPSが作成出来ました。
ASP.NETでボタンから印刷
protected void btnPrint_Click(object sender, EventArgs e)
{
ClientScript.RegisterStartupScript(this.GetType(), "PrintOperation", "print()", true);
}
{
ClientScript.RegisterStartupScript(this.GetType(), "PrintOperation", "print()", true);
}
2011年10月27日木曜日
VisualStudio ASP.NETでデバッグが出来ない
VisualStudio ASP.NETでデバッグが出来ない
PF5を押しても、単体テストが出来なくなった。
理由
SilverLightのプロジェクトを追加した時に
開始オプションが、SilverLightのテストページを指定するようになっている。
ASP.NETの単体ページをテストする場合は
プロパティページを表示(プロジェクトの右クリックで表示)
開始オプションで、現在のページを使用するを選択する。
PF5を押しても、単体テストが出来なくなった。
理由
SilverLightのプロジェクトを追加した時に
開始オプションが、SilverLightのテストページを指定するようになっている。
ASP.NETの単体ページをテストする場合は
プロパティページを表示(プロジェクトの右クリックで表示)
開始オプションで、現在のページを使用するを選択する。
2011年10月26日水曜日
MAGIC 項目先頭に項目変数を表記
dbMAGICはビュー項目をAを起点とする記号で表示します。
プログラムを作りこむ時、指定するのはビュー項目ではなく記号を指定します。
A,B,Cと順番に増加していくのですが、開発時に煮詰まってくるともう何がなんだか分からなくなってしまいます。
dbMAGICの設定を指定するmagic.iniの値を変えると
[dbMAGIC_ENV]の中のShowItemSymbolSelect = Yの「;」を取ります。
[dbMAGIC_ENV]は[WINDOWS_PRINTER]の上でmagic.iniの最後のほうです。
henkou.bmpになります。どこが変わったかって。ビュー項目の前にAやBと言う記号がついていますよね。
項目が100とか200になると大変重宝します。
元ネタ
http://magic4423.seesaa.net/article/213986022.html?reload=2011-10-26T21:56:48
プログラムを作りこむ時、指定するのはビュー項目ではなく記号を指定します。
A,B,Cと順番に増加していくのですが、開発時に煮詰まってくるともう何がなんだか分からなくなってしまいます。
dbMAGICの設定を指定するmagic.iniの値を変えると
[dbMAGIC_ENV]の中のShowItemSymbolSelect = Yの「;」を取ります。
[dbMAGIC_ENV]は[WINDOWS_PRINTER]の上でmagic.iniの最後のほうです。
henkou.bmpになります。どこが変わったかって。ビュー項目の前にAやBと言う記号がついていますよね。
項目が100とか200になると大変重宝します。
元ネタ
http://magic4423.seesaa.net/article/213986022.html?reload=2011-10-26T21:56:48
Windows7 64bit版でodbc 32bitの設定を行う方法
■Windows7 64bit 版で odbc を使ってデータベースに接続するための注意点Add Star
Windows7 64bit 版の odbc には 32bit と 64bit 用の2種類の設定が別々に存在しているようです。
どちらを参照するかは実行するアプリケーションによって異なるようなので、場合によっては両方それぞれに設定することも必要なようです。
デフォルトの
コントロール パネル\すべてのコントロール パネル項目\管理ツール\データ ソース (ODBC) は 64bit 用の設定のようです。
32bit用の設定は以下からできます。
C:\Windows\SysWOW64\odbcad32.exe
Windows7 64bit 版の odbc には 32bit と 64bit 用の2種類の設定が別々に存在しているようです。
どちらを参照するかは実行するアプリケーションによって異なるようなので、場合によっては両方それぞれに設定することも必要なようです。
デフォルトの
コントロール パネル\すべてのコントロール パネル項目\管理ツール\データ ソース (ODBC) は 64bit 用の設定のようです。
32bit用の設定は以下からできます。
C:\Windows\SysWOW64\odbcad32.exe
2011年10月24日月曜日
2011年10月20日木曜日
IIS7 64bitで32bitを実行するおなじない
One of the performance benefits of the x64 platform is that it increases virtual address space, making more memory available. We recommend that you configure IIS to use a 32-bit worker processes on 64-bit Windows. Not only its compatibility better than the native 64-bit, performance and memory consumption are also better.
Set the Web server to enable this globally so that you do not need to set it for each application pool. Unlike previous versions of IIS, you can now configure specific worker processes to run in 32-bit or 64-bit mode independently of each other on the same server.
To configure 32-bit mode for the server
Open a command prompt and run the following:
%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.enable32BitAppOnWin64:true
Note: This setting applies only to 64-bit servers.
Set the Web server to enable this globally so that you do not need to set it for each application pool. Unlike previous versions of IIS, you can now configure specific worker processes to run in 32-bit or 64-bit mode independently of each other on the same server.
To configure 32-bit mode for the server
Open a command prompt and run the following:
%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.enable32BitAppOnWin64:true
Note: This setting applies only to 64-bit servers.
2011年10月18日火曜日
MS-SQLでオラクルのExportとImportを実装する
BCPコマンドでテーブルエクスポート用バッチファイルを作成 [SQLServer]
先日、SQLServer2005にてBCPコマンドを使用した
テーブルの全レコードをエクスポートするバッチファイル(拡張子「bat」)を
作成しました。
BCPコマンドは使用したことがなかったのですが、
書籍やネットで調べながら、何とか作る事ができました。
やっぱりバッチファイル(スクリプト)はGUIでマウス操作するよりも楽でいいですね。
バッチファイルを一度作ってしまえば、
次からはバッチファイルをダブルクリックするだけで、
やりたいことは全てバッチファイルが実行してくれますので、
かなり時間短縮できて効率的ですね。
以下、仕事で作成したバッチファイルを修正して、サンプルを作ってみました。
自分にとっての備忘録としても活用します(笑)
================================================================================
テーブルのエクスポートサンプル(バッチファイル[.bat])
================================================================================
rem テーブルのエクスポート(タブ区切りファイルでエクスポートする)
rem 実行結果ログ出力ファイル名を含むフルパスを設定する
set logfile=d:\ExportTable.log
rem テーブルのエクスポートを行う
bcp "testdb.dbo.table1" out "d:\table1.txt" -S TESTPC -U testuser -P test -c -t"\t" > %logfile%
bcp "testdb.dbo.table2" out "d:\table2.txt" -S TESTPC -U testuser -P test -c -t"\t" >> %logfile%
echo. >> %logfile%
echo "テーブルのエクスポートが正常に終了しました。" >> %logfile%
pause "テーブルのエクスポートが正常に終了しました。詳細は「" %logfile% "」をテキストエディタで開いて確認してください。"
================================================================================
テーブルのインポートサンプル(バッチファイル[.bat])
================================================================================
rem テーブルのインポート(タブ区切りファイルからインポートする)
rem 実行結果ログ出力ファイル名を含むフルパスを設定する
set logfile=d:\Import_Table.log
rem テーブルのインポートを行う
bcp "testdb.dbo.table1" in "d:\table1.txt" -S TESTPC -U testuser -P test -c -t"\t" > %logfile%
bcp "testdb.dbo.table2" in "d:\table2.txt" -S TESTPC -U testuser -P test -c -t"\t" >> %logfile%
echo. >> %logfile%
echo "テーブルのインポートが正常に終了しました。" >> %logfile%
pause "テーブルのインポートが正常に終了しました。詳細は「" %logfile% "」をテキストエディタで開いて確認してください。"
先日、SQLServer2005にてBCPコマンドを使用した
テーブルの全レコードをエクスポートするバッチファイル(拡張子「bat」)を
作成しました。
BCPコマンドは使用したことがなかったのですが、
書籍やネットで調べながら、何とか作る事ができました。
やっぱりバッチファイル(スクリプト)はGUIでマウス操作するよりも楽でいいですね。
バッチファイルを一度作ってしまえば、
次からはバッチファイルをダブルクリックするだけで、
やりたいことは全てバッチファイルが実行してくれますので、
かなり時間短縮できて効率的ですね。
以下、仕事で作成したバッチファイルを修正して、サンプルを作ってみました。
自分にとっての備忘録としても活用します(笑)
================================================================================
テーブルのエクスポートサンプル(バッチファイル[.bat])
================================================================================
rem テーブルのエクスポート(タブ区切りファイルでエクスポートする)
rem 実行結果ログ出力ファイル名を含むフルパスを設定する
set logfile=d:\ExportTable.log
rem テーブルのエクスポートを行う
bcp "testdb.dbo.table1" out "d:\table1.txt" -S TESTPC -U testuser -P test -c -t"\t" > %logfile%
bcp "testdb.dbo.table2" out "d:\table2.txt" -S TESTPC -U testuser -P test -c -t"\t" >> %logfile%
echo. >> %logfile%
echo "テーブルのエクスポートが正常に終了しました。" >> %logfile%
pause "テーブルのエクスポートが正常に終了しました。詳細は「" %logfile% "」をテキストエディタで開いて確認してください。"
================================================================================
テーブルのインポートサンプル(バッチファイル[.bat])
================================================================================
rem テーブルのインポート(タブ区切りファイルからインポートする)
rem 実行結果ログ出力ファイル名を含むフルパスを設定する
set logfile=d:\Import_Table.log
rem テーブルのインポートを行う
bcp "testdb.dbo.table1" in "d:\table1.txt" -S TESTPC -U testuser -P test -c -t"\t" > %logfile%
bcp "testdb.dbo.table2" in "d:\table2.txt" -S TESTPC -U testuser -P test -c -t"\t" >> %logfile%
echo. >> %logfile%
echo "テーブルのインポートが正常に終了しました。" >> %logfile%
pause "テーブルのインポートが正常に終了しました。詳細は「" %logfile% "」をテキストエディタで開いて確認してください。"
2011年10月17日月曜日
Subversion 1.7.0
Subversion 1.7.0
tortoisesvnも1.7.0になったが、アクセス出来ない
http://tortoisesvn.net/
1.6から1.7にファイルフォーマットを変換しないといけない。
tortoisesvnも1.7.0になったが、アクセス出来ない
http://tortoisesvn.net/
1.6から1.7にファイルフォーマットを変換しないといけない。
ASP.NET Ajax クライアント側フレームワークを読み込めませんでした
ASP.NET Ajax クライアント側フレームワークを読み込めませんでした。
dllに埋め込みされたjavaScriptがasp.net toolkitを使用している為
上記エラーメッセージが表示されると思われる。
(Telerikコンポーネントを使用していた場合、発生しました。)
解決方法
codeplexで公開されている、Ajax Control Toolkit をdownloadして
binフォルダに、dllをコピーする。
dllに埋め込みされたjavaScriptがasp.net toolkitを使用している為
上記エラーメッセージが表示されると思われる。
(Telerikコンポーネントを使用していた場合、発生しました。)
解決方法
codeplexで公開されている、Ajax Control Toolkit をdownloadして
binフォルダに、dllをコピーする。
2011年10月14日金曜日
request format is unrecognized for URL eunexpectedly ending in
webサービスでエラー表示
request format is unrecognized for URL eunexpectedly ending in
解決方法
http://aspadvice.com/blogs/ssmith/archive/2007/09/04/FIX-Request-format-is-unrecognized-for-URL-unexpectedly-ending-in.aspx
web.confiに以下の文を追加
<configuration>
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
</system.web>
</configuration>
request format is unrecognized for URL eunexpectedly ending in
解決方法
http://aspadvice.com/blogs/ssmith/archive/2007/09/04/FIX-Request-format-is-unrecognized-for-URL-unexpectedly-ending-in.aspx
web.confiに以下の文を追加
<configuration>
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
</system.web>
</configuration>
Open source ERP for C#
C#でオープンソースのERPがあった。
XERP.NET
http://xerpdotnet.codeplex.com/
SilverLightのモジュールも存在するらしい。
XERP.NET
http://xerpdotnet.codeplex.com/
SilverLightのモジュールも存在するらしい。
ラベル:
C#,
ERP,
OpenSource
2011年10月12日水曜日
Microsoft Project Server
Microsoft Project Server 2010 のインストール
必須要件が、Share Point 2010と、MS-SQL 2005以上の64bit
社内に64bitOSが、無いので、VMPlayerで構築
Project Serverは、インストールするまで、ハードルが高い。
必須要件が、Share Point 2010と、MS-SQL 2005以上の64bit
社内に64bitOSが、無いので、VMPlayerで構築
Project Serverは、インストールするまで、ハードルが高い。
vmplayer nat 設定
vmplayer nat 設定
VMPlayerを使用する時のネットワーク設定がデフォルトではNATになっている。
通常はこれで良いけど、サーバなどのサービスが、社内ネットワークから
参照出来ない。
VMPlLayer設定のネットワークをブリッジにすると
社内ネットワークから参照できた。
VMPlayerを使用する時のネットワーク設定がデフォルトではNATになっている。
通常はこれで良いけど、サーバなどのサービスが、社内ネットワークから
参照出来ない。
VMPlLayer設定のネットワークをブリッジにすると
社内ネットワークから参照できた。
2011年10月8日土曜日
LINQ to Entity
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
var onlineOrders =
from order in context.SalesOrderHeaders
where order.OnlineOrderFlag == true
select new
{
SalesOrderID = order.SalesOrderID,
OrderDate = order.OrderDate,
SalesOrderNumber = order.SalesOrderNumber
};
foreach (var onlineOrder in onlineOrders)
{
Console.WriteLine("Order ID: {0} Order date: {1:d} Order number: {2}",
onlineOrder.SalesOrderID,
onlineOrder.OrderDate,
onlineOrder.SalesOrderNumber);
}
}
{
var onlineOrders =
from order in context.SalesOrderHeaders
where order.OnlineOrderFlag == true
select new
{
SalesOrderID = order.SalesOrderID,
OrderDate = order.OrderDate,
SalesOrderNumber = order.SalesOrderNumber
};
foreach (var onlineOrder in onlineOrders)
{
Console.WriteLine("Order ID: {0} Order date: {1:d} Order number: {2}",
onlineOrder.SalesOrderID,
onlineOrder.OrderDate,
onlineOrder.SalesOrderNumber);
}
}
2011年10月7日金曜日
VMware vSphere Hypervisor 無料のVMWare
VMware vSphere Hypervisor
VMPlayerが無料になっているのは、知っていましたが
サーバも無料版があるのは、知りませんでした。
VMPlayerが無料になっているのは、知っていましたが
サーバも無料版があるのは、知りませんでした。
2011年10月6日木曜日
Titanium Studio
Titanium Studio
iPhone(iOS)と、Androidの両方の開発が可能な、IDE
JavaScriptを使用して両方のプラットフォームをカバーしているらしい。
しかも、開発環境は無料なので、時間があったら使用してみたい。
http://developer.appcelerator.com/get_started
iPhone(iOS)と、Androidの両方の開発が可能な、IDE
JavaScriptを使用して両方のプラットフォームをカバーしているらしい。
しかも、開発環境は無料なので、時間があったら使用してみたい。
http://developer.appcelerator.com/get_started
asp.net 4.0で、JavaScritからpostする方法
<script type="text/javascript">
function rowSelected(sender, args) {
var key = args.getDataKeyValue("ChildPN");
var theForm = document.forms['form1'];
theForm.method = "post";
theForm.action = "BOMSubmit.aspx?pt=" + key;
theForm.submit();
}
</script>
function rowSelected(sender, args) {
var key = args.getDataKeyValue("ChildPN");
var theForm = document.forms['form1'];
theForm.method = "post";
theForm.action = "BOMSubmit.aspx?pt=" + key;
theForm.submit();
}
</script>
2011年10月5日水曜日
Windows 自動ログインの方法
セキュリティを無視して自動でログインしたい、パスワードの入力を省略したい、なんて無茶な要求が来ると思うので、何かの参考になれば。
やり方は、XPやVistaと同じで、
ファイル名を指定して実行 から control userpasswords2 を起動して設定するだけでOKでした。
やり方は、XPやVistaと同じで、
ファイル名を指定して実行 から control userpasswords2 を起動して設定するだけでOKでした。
2011年9月30日金曜日
MS-SQLで階層を表現する
LevelPath順に表示したい場合
ItemNo+LevelのItemNoを追加した
ただし、ItemNoが数字属性なので、すべてにおいてCASTしないと
下記のエラーが表示される
Types don't match between the anchor and the recursive part in column "ColumnName" of recursive
query "CTE_Name"
WITH BOM(Lv1, ItemNO, ChildPN, ChildPartName, Quantity,
ParentPN, LevelPath)
AS
(SELECT 1 AS Lv1, ItemNo, ChildPN, PartName, Quantity, ParentPN, CAST('/' + RIGHT('000' + CAST(ItemNo as varchar(256)),3) as varchar(256)) as LevelPath
FROM UP_BOM
INNER JOIN UP_Item I1 ON i1.PartNo = ChildPN
WHERE ParentPN = 'J073-185 '
UNION ALL
SELECT h.Lv1 + 1, d.ItemNo, d.ChildPN, i2.PartName, d.Quantity, d.ParentPN, CAST((RTRIM(h.LevelPath) + '/' + RIGHT('000' + CAST(d.ItemNo as varchar(256)),3)) as varchar(256)) as levelPath
FROM UP_BOM d
INNER JOIN BOM h ON h.ChildPN = d.ParentPN
INNER JOIN UP_Item I2 ON i2.PartNo = d.ChildPN)
SELECT Lv1, ItemNo, ChildPN, ChildPartName, Quantity, ParentPN, LevelPath
FROM BOM
ORDER By LevelPath
ItemNo+LevelのItemNoを追加した
ただし、ItemNoが数字属性なので、すべてにおいてCASTしないと
下記のエラーが表示される
Types don't match between the anchor and the recursive part in column "ColumnName" of recursive
query "CTE_Name"
WITH BOM(Lv1, ItemNO, ChildPN, ChildPartName, Quantity,
ParentPN, LevelPath)
AS
(SELECT 1 AS Lv1, ItemNo, ChildPN, PartName, Quantity, ParentPN, CAST('/' + RIGHT('000' + CAST(ItemNo as varchar(256)),3) as varchar(256)) as LevelPath
FROM UP_BOM
INNER JOIN UP_Item I1 ON i1.PartNo = ChildPN
WHERE ParentPN = 'J073-185 '
UNION ALL
SELECT h.Lv1 + 1, d.ItemNo, d.ChildPN, i2.PartName, d.Quantity, d.ParentPN, CAST((RTRIM(h.LevelPath) + '/' + RIGHT('000' + CAST(d.ItemNo as varchar(256)),3)) as varchar(256)) as levelPath
FROM UP_BOM d
INNER JOIN BOM h ON h.ChildPN = d.ParentPN
INNER JOIN UP_Item I2 ON i2.PartNo = d.ChildPN)
SELECT Lv1, ItemNo, ChildPN, ChildPartName, Quantity, ParentPN, LevelPath
FROM BOM
ORDER By LevelPath
MS-SQLで階層を表現する
with c as (
select '/'+cast(billID as varchar(49)) as path,BillID
from dbo.bill b
where b.parentBillID is null
union all
select cast(c.path+'/'+CAST(b.billID as varchar(4)) as varchar(50)), b.billID
from dbo.bill b join c on b.parentBillID = c.billID)
select c.path+'/',b.descr
from c join dbo.bill b on c.billID = b.billID
order by 1;
MS-SQLの階層にRowNumみたいな順番が無いので、一番最初の項目にlevelを表現している。
select '/'+cast(billID as varchar(49)) as path,BillID
from dbo.bill b
where b.parentBillID is null
union all
select cast(c.path+'/'+CAST(b.billID as varchar(4)) as varchar(50)), b.billID
from dbo.bill b join c on b.parentBillID = c.billID)
select c.path+'/',b.descr
from c join dbo.bill b on c.billID = b.billID
order by 1;
MS-SQLの階層にRowNumみたいな順番が無いので、一番最初の項目にlevelを表現している。
2011年9月29日木曜日
asp.net MVCを使用する場合、ASPXエンジンは無効化しておこう
[参考]ASPXエンジンは無効化しておこう
ASP.NET MVC 3はデフォルトで、WebFormViewEngine(ASPX)/RazorViewEngineエンジンを有効にしている。しかし、アプリケーションでRazorしか利用していないならば、ASPXエンジンは除去しておくのが望ましいだろう。
これによって、ASPXテンプレート検索のオーバーヘッドがなくなるので、わずかながらパフォーマンスが改善する(この事情は、部分ビュー検索の場合だけでなく、通常のビュー、レイアウトでも同じだ)。
ASPXエンジンを除去するには、Global.asaxのApplication_Startイベント・ハンドラーに以下のようなコードを記述すればよい。
protected void Application_Start() {
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new RazorViewEngine());
……中略……
}
Sub Application_Start()
ViewEngines.Engines.Clear()
ViewEngines.Engines.Add(New RazorViewEngine())
……中略……
End Sub
ASP.NET MVC 3はデフォルトで、WebFormViewEngine(ASPX)/RazorViewEngineエンジンを有効にしている。しかし、アプリケーションでRazorしか利用していないならば、ASPXエンジンは除去しておくのが望ましいだろう。
これによって、ASPXテンプレート検索のオーバーヘッドがなくなるので、わずかながらパフォーマンスが改善する(この事情は、部分ビュー検索の場合だけでなく、通常のビュー、レイアウトでも同じだ)。
ASPXエンジンを除去するには、Global.asaxのApplication_Startイベント・ハンドラーに以下のようなコードを記述すればよい。
protected void Application_Start() {
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new RazorViewEngine());
……中略……
}
Sub Application_Start()
ViewEngines.Engines.Clear()
ViewEngines.Engines.Add(New RazorViewEngine())
……中略……
End Sub
2011年9月28日水曜日
asp.netで、本番では、InProcでセッション管理をしない
ビューステート/セッション を使用する際に注意する点を改めてまとめておきます。
ビューステート
・ビューステート には他人に知られて困るデータ格納しない
・ビューステート のサイズに気をつける
・ビューステート の暗号化はしっかりとテストしてから使う
セッション
・InProc を使わない
・セッションがあることを前提に処理を行わない
InProcの場合、iis再起動でWebApplicationも再起動が必要なので
出来れば、本番環境では、InProcを使用しない。
セッションモードMSDNの資料
http://msdn.microsoft.com/ja-jp/library/ms178586%28VS.80%29.aspx
ビューステート
・ビューステート には他人に知られて困るデータ格納しない
・ビューステート のサイズに気をつける
・ビューステート の暗号化はしっかりとテストしてから使う
セッション
・InProc を使わない
・セッションがあることを前提に処理を行わない
InProcの場合、iis再起動でWebApplicationも再起動が必要なので
出来れば、本番環境では、InProcを使用しない。
セッションモードMSDNの資料
http://msdn.microsoft.com/ja-jp/library/ms178586%28VS.80%29.aspx
2011年9月27日火曜日
Telerik.Web.UI.ExpressionParser.ParsePrimaryStart()
Telerik.Web.UI.ExpressionParser.ParsePrimaryStart()
With the .NET 3.5 build of RadGrid for ASP.NET AJAX and LINQ filter expressions enabled (EnableLinqExpressions = true), the filter expressions set for the grid either internally by its filtering mechanism or manually in code should conform to the LINQ expression syntax instead of the old T-SQL syntax. Only thus they will be evaluated properly by the control.
EnableLinqExpressions = False is T-SQL
通常は、EnableLinqExpressions=trueだからLinq形式になっている。
T-SQL形式にする場合はm上記をfalseにする。
With the .NET 3.5 build of RadGrid for ASP.NET AJAX and LINQ filter expressions enabled (EnableLinqExpressions = true), the filter expressions set for the grid either internally by its filtering mechanism or manually in code should conform to the LINQ expression syntax instead of the old T-SQL syntax. Only thus they will be evaluated properly by the control.
EnableLinqExpressions = False is T-SQL
通常は、EnableLinqExpressions=trueだからLinq形式になっている。
T-SQL形式にする場合はm上記をfalseにする。
2011年9月22日木曜日
C# ASP.NET mappath
Pageが有る場合
Label1.Text = Server.MapPath("./");
// 出力例:C:\WebSites\WebSite1\
Pageが無い場合
HttpContext.Current.Server.MapPath("./");
// 出力例:C:\WebSites\WebSite1\
Label1.Text = Server.MapPath("./");
// 出力例:C:\WebSites\WebSite1\
Pageが無い場合
HttpContext.Current.Server.MapPath("./");
// 出力例:C:\WebSites\WebSite1\
2011年9月17日土曜日
asp.netでenterkeyを無効にする方法
http://msdn.microsoft.com/ja-jp/library/cc766700.aspx
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
form1.Attributes("onkeydown") = "if(event.keyCode==13){
if(window.event.srcElement.type!='submit' &&
window.event.srcElement.type!='textarea'){
return false;
}
}"
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
form1.Attributes("onkeydown") = "if(event.keyCode==13){
if(window.event.srcElement.type!='submit' &&
window.event.srcElement.type!='textarea'){
return false;
}
}"
End Sub
2011年9月14日水曜日
LINQ TO SQLのUpdateが失敗する
LINQ TO SQLのUpdateが失敗する。
テーブルにプライマリーキーが無いと更新してくれないらしい。
エラー表示もしないので、気が付かなかった。
テーブルにプライマリーキーが無いと更新してくれないらしい。
エラー表示もしないので、気が付かなかった。
2011年9月8日木曜日
Oracle11g ユーザー期限切れ
とりあえず、10gまで通り(パスワードは無期限有効)にする設定、ロックされたアカウントを復旧させる設定をメモっておく。
1. SQLPlusを起動:
sqlplus /nolog
2. SYSDBAでログイン:
conn /as sysdba
3. アカウントのプロファイルがデフォルトのままである場合は、デフォルトプロファイルの設定でパスワードを無期限有効に変更:
alter profile default limit password_life_time unlimited;
4. ユーザのパスワードを再設定:
alter user ユーザ名 identified by 新パスワード;
5. ロックされていたアカウントをロック解除
alter user ユーザ名 account unlock;
1. SQLPlusを起動:
sqlplus /nolog
2. SYSDBAでログイン:
conn /as sysdba
3. アカウントのプロファイルがデフォルトのままである場合は、デフォルトプロファイルの設定でパスワードを無期限有効に変更:
alter profile default limit password_life_time unlimited;
4. ユーザのパスワードを再設定:
alter user ユーザ名 identified by 新パスワード;
5. ロックされていたアカウントをロック解除
alter user ユーザ名 account unlock;
2011年9月1日木曜日
Telerik RadGridのFilterで大文字小文字の区別をしない
Telerik RadGridのFilterで大文字小文字の区別をしない
たぶん
<groupingsettings CaseSensitive="false" />
コレを追加すると解消される
たぶん
<groupingsettings CaseSensitive="false" />
コレを追加すると解消される
2011年8月31日水曜日
Telerik ReportのDrilldownを使用する方法
http://tv.telerik.com/watch/reporting/creating-drilldown-reports-with-telerik-reporting
項目にActionを追加
Toggle Visibilityを選択して、次のグループ名をEdit Toggle targetsで選択する
項目にActionを追加
Toggle Visibilityを選択して、次のグループ名をEdit Toggle targetsで選択する
2011年8月25日木曜日
String or binary data would be truncated.
String or binary data would be truncated.
MS-SQLで桁数オーバーした場合、上記のエラーが表示される。
MS-SQLで桁数オーバーした場合、上記のエラーが表示される。
2011年8月12日金曜日
Telerik RadAsyncUploadで、uploadする時、dialogが表示される
Telerik RadAsyncUploadで、uploadする時、dialogが表示される。
http://www.telerik.com/community/forums/aspnet-ajax/upload/radasyncupload-control-asking-for-login-in-sharepoint.aspx
web.configに以下の設定を追加する。
<location path="Telerik.Web.UI.WebResource.axd">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
追加場所は、
<connectionstrings>と <system.web>の間です。
http://www.telerik.com/community/forums/aspnet-ajax/upload/radasyncupload-control-asking-for-login-in-sharepoint.aspx
web.configに以下の設定を追加する。
<location path="Telerik.Web.UI.WebResource.axd">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
追加場所は、
<connectionstrings>と <system.web>の間です。
2011年8月9日火曜日
JavaScript Checkboxの値を取得
var receipt = document.getElementById('ctl00_ContentPlaceHolder1_chkReceive').checked;
2011年8月4日木曜日
2011年8月3日水曜日
2011年7月28日木曜日
SQLの1項目の文字列に改行を入れたい
MS-SQL
NCHAR(13) + NCHAR(10)
UPDATE hoge
SET notes = 'test strings' + NCHAR(13) + NCHAR(10)
+ ' second rows.'
Oracleなら
NCHAR(13) || NCHAR(10)
UPDATE hoge
SET notes = 'test strings' || CHR(13) || CHR(10)
|| ' second rows.'
NCHAR(13) + NCHAR(10)
UPDATE hoge
SET notes = 'test strings' + NCHAR(13) + NCHAR(10)
+ ' second rows.'
Oracleなら
NCHAR(13) || NCHAR(10)
UPDATE hoge
SET notes = 'test strings' || CHR(13) || CHR(10)
|| ' second rows.'
2011年7月27日水曜日
小数点があるかの判定
// 小数を含むかどうかをチェックする
if (Validation.IsDecimal(12.001)) {
MessageBox.Show("小数を含みます");
}
public static bool IsDecimal(double dValue) {
if (dValue - System.Math.Floor(dValue) != 0) {
return true;
}
return false;
}
元ネタ http://jeanne.wankuma.com/tips/csharp/validation/isdecimal.html
if (Validation.IsDecimal(12.001)) {
MessageBox.Show("小数を含みます");
}
public static bool IsDecimal(double dValue) {
if (dValue - System.Math.Floor(dValue) != 0) {
return true;
}
return false;
}
元ネタ http://jeanne.wankuma.com/tips/csharp/validation/isdecimal.html
2011年7月25日月曜日
int?をintに変換できない
ストアドプロシジャの受け渡しパラメータがint?になっている。
コール元のC#では、以下の定義を行う。
private Int32 getCardNumber(string iEntityCode)
{
System.Nullable<int> vCardNumber = 0;
using (var db = new ExpenseDataClassesDataContext(ConfigurationManager.ConnectionStrings["ExpenseConnStr"].ToString()))
{
var c1 = db.usp_getNewCardNumber(Session["EntityCode"].ToString(), ref vCardNumber);
return (int)vCardNumber;
}
}
コール元のC#では、以下の定義を行う。
private Int32 getCardNumber(string iEntityCode)
{
System.Nullable<int> vCardNumber = 0;
using (var db = new ExpenseDataClassesDataContext(ConfigurationManager.ConnectionStrings["ExpenseConnStr"].ToString()))
{
var c1 = db.usp_getNewCardNumber(Session["EntityCode"].ToString(), ref vCardNumber);
return (int)vCardNumber;
}
}
2011年7月23日土曜日
Linqでstored procedureを実行 戻り値あり(一つ)
Linqでstored procedureを実行
Linqでstored procedureを実行 ※戻り値あり
using (var db1 = new aDataClassesDataContext(ConfigurationManager.ConnectionStrings["ExpenseConnStr"].ToString()))
{
var c1 = db1.usp_getNewClaimNumber(Session["Code"].ToString(), ref po_Number);
}
1.LINQ To SQLクラスにストアドプロシージャを含める。
2.LINQで、通常通りに、上記オブジェクトを指定する
3.これで、ストアドが実行される。
4.戻り値は、ストアドを記述する時、受け渡しパラメータで、outputを記述
5.C#(Linq)からは、refで受け取る。
LINQの良い所、受け渡しパラメータを自動生成してくれるから、パラメータの設定コードを
記述する必要が無い。
stored procedure
CREATE PROCEDURE usp_getNewClaimNumber
@pi_EntityCode [char](2),
@po_ClaimNumber NVARCHAR(9) OUTPUT
Linqでstored procedureを実行 ※戻り値あり
using (var db1 = new aDataClassesDataContext(ConfigurationManager.ConnectionStrings["ExpenseConnStr"].ToString()))
{
var c1 = db1.usp_getNewClaimNumber(Session["Code"].ToString(), ref po_Number);
}
1.LINQ To SQLクラスにストアドプロシージャを含める。
2.LINQで、通常通りに、上記オブジェクトを指定する
3.これで、ストアドが実行される。
4.戻り値は、ストアドを記述する時、受け渡しパラメータで、outputを記述
5.C#(Linq)からは、refで受け取る。
LINQの良い所、受け渡しパラメータを自動生成してくれるから、パラメータの設定コードを
記述する必要が無い。
stored procedure
CREATE PROCEDURE usp_getNewClaimNumber
@pi_EntityCode [char](2),
@po_ClaimNumber NVARCHAR(9) OUTPUT
2011年7月21日木曜日
asp.netでJavascriptからpostする方法(.NET3.5)
<script type="text/javascript">
aspnetForm.method = "post";
aspnetForm.action = "DetailEditCard.aspx?q=" + Args;
aspnetForm.submit();
</script type="text/javascript">
aspnetForm.method = "post";
aspnetForm.action = "DetailEditCard.aspx?q=" + Args;
aspnetForm.submit();
</script type="text/javascript">
2011年7月20日水曜日
Telerik RadGrid上の項目上のヘッダ行を取得する方法
GridHeaderItem headerItem = GridHeaderItem)RadGrid1.MasterTableView.GetItems(GridItemType.Header)[0];
Boolean vfound = ((CheckBox)headerItem.FindControl("chkHeadConfirm")).Checked;
RadGridのヘッダ部分にcheckboxを追加、checkboxのon/offで明細を変更したい時に使用
Boolean vfound = ((CheckBox)headerItem.FindControl("chkHeadConfirm")).Checked;
RadGridのヘッダ部分にcheckboxを追加、checkboxのon/offで明細を変更したい時に使用
2011年7月11日月曜日
Magic uniPaaSのウィンドウやパレットが見えなくなってしまった
Magic uniPaaSのウィンドウやパレットが見えなくなってしまった
Magic uniPaaSは、直前に表示していたウインドウ(例えば、式エディタ)やパレット(例えば、ナビゲータ)の位置情報を以下の場所に保存しています。
1. レジストリ
HKEY_CURRENT_USER\Software\MSJ\uniPaaS
たとえば、Magic uniPaaS Ver1.9のチェッカーのパレット位置は、以下で保存されています。
HKEY_CURRENT_USER\Software\MSJ\uniPaaS\1.9\Checker
フローモニターは以下に保存されています。
HKEY_CURRENT_USER\Software\MSJ\uniPaaS\1.9\FlowMonitor
2. 追加情報が保存されているXMLファイル
C:\Documents and Settings\user name\Application Data\MSJ\uniPaaS\FormsUserState_jpn.xml
これらのレジストリ情報やXMLファイルを削除すると、すべてのウインドウとパレットはデフォルトの位置にリセットされます。
Magic uniPaaSの終了後に(すべての値は、終了時に書き込まれます)ときに、情報を削除してください。Magic uniPaaSが再起動されると、デフォルトの位置にウインドウが表示されます。
Magic uniPaaSは、直前に表示していたウインドウ(例えば、式エディタ)やパレット(例えば、ナビゲータ)の位置情報を以下の場所に保存しています。
1. レジストリ
HKEY_CURRENT_USER\Software\MSJ\uniPaaS
たとえば、Magic uniPaaS Ver1.9のチェッカーのパレット位置は、以下で保存されています。
HKEY_CURRENT_USER\Software\MSJ\uniPaaS\1.9\Checker
フローモニターは以下に保存されています。
HKEY_CURRENT_USER\Software\MSJ\uniPaaS\1.9\FlowMonitor
2. 追加情報が保存されているXMLファイル
C:\Documents and Settings\user name\Application Data\MSJ\uniPaaS\FormsUserState_jpn.xml
これらのレジストリ情報やXMLファイルを削除すると、すべてのウインドウとパレットはデフォルトの位置にリセットされます。
Magic uniPaaSの終了後に(すべての値は、終了時に書き込まれます)ときに、情報を削除してください。Magic uniPaaSが再起動されると、デフォルトの位置にウインドウが表示されます。
2011年7月7日木曜日
Telerik ComboxBoxでAllを追加
Telerik ComboBoxを使用する時、データソースに無い情報をALLにして
すべて選択させたい場合がある。
AppendDataBoundItems=”true”にして
アイテムレコードを追加する。
選択するデータセットの条件式に
SelectCommand="if (@Type <> '0') begin
.... WHERE 条件式 = 上記ComboBoxの値 end else begin SELECT * FROM ... end
ComboBoxの値が0以外なら、条件式を適用、0ならSQLの条件WHERE句無しとする。
※MS-SQLなら記述出来るけど、OracleはNGかも
すべて選択させたい場合がある。
AppendDataBoundItems=”true”にして
アイテムレコードを追加する。
選択するデータセットの条件式に
.... WHERE 条件式 = 上記ComboBoxの値 end else begin SELECT * FROM ... end
ComboBoxの値が0以外なら、条件式を適用、0ならSQLの条件WHERE句無しとする。
※MS-SQLなら記述出来るけど、OracleはNGかも
Telerikのコントロール値をJavaScriptで取得
var combo = $find("<%= cbxComboBox.ClientID %>");
var item = combo.get_value();
var item = combo.get_value();
2011年7月4日月曜日
html(web)で絶対値で表示させたい
html(web)で、WinFormみたいに、絶対値表示させたい場合がある。
style="left: 700px;position: absolute;"
上記スタイルを使用して、絶対値表示を行った。
(あまりやりたくないけど)
style="left: 700px;position: absolute;"
上記スタイルを使用して、絶対値表示を行った。
(あまりやりたくないけど)
IIS7.5 Windows認証 その2
IIS7.5 Windows認証をIIS側で設定終了後
端末のIEのセキュリティ設定が必要
接続するIISのアドレをイントラネットとして認識させる必要がある。
ADを使用しているなら、グループポリシーで設定するのが簡単
ただし、グループポリシーで設定する場合、個人で設定されていた
イントラネットの設定は無効になるので注意が必要です。
(ADの設定が上書きされます。)
端末のIEのセキュリティ設定が必要
接続するIISのアドレをイントラネットとして認識させる必要がある。
ADを使用しているなら、グループポリシーで設定するのが簡単
ただし、グループポリシーで設定する場合、個人で設定されていた
イントラネットの設定は無効になるので注意が必要です。
(ADの設定が上書きされます。)
2011年6月28日火曜日
Evalで、文字編集
通常は
<%# Eval("Price") %> で、項目名を設定すれば良いが
数字の場合、編集して表示させたい時がある。
<%# DataBinder.Eval(Container.DataItem, "Price", "{0:c}") %>
<%# Eval("Price") %> で、項目名を設定すれば良いが
数字の場合、編集して表示させたい時がある。
<%# DataBinder.Eval(Container.DataItem, "Price", "{0:c}") %>
2011年6月23日木曜日
microsoft reportviewer
microsoft reportviewer
開発PCには、インストールされているが、実行サーバにはインストールされていなかった。
ココから、downkload出来る。
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6442
開発PCには、インストールされているが、実行サーバにはインストールされていなかった。
ココから、downkload出来る。
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6442
2011年6月22日水曜日
2011年6月16日木曜日
LINQでラムダ式でソートを行う方法
using (var db = new ExpenseDataClassesDataContext(ConfigurationManager.ConnectionStrings["ExpenseConnStr"].ToString()))
{
var t1 = db.TaxRate.OrderByDescending(x => x.StartDate).FirstOrDefault(a => a.EntityCode == iEntityCode && a.StartDate.Date <= iStartDate.Date);
if (t1 != null)
{
return t1.TaxRate1;
}
else
{
return 0;
}
}
この場合、1件だけを取得する、それとソート順はDESC
ソート順はASCにしたい場合は、OrderByを使用する。
{
var t1 = db.TaxRate.OrderByDescending(x => x.StartDate).FirstOrDefault(a => a.EntityCode == iEntityCode && a.StartDate.Date <= iStartDate.Date);
if (t1 != null)
{
return t1.TaxRate1;
}
else
{
return 0;
}
}
この場合、1件だけを取得する、それとソート順はDESC
ソート順はASCにしたい場合は、OrderByを使用する。
LINQで日付比較
where rc.Status == "Py"
&& (rc.DatePayment.Value.Date >= RadDatePickerFrom.SelectedDate.Value.Date
&& rc.DatePayment.Value.Date <= RadDatePickerTo.SelectedDate.Value.Date
&& (rc.DatePayment.Value.Date >= RadDatePickerFrom.SelectedDate.Value.Date
&& rc.DatePayment.Value.Date <= RadDatePickerTo.SelectedDate.Value.Date
linqでデータを取得
using (var db = new ExpenseDataClassesDataContext(ConfigurationManager.ConnectionStrings["ExpenseConnStr"].ToString()))
{
var records =
from rc in db.ClaimHeader
where rc.UserName == Session["UserName"].ToString() && rc.Status != "De"
select rc;
//
foreach (var r in records)
{
Response.BinaryWrite("");
}
}
{
var records =
from rc in db.ClaimHeader
where rc.UserName == Session["UserName"].ToString() && rc.Status != "De"
select rc;
//
foreach (var r in records)
{
Response.BinaryWrite("");
}
}
2011年6月14日火曜日
Asp.net C# DowpdownListの初期値設定
Asp.net C# DowpdownListの初期値設定
ddlSelectCategory.DataBind();
int index = 0;
//Loop items Dropdown
foreach (ListItem item in ddlSelectCategory.Items)
{//found
if (item.Value.Trim() == s1.CategoryId.ToString().Trim())
{ //select item
ddlSelectCategory.SelectedIndex = index;
break;
}
index++;
}
ddlSelectCategory.DataBind();
int index = 0;
//Loop items Dropdown
foreach (ListItem item in ddlSelectCategory.Items)
{//found
if (item.Value.Trim() == s1.CategoryId.ToString().Trim())
{ //select item
ddlSelectCategory.SelectedIndex = index;
break;
}
index++;
}
Linqでstored procedureを実行
Linqでstored procedureを実行 ※戻り値無し
using (var db1 = new aDataClassesDataContext(ConfigurationManager.ConnectionStrings["ExpenseConnStr"].ToString()))
{
var c1 = db1.usp_ClaimDetail_Del(Session["CLaimID"].ToString());
}
1.LINQ To SQLクラスにストアドプロシージャを含める。
2.LINQで、通常通りに、上記オブジェクトを指定する
3.これで、ストアドが実行される。
LINQの良い所、受け渡しパラメータを自動生成してくれるから、パラメータの設定コードを
記述する必要が無い。
using (var db1 = new aDataClassesDataContext(ConfigurationManager.ConnectionStrings["ExpenseConnStr"].ToString()))
{
var c1 = db1.usp_ClaimDetail_Del(Session["CLaimID"].ToString());
}
1.LINQ To SQLクラスにストアドプロシージャを含める。
2.LINQで、通常通りに、上記オブジェクトを指定する
3.これで、ストアドが実行される。
LINQの良い所、受け渡しパラメータを自動生成してくれるから、パラメータの設定コードを
記述する必要が無い。
2011年6月13日月曜日
LINQ の Insert
using (var db = new ExpenseDataClassesDataContext(ConfigurationManager.ConnectionStrings["ConnStr"].ToString()))
{
RecordHeader i1 = new RecordHeader();
//set columns
i1.Id = Session["ClaimID"].ToString();
i1.Type = Session["Type"].ToString();
i1.DataAdded = DateTime.Now;
i1.UserName = Session["UserName"].ToString();
// Add the new object to the Orders collection.
db.RecordHeader.InsertOnSubmit(i1);
// Submit the change to the database.
db.SubmitChanges();
}
{
RecordHeader i1 = new RecordHeader();
//set columns
i1.Id = Session["ClaimID"].ToString();
i1.Type = Session["Type"].ToString();
i1.DataAdded = DateTime.Now;
i1.UserName = Session["UserName"].ToString();
// Add the new object to the Orders collection.
db.RecordHeader.InsertOnSubmit(i1);
// Submit the change to the database.
db.SubmitChanges();
}
2011年6月9日木曜日
LINQの全件件数を取得する
LINQの全件件数を取得する(Total Record count)
var mSite =
from qc in db.指定テーブル
orderby qc.Code
where qc.Code == args[0]
select qc;
//検索件数の取得
int rec = (mSite).Count(); //件数の取得
var mSite =
from qc in db.指定テーブル
orderby qc.Code
where qc.Code == args[0]
select qc;
//検索件数の取得
int rec = (mSite).Count(); //件数の取得
iis handlers error 500.19
iis handlers error 500.19
Windows2008英語版で開発する必要があったので、VMマシンとして標準でインストールして
もらいました。
その後、IIS管理からWebアプリを登録して、接続しようとすると
HTTP Error 500.19 - Internal Server Error
エラー詳細を見ると、web.configのhandlersの部分でエラー発生となっている。
自分のIISではOKなので、何で?って考えていると、もしかして
おまじないしていないから?
c:\windows\microsoft.net\framework\v2.0\aspnet_iisreg.exe /i
.NETをインストールしても、IISとの、ひもづけしていないからダメよ~
あと、.NET2.0から.NET3.5までは、2.0ベースだから、v2のaspnet_iisregを実行
.NET v4の場合、v4のaspnet_iisregを実行する必要がある
Windows2008英語版で開発する必要があったので、VMマシンとして標準でインストールして
もらいました。
その後、IIS管理からWebアプリを登録して、接続しようとすると
HTTP Error 500.19 - Internal Server Error
エラー詳細を見ると、web.configのhandlersの部分でエラー発生となっている。
自分のIISではOKなので、何で?って考えていると、もしかして
おまじないしていないから?
c:\windows\microsoft.net\framework\v2.0\aspnet_iisreg.exe /i
.NETをインストールしても、IISとの、ひもづけしていないからダメよ~
あと、.NET2.0から.NET3.5までは、2.0ベースだから、v2のaspnet_iisregを実行
.NET v4の場合、v4のaspnet_iisregを実行する必要がある
2011年6月7日火曜日
LINQ to SQLで1件だけを抽出する方法
LINQ to SQLで1件だけを抽出する方法
LINQ to SQLで1件だけ抽出するにはFirst拡張メソッドを使えばよいのだが、ラムダ式を使ってサクッと作れる。
var o1 = db1.参照テーブル.First(a=>a.Title=="ほげほげ");
但し、この欠点は抽出結果が0件だとエラーになる。
そこで0件でもエラーとならないFirstOrDefault拡張メソッドを使用する。
Var o1 = db1.参照テーブル.FirstOrDefault(a=>a.Title=="ほげほげ");
if (o1 != null){o1.name = "ふむふむ" ;}
抽出結果が0件の場合、結果はNULLとなるのでNULLでなければオブジェクトにアクセスするようにすれば良い。
元ネタ
http://blog.motdotnet.com/?eid=381
LINQ to SQLで1件だけ抽出するにはFirst拡張メソッドを使えばよいのだが、ラムダ式を使ってサクッと作れる。
var o1 = db1.参照テーブル.First(a=>a.Title=="ほげほげ");
但し、この欠点は抽出結果が0件だとエラーになる。
そこで0件でもエラーとならないFirstOrDefault拡張メソッドを使用する。
Var o1 = db1.参照テーブル.FirstOrDefault(a=>a.Title=="ほげほげ");
if (o1 != null){o1.name = "ふむふむ" ;}
抽出結果が0件の場合、結果はNULLとなるのでNULLでなければオブジェクトにアクセスするようにすれば良い。
元ネタ
http://blog.motdotnet.com/?eid=381
LINQでUPDATE
LINQでUPDATEを行う
string vId = "12345";
using (var db = new ExpenseDataClassesDataContext(ConfigurationManager.ConnectionStrings["ExpenseConnectionString"].ToString()))
{
ClaimHeader ch = db.ClaimHeader.Single(s => s.Id == vId);
ch.Status = "De";
db.SubmitChanges();
}
string vId = "12345";
using (var db = new ExpenseDataClassesDataContext(ConfigurationManager.ConnectionStrings["ExpenseConnectionString"].ToString()))
{
ClaimHeader ch = db.ClaimHeader.Single(s => s.Id == vId);
ch.Status = "De";
db.SubmitChanges();
}
2011年6月6日月曜日
IIS7.5 Windows認証
IIS7.5 Windows認証は、標準では設定されないので、注意が必要。
IIS6までは、認証の部分に、Windows認証があったが
IIS7.5は、インストール時に設定しないといけなくなった。
IIS6までは、認証の部分に、Windows認証があったが
IIS7.5は、インストール時に設定しないといけなくなった。
2011年6月2日木曜日
パケットモニター
LANケーブルをループ状にした為、ネットワークがダウンしました。
その時、パケットを見る為のモニターが、MicroSoftから無償で提供されています。
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=983b941d-06cb-4658-b7f6-3088333d062f&displaylang=en
説明は、こちら
http://www.microsoft.com/japan/powerpro/TF/column/am_01_3.mspx
その時、パケットを見る為のモニターが、MicroSoftから無償で提供されています。
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=983b941d-06cb-4658-b7f6-3088333d062f&displaylang=en
説明は、こちら
http://www.microsoft.com/japan/powerpro/TF/column/am_01_3.mspx
2011年6月1日水曜日
MS-SQLで、メタ情報からCREATE TABLEを作成
MS-SQL2005以上で使用出来る
DECLARE @Table_Definition VARCHAR(MAX),
@TableName VARCHAR(25)
SET @TableName = 'Attachments'
SET @Table_Definition = 'IF NOT EXISTS(SELECT 1 FROM sys.tables WHERE name = ' +
QUOTENAME(@TableName,'''') + ')' + CHAR(13) + 'BEGIN'
SET @Table_Definition = COALESCE(@Table_Definition + CHAR(13),'') + 'CREATE TABLE ('
SELECT @Table_Definition = COALESCE(@Table_Definition,'') +
CHAR(13) + '[' + COLUMN_NAME + ']' + SPACE(1) + '[' + DATA_TYPE + ']' +
CASE
WHEN UPPER(DATA_TYPE) IN ('REAL','MONEY','DECIMAL','NUMERIC') THEN
'(' + CONVERT(VARCHAR(3),COALESCE(numeric_precision,'')) + ','+
CONVERT(VARCHAR(3),COALESCE(Numeric_Scale,'')) + ')'
WHEN UPPER(DATA_TYPE) IN ('CHAR','NVARCHAR','VARCHAR','NCHAR') THEN
'(' + CASE WHEN CHARACTER_MAXIMUM_LENGTH = -1 THEN 'max' ELSE CAST(isnull(CHARACTER_MAXIMUM_LENGTH,'') AS VARCHAR) END + ')'
ELSE '' END +
CASE WHEN IS_NULLABLE = 'NO' THEN ' not null' ELSE ' null' END +
CASE WHEN COLUMN_DEFAULT IS NULL THEN ',' ELSE 'default ' + COLUMN_DEFAULT + ',' END
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @TableName
SET @Table_Definition = STUFF(@Table_Definition,LEN(@Table_Definition),1,CHAR(13) + ')' + CHAR(13) + 'END')
PRINT @Table_Definition
--EXEC (@Table_Definition)
DECLARE @Table_Definition VARCHAR(MAX),
@TableName VARCHAR(25)
SET @TableName = 'Attachments'
SET @Table_Definition = 'IF NOT EXISTS(SELECT 1 FROM sys.tables WHERE name = ' +
QUOTENAME(@TableName,'''') + ')' + CHAR(13) + 'BEGIN'
SET @Table_Definition = COALESCE(@Table_Definition + CHAR(13),'') + 'CREATE TABLE ('
SELECT @Table_Definition = COALESCE(@Table_Definition,'') +
CHAR(13) + '[' + COLUMN_NAME + ']' + SPACE(1) + '[' + DATA_TYPE + ']' +
CASE
WHEN UPPER(DATA_TYPE) IN ('REAL','MONEY','DECIMAL','NUMERIC') THEN
'(' + CONVERT(VARCHAR(3),COALESCE(numeric_precision,'')) + ','+
CONVERT(VARCHAR(3),COALESCE(Numeric_Scale,'')) + ')'
WHEN UPPER(DATA_TYPE) IN ('CHAR','NVARCHAR','VARCHAR','NCHAR') THEN
'(' + CASE WHEN CHARACTER_MAXIMUM_LENGTH = -1 THEN 'max' ELSE CAST(isnull(CHARACTER_MAXIMUM_LENGTH,'') AS VARCHAR) END + ')'
ELSE '' END +
CASE WHEN IS_NULLABLE = 'NO' THEN ' not null' ELSE ' null' END +
CASE WHEN COLUMN_DEFAULT IS NULL THEN ',' ELSE 'default ' + COLUMN_DEFAULT + ',' END
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @TableName
SET @Table_Definition = STUFF(@Table_Definition,LEN(@Table_Definition),1,CHAR(13) + ')' + CHAR(13) + 'END')
PRINT @Table_Definition
--EXEC (@Table_Definition)
MS-SQL でOracleのUser_tab_columnsみたいなメタ情報を参照するには?
MS-SQL でOracleのUser_tab_columnsみたいなメタ情報を参照するには?
MS-SQL 2005以降だけど、INFORMATION_SCHEMA.COLUMNS で参照出来ます。
http://msdn.microsoft.com/ja-jp/library/ms188348.aspx
select * from INFORMATION_SCHEMA.COLUMNS
MS-SQL 2005以降だけど、INFORMATION_SCHEMA.COLUMNS で参照出来ます。
http://msdn.microsoft.com/ja-jp/library/ms188348.aspx
select * from INFORMATION_SCHEMA.COLUMNS
2011年5月30日月曜日
RedmineClient
Redmine用クライアントモジュール
C#で作成されていました。
http://sourceforge.net/projects/redmineclient/
License:BSD
C#で作成されていました。
http://sourceforge.net/projects/redmineclient/
License:BSD
ラベル:
C#,
OpenSource,
RedMine
2011年5月26日木曜日
2011年5月19日木曜日
SilverLight5 BetaのTrick Play
SilverLight5 BetaのTrick Play評価をする必要があったので、3時間だけど評価しました。
1.起動がSilverLight4に比べると、良くなっている。
2.Trick Playですが、Mediaタグだけを追加するだけで、簡易playerになっている。
実際は、playボタンなどもついてくるだろうと思い、正式版が早く出ることを願います。
元ネタ
Silverlight 5 Beta Rough Notes–Trick Play Video
http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2011/05/03/silverlight-5-beta-rough-notes-trick-play-video.aspx
1.起動がSilverLight4に比べると、良くなっている。
2.Trick Playですが、Mediaタグだけを追加するだけで、簡易playerになっている。
実際は、playボタンなどもついてくるだろうと思い、正式版が早く出ることを願います。
元ネタ
Silverlight 5 Beta Rough Notes–Trick Play Video
http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2011/05/03/silverlight-5-beta-rough-notes-trick-play-video.aspx
2011年5月17日火曜日
Delphiの逆アセンブル
Dede
http://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/DeDe.shtml
http://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/DeDe.shtml
区切りのある文字列からの抜き取り:StrToken
文字列のトークン
区切り文字で区切られている文字列のトークンが返ります。
構文: StrToken(ソース文字列,トークンインデックス,区切文字列)
パラメータ: ソース文字列 …… 複数の文字列で構成される文字列。区切文字で区切られ、トークンが置かれています。
トークンインデックス …… 取り出したいトークンで、その位置をインデックス(順番を示す番号)で指定します。
区切文字列 …… 区切文字の文字列。1文字以上の文字列を指定できます。
戻り値: 文字列(トークン) …… トークンが見つからなかった場合は、空白が返ります。
例: StrToken(A,2,',')
Aが'abcd,cdef,ghik,lmnp'の時、'cdef'が返ります。
区切り文字で区切られている文字列のトークンが返ります。
構文: StrToken(ソース文字列,トークンインデックス,区切文字列)
パラメータ: ソース文字列 …… 複数の文字列で構成される文字列。区切文字で区切られ、トークンが置かれています。
トークンインデックス …… 取り出したいトークンで、その位置をインデックス(順番を示す番号)で指定します。
区切文字列 …… 区切文字の文字列。1文字以上の文字列を指定できます。
戻り値: 文字列(トークン) …… トークンが見つからなかった場合は、空白が返ります。
例: StrToken(A,2,',')
Aが'abcd,cdef,ghik,lmnp'の時、'cdef'が返ります。
.NET用デコンパイラ
.NET用デコンパイラ
今までは、.NET Reflectorを使用していましたが、2011年5月31日以降、有償になります。
Tererikから、無償のデコンパイラが配布されました。
JustDecompile
http://www.telerik.com/account/your-products/product-versions/single-download.aspx?pmvid=2438&pid=845
今までは、.NET Reflectorを使用していましたが、2011年5月31日以降、有償になります。
Tererikから、無償のデコンパイラが配布されました。
JustDecompile
http://www.telerik.com/account/your-products/product-versions/single-download.aspx?pmvid=2438&pid=845
EPPlus シート名一覧表示
foreach (ExcelWorksheet sh in xlPackage.Workbook.Worksheets)
{
Console.WriteLine(sh.Name.ToString());
}
これで、シート名の一覧を取得出来る
{
Console.WriteLine(sh.Name.ToString());
}
これで、シート名の一覧を取得出来る
2011年5月11日水曜日
Sedna Native XML Databas
Sedna Native XML Databas
XMLDBを調べていたら、評価してみたいプロジェクトがあった。
License
Apache License V2.0
http://sourceforge.net/projects/sedna/
XMLDBを調べていたら、評価してみたいプロジェクトがあった。
License
Apache License V2.0
http://sourceforge.net/projects/sedna/
ラベル:
OpenSource,
XML,
XMLDB
C# OleDBでストアドプロシージャを起動 戻り値あり
private OleDbConnection connection;
//商品CDより画像情報を取得する。
connection = new OleDbConnection(ConfigurationManager.ConnectionStrings["SD"].ToString());
OleDbCommand cmd = new OleDbCommand("prc_GetProductPhoto", connection);
cmd.CommandType = CommandType.StoredProcedure;
//ストアドプロシージャの引数に渡す値の設定
cmd.Parameters.Add("pi_商品cd", OleDbType.VarChar).Value = GridView1.SelectedRow.Cells[1].Text;
//ストアドプロシージャのout用パラメータ作成
OleDbParameter pPhoto = new OleDbParameter("po_Photo", OleDbType.VarChar);
pPhoto.Direction = ParameterDirection.Output;
cmd.Parameters.Add(pPhoto);
//ストアドプロシージャの実行
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
//商品CDより画像情報を取得する。
connection = new OleDbConnection(ConfigurationManager.ConnectionStrings["SD"].ToString());
OleDbCommand cmd = new OleDbCommand("prc_GetProductPhoto", connection);
cmd.CommandType = CommandType.StoredProcedure;
//ストアドプロシージャの引数に渡す値の設定
cmd.Parameters.Add("pi_商品cd", OleDbType.VarChar).Value = GridView1.SelectedRow.Cells[1].Text;
//ストアドプロシージャのout用パラメータ作成
OleDbParameter pPhoto = new OleDbParameter("po_Photo", OleDbType.VarChar);
pPhoto.Direction = ParameterDirection.Output;
cmd.Parameters.Add(pPhoto);
//ストアドプロシージャの実行
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
2011年5月6日金曜日
過去 1 時間以内に実行された経過時間(elapsed_time)の長い Top 5 SQL を表示する場合。
alter session set nls_date_format='yyyy/mm/dd hh24:mi:ss';
col "CPU_TIME(s)" for 9,990.00
col "ELAPSED_TIME(s)" for 9,990.00
set lines 100 pages 100
select * from
(
select
sql_text,
sql_id,
plan_hash_value,
executions,
last_active_time,
cpu_time/1000000 "CPU_TIME(s)",
elapsed_time/1000000 "ELAPSED_TIME(s)"
from
v$sqlstats
where
last_active_time > sysdate - 1/24
order by
elapsed_time desc
)
where rownum <= 5;
元ネタ、http://www.insight-tec.com/technical-information/2804.html
col "CPU_TIME(s)" for 9,990.00
col "ELAPSED_TIME(s)" for 9,990.00
set lines 100 pages 100
select * from
(
select
sql_text,
sql_id,
plan_hash_value,
executions,
last_active_time,
cpu_time/1000000 "CPU_TIME(s)",
elapsed_time/1000000 "ELAPSED_TIME(s)"
from
v$sqlstats
where
last_active_time > sysdate - 1/24
order by
elapsed_time desc
)
where rownum <= 5;
元ネタ、http://www.insight-tec.com/technical-information/2804.html
2011年4月26日火曜日
2011年4月25日月曜日
バッチで日付+時刻の入ったファイルを作成する(ログファイルで使用)
datetime.bat
このバッチを実行すると環境変数に日付・時刻が保存されます。
%yyyy% 年4桁
%yy% 年2桁
%mm% 月
%dd% 日
%hh% 時
%mi% 分
%ss% 秒
%sss% ミリ秒2桁
%datetime% 年4桁~ミリ秒2桁
@echo off
set date_tmp=%date:/=%
set time_tmp=%time: =0%
set yyyy=%date_tmp:~0,4%
set yy=%date_tmp:~2,2%
set mm=%date_tmp:~4,2%
set dd=%date_tmp:~6,2%
set hh=%time_tmp:~0,2%
set mi=%time_tmp:~3,2%
set ss=%time_tmp:~6,2%
set sss=%time_tmp:~9,2%
set datetime=%yyyy%%mm%%dd%%hh%%mi%%ss%%sss%
set time_tmp=
set date_tmp=
test.bat
datetime.bat の実行用サンプルです。
@echo off
setlocal
call datetime.bat
echo %datetime%
echo %yyyy%-%mm%-%dd% %hh%:%mi%:%ss%.%sss%
echo %date% %time%
endlocal
実行してみる。
>test.bat
2007112302443090
2007-11-23 02:44:30.90
2007/11/23 2:44:30.92
このバッチを実行すると環境変数に日付・時刻が保存されます。
%yyyy% 年4桁
%yy% 年2桁
%mm% 月
%dd% 日
%hh% 時
%mi% 分
%ss% 秒
%sss% ミリ秒2桁
%datetime% 年4桁~ミリ秒2桁
@echo off
set date_tmp=%date:/=%
set time_tmp=%time: =0%
set yyyy=%date_tmp:~0,4%
set yy=%date_tmp:~2,2%
set mm=%date_tmp:~4,2%
set dd=%date_tmp:~6,2%
set hh=%time_tmp:~0,2%
set mi=%time_tmp:~3,2%
set ss=%time_tmp:~6,2%
set sss=%time_tmp:~9,2%
set datetime=%yyyy%%mm%%dd%%hh%%mi%%ss%%sss%
set time_tmp=
set date_tmp=
test.bat
datetime.bat の実行用サンプルです。
@echo off
setlocal
call datetime.bat
echo %datetime%
echo %yyyy%-%mm%-%dd% %hh%:%mi%:%ss%.%sss%
echo %date% %time%
endlocal
実行してみる。
>test.bat
2007112302443090
2007-11-23 02:44:30.90
2007/11/23 2:44:30.92
2011年4月20日水曜日
CommonLibrary.NET
CommonLibrary.NET
C#共通のライブラリー
元はJavaから派生している
http://commonlibrarynet.codeplex.com/
C#共通のライブラリー
元はJavaから派生している
http://commonlibrarynet.codeplex.com/
Windows7で3Gスイッチの方法
管理者権限でコマンドプロントから次のコマンドで設定
3Gの場合は
BCDEDIT /Set Increaseuserva 3072
解除は
BCDEDIT /deletevalue increaseuserva
3Gの場合は
BCDEDIT /Set Increaseuserva 3072
解除は
BCDEDIT /deletevalue increaseuserva
2011年4月14日木曜日
SQL CASE文の書き方
WHENの後に評価させる式を書く
SELECT (CASE
WHEN expression1 = '0' OR expression2 = '0' THEN 'hoge'
WHEN expression1 = '1' OR expression2 = '1' THEN 'fuga'
ELSE 'piyo' END) AS fieldname
FROM tablename
SELECT (CASE
WHEN expression1 = '0' OR expression2 = '0' THEN 'hoge'
WHEN expression1 = '1' OR expression2 = '1' THEN 'fuga'
ELSE 'piyo' END) AS fieldname
FROM tablename
C#のforeach文で、自分が何回目の繰り返しか知る方法
using System;
using System.Linq;
namespace CountForeach
{
class Program
{
static void Main(string[] args)
{
// テスト用配列
var array = new[] { "aaa", "bbb", "ccc" };
// Selectメソッドで値をインデックスのペアを作ってそれをforeachでまわす
foreach (var item in array.Select((v, i) => new { v, i }))
{
// 匿名型から値とインデックスを取り出して使える
Console.WriteLine("value = {0}, index = {1}", item.v, item.i);
}
}
}
}
using System.Linq;
namespace CountForeach
{
class Program
{
static void Main(string[] args)
{
// テスト用配列
var array = new[] { "aaa", "bbb", "ccc" };
// Selectメソッドで値をインデックスのペアを作ってそれをforeachでまわす
foreach (var item in array.Select((v, i) => new { v, i }))
{
// 匿名型から値とインデックスを取り出して使える
Console.WriteLine("value = {0}, index = {1}", item.v, item.i);
}
}
}
}
LINQ to SQLのorderby
LINQでのorderbyの書き方
OrderedQueryable hireQuery =
from emp in db.Employees
orderby emp.HireDate
select emp;
OrderedQueryable
from emp in db.Employees
orderby emp.HireDate
select emp;
ExcelPackage
今までExcel2007を扱う場合、CodeplexのexcelPackageを使用していました。
http://excelpackage.codeplex.com/
でも、複数シートのテンプレートを扱うと、saveメソットでエラー発生
解決方法は
http://excelpackage.codeplex.com/discussions/7005?ProjectName=excelpackage
562 of ExcelWorksheet.cs from:
XmlNode pageSetup = _worksheetXml.SelectSingleNode("//d:pageSetup", NameSpaceManager);
to:
XmlNode pageSetup = WorksheetXml.SelectSingleNode("//d:pageSetup", NameSpaceManager);
だそうで、ソースを修正する必要がある
修正したら、最新版をUPして欲しい
ExcelPackageから派生したプロジェクト
http://epplus.codeplex.com/
こっちの方が開発は活発
http://excelpackage.codeplex.com/
でも、複数シートのテンプレートを扱うと、saveメソットでエラー発生
解決方法は
http://excelpackage.codeplex.com/discussions/7005?ProjectName=excelpackage
562 of ExcelWorksheet.cs from:
XmlNode pageSetup = _worksheetXml.SelectSingleNode("//d:pageSetup", NameSpaceManager);
to:
XmlNode pageSetup = WorksheetXml.SelectSingleNode("//d:pageSetup", NameSpaceManager);
だそうで、ソースを修正する必要がある
修正したら、最新版をUPして欲しい
ExcelPackageから派生したプロジェクト
http://epplus.codeplex.com/
こっちの方が開発は活発
2011年4月12日火曜日
MS-SQL2005 DTS 単体実行はOKだが、SQL Agentにするとエラーになる
MS-SQL2005のDTSを単体テストでは、OK。
これをファイルベースで、MS-SQL2005のエージェント(Agent)で実行すると
パスワードの暗号化が解除出来ない為、エラーになる。
解決方法
http://support.microsoft.com/kb/918760/ja
1.パスワードを使用して暗号化するパッケージを変更します。
2.EncryptSensitiveWithUserKey に ProtectionLevel プロパティを変更するのに
オペレーティング システム (cmd Exec) SQL Server エージェント ジョブのステップで
Dtutil.exe ユーティリティを使用します。
このプロセスは、パスワードを使用して、パッケージを re-encrypting し、
パッケージを暗号化解除では。
パッケージの暗号化に使用されるユーザー キーは、SQL Server エージェント ジョブの
ステップを 別のユーザーとして実行 ] 一覧で設定です。
Dtutil.exeを実行して暗号化を解除するそうです。
これをファイルベースで、MS-SQL2005のエージェント(Agent)で実行すると
パスワードの暗号化が解除出来ない為、エラーになる。
解決方法
http://support.microsoft.com/kb/918760/ja
1.パスワードを使用して暗号化するパッケージを変更します。
2.EncryptSensitiveWithUserKey に ProtectionLevel プロパティを変更するのに
オペレーティング システム (cmd Exec) SQL Server エージェント ジョブのステップで
Dtutil.exe ユーティリティを使用します。
このプロセスは、パスワードを使用して、パッケージを re-encrypting し、
パッケージを暗号化解除では。
パッケージの暗号化に使用されるユーザー キーは、SQL Server エージェント ジョブの
ステップを 別のユーザーとして実行 ] 一覧で設定です。
Dtutil.exeを実行して暗号化を解除するそうです。
2011年4月6日水曜日
2011年3月30日水曜日
MAGICの漢字入力制御
MAGICの漢字入力制御
値 入力モード サイズ 入力方法 入力例
0 OFF - - -
1 全Rかな 全角 ローマ字 かな
2 全かな 全角 直接 のちみち(KANA )
3 全Rカナ 全角 ローマ字 カナ
4 全カナ 全角 直接 ノチミチ(KANA )
5 半Rカナ 半角 ローマ字 カナ
6 半カナ 半角 直接 ノチミチ(KANA )
7 全英数 全角 直接 kana
8 半英数 半角 直接 kana
値 入力モード サイズ 入力方法 入力例
0 OFF - - -
1 全Rかな 全角 ローマ字 かな
2 全かな 全角 直接 のちみち(KANA )
3 全Rカナ 全角 ローマ字 カナ
4 全カナ 全角 直接 ノチミチ(KANA )
5 半Rカナ 半角 ローマ字 カナ
6 半カナ 半角 直接 ノチミチ(KANA )
7 全英数 全角 直接 kana
8 半英数 半角 直接 kana
UniPass OSコマンドの上限
UniPaasのOSコマンドの文字列上限が、たぶん4000文字
OSが、Windows98,2000までは、コマンドパラメータが4000までだった。
XPから8000まで拡張されていたが、UniPaasは対応していないようだ。
確認Ver. UniPaas 1.5
OS:Windows7 SP1
OSが、Windows98,2000までは、コマンドパラメータが4000までだった。
XPから8000まで拡張されていたが、UniPaasは対応していないようだ。
確認Ver. UniPaas 1.5
OS:Windows7 SP1
2011年3月28日月曜日
MemoryテーブルのDBDELは失敗する
親タスクでトランザクションはNoにしている。
サブフォームでメモリーテーブルをオープンしている。
親タスクの検索ボタンでメモリーテーブルを作成後
サブフォームを再表示して、親タスクでDBDELを発行しているが、うまく動作しない。
どうも、サブフォームで使用しているから、DBDEL自体がテーブルDROP出来ないと思われる。
DBDELでは無く、レコードを削除するタスクで対応するようにする。
サブフォームでメモリーテーブルをオープンしている。
親タスクの検索ボタンでメモリーテーブルを作成後
サブフォームを再表示して、親タスクでDBDELを発行しているが、うまく動作しない。
どうも、サブフォームで使用しているから、DBDEL自体がテーブルDROP出来ないと思われる。
DBDELでは無く、レコードを削除するタスクで対応するようにする。
2011年3月24日木曜日
MS-SQL 一時テーブルの作成方法
if OBJECT_ID('tempdb..#temp_table1') is not null
drop table #temp_table1
create table #temp_table1 (
ID int,
NAME varchar(50),
VALUE varchar(255)
)
drop table #temp_table1
create table #temp_table1 (
ID int,
NAME varchar(50),
VALUE varchar(255)
)
2011年3月23日水曜日
PDFから画像ファイルを作成(GhostScriptLiteを使用)
PDFから画像ファイルを作成(GhostScriptLiteを使用)
複数ページ対応する為に、tiff形式にしました。
pdfを一旦、画像ファイル(tiff)に変換後
画像下部を白抜き編集した後に、再度pdfを作成しました。
pdfから画像を作成するのは、GhostScriptLiteを使用 Ver9.0
画像の編集は、PdfSharpを使用しました。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using PdfSharp;
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
using PdfSharp.Drawing;
using System.Drawing;
using System.Drawing.Imaging;
namespace PDF得意先発注Clear
{
class Program
{
static void Main(string[] args)
{
if (args.Length == 0)
{
Console.WriteLine("コマンドライン引数はありません。");
return;
}
String vTempFile = args[0] + "_.bmp";
// ファイルを削除する
if (System.IO.File.Exists(vTempFile))
{
try { File.Delete(vTempFile); }
catch { };
}
if (System.IO.File.Exists(vTempFile))
{
try { File.Delete(vTempFile); }
catch { };
}
//PDFを画像に変換 PDFConvertはPDFtoImage.csにある
PDFConvert converter = new PDFConvert();
bool Converted = false;
//Setup the converter
converter.RenderingThreads = -1;
converter.TextAlphaBit = -1;
converter.OutputToMultipleFile = false;
converter.FirstPageToConvert = -1;
converter.LastPageToConvert = -1;
converter.FitPage = false;
converter.JPEGQuality = 100; //100は圧縮しない
//converter.OutputFormat = "jpeg";
converter.OutputFormat = "tifflzw";
Converted = converter.Convert(args[0].ToString(), vTempFile);
// Open the output document
PdfDocument outputDocument = new PdfDocument();
//複数ページに対応 2011/03/23
//画像の読み取り
var ReadImage = Image.FromFile(vTempFile);
//ディメンジョンリストを作成する
Guid[] DimensionList = ReadImage.FrameDimensionsList;
//ディメンジョンが続く限りループ
foreach(Guid dimens in DimensionList )
{
//フレームディメンジョンを作成し
var fd = new FrameDimension(dimens);
//ページ数を取得する
int Pages = ReadImage.GetFrameCount(fd);
//全頁処理対象
for (int frameIndex = 0; frameIndex < Pages; frameIndex++)
{
//アクティブフレームを切り替える
ReadImage.SelectActiveFrame(fd, frameIndex);
//新しいビットマップにコピーする
var img = new Bitmap(ReadImage);
img.SetResolution(ReadImage.HorizontalResolution, ReadImage.VerticalResolution);
//ページ追加
PdfPage page = outputDocument.AddPage();
using (XImage image = XImage.FromGdiPlusImage(img))
{
page.Width = image.PointWidth;
page.Height = image.PointHeight;
using (XGraphics gfx = XGraphics.FromPdfPage(page))
{
gfx.DrawImage(image, 0, 0);
var options = new XPdfFontOptions(PdfFontEmbedding.Always);
XPen pen = new XPen(XColors.White, Math.PI);
gfx.DrawRectangle(pen, XBrushes.White, 360, 640, 600, 870);
gfx.DrawRectangle(pen, XBrushes.White, 0, 720, 600, 870);
}
}
}
}
outputDocument.Save(args[0]);
ReadImage.Dispose();
//元ファイルを削除
File.Delete(vTempFile);
}
}
}
複数ページ対応する為に、tiff形式にしました。
pdfを一旦、画像ファイル(tiff)に変換後
画像下部を白抜き編集した後に、再度pdfを作成しました。
pdfから画像を作成するのは、GhostScriptLiteを使用 Ver9.0
画像の編集は、PdfSharpを使用しました。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using PdfSharp;
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
using PdfSharp.Drawing;
using System.Drawing;
using System.Drawing.Imaging;
namespace PDF得意先発注Clear
{
class Program
{
static void Main(string[] args)
{
if (args.Length == 0)
{
Console.WriteLine("コマンドライン引数はありません。");
return;
}
String vTempFile = args[0] + "_.bmp";
// ファイルを削除する
if (System.IO.File.Exists(vTempFile))
{
try { File.Delete(vTempFile); }
catch { };
}
if (System.IO.File.Exists(vTempFile))
{
try { File.Delete(vTempFile); }
catch { };
}
//PDFを画像に変換 PDFConvertはPDFtoImage.csにある
PDFConvert converter = new PDFConvert();
bool Converted = false;
//Setup the converter
converter.RenderingThreads = -1;
converter.TextAlphaBit = -1;
converter.OutputToMultipleFile = false;
converter.FirstPageToConvert = -1;
converter.LastPageToConvert = -1;
converter.FitPage = false;
converter.JPEGQuality = 100; //100は圧縮しない
//converter.OutputFormat = "jpeg";
converter.OutputFormat = "tifflzw";
Converted = converter.Convert(args[0].ToString(), vTempFile);
// Open the output document
PdfDocument outputDocument = new PdfDocument();
//複数ページに対応 2011/03/23
//画像の読み取り
var ReadImage = Image.FromFile(vTempFile);
//ディメンジョンリストを作成する
Guid[] DimensionList = ReadImage.FrameDimensionsList;
//ディメンジョンが続く限りループ
foreach(Guid dimens in DimensionList )
{
//フレームディメンジョンを作成し
var fd = new FrameDimension(dimens);
//ページ数を取得する
int Pages = ReadImage.GetFrameCount(fd);
//全頁処理対象
for (int frameIndex = 0; frameIndex < Pages; frameIndex++)
{
//アクティブフレームを切り替える
ReadImage.SelectActiveFrame(fd, frameIndex);
//新しいビットマップにコピーする
var img = new Bitmap(ReadImage);
img.SetResolution(ReadImage.HorizontalResolution, ReadImage.VerticalResolution);
//ページ追加
PdfPage page = outputDocument.AddPage();
using (XImage image = XImage.FromGdiPlusImage(img))
{
page.Width = image.PointWidth;
page.Height = image.PointHeight;
using (XGraphics gfx = XGraphics.FromPdfPage(page))
{
gfx.DrawImage(image, 0, 0);
var options = new XPdfFontOptions(PdfFontEmbedding.Always);
XPen pen = new XPen(XColors.White, Math.PI);
gfx.DrawRectangle(pen, XBrushes.White, 360, 640, 600, 870);
gfx.DrawRectangle(pen, XBrushes.White, 0, 720, 600, 870);
}
}
}
}
outputDocument.Save(args[0]);
ReadImage.Dispose();
//元ファイルを削除
File.Delete(vTempFile);
}
}
}
Windows CommandLineの文字列制限
Microsoft Windows XP 以降を実行しているコンピュータでは、コマンド プロンプトで使用できる文字列の最大長は 8191 文字です。
Microsoft Windows 2000 または Windows NT 4.0 を実行しているコンピュータでは、コマンド プロンプトで使用できる文字列の最大長は 2047 文字です。
この制限は、コマンド ライン、他のプロセスによって受け継がれる個別の環境変数 (PATH 変数など)、およびすべての環境変数の展開結果に適用されます。[コマンド プロンプト] を使用してバッチ ファイルを実行する場合は、この制限がバッチ ファイルの処理にも適用されます。
長いコマンド ラインを必要とするプログラムは、パラメータ情報を格納したファイルを使用するように変更し、そのファイル名をコマンド ラインに含めます。
使用する環境変数が長いプログラムは、環境変数に格納される値が (使用するオペレーティング システムに応じて) 2047 文字または 8191 文字を超えないように変更します
Microsoft Windows 2000 または Windows NT 4.0 を実行しているコンピュータでは、コマンド プロンプトで使用できる文字列の最大長は 2047 文字です。
この制限は、コマンド ライン、他のプロセスによって受け継がれる個別の環境変数 (PATH 変数など)、およびすべての環境変数の展開結果に適用されます。[コマンド プロンプト] を使用してバッチ ファイルを実行する場合は、この制限がバッチ ファイルの処理にも適用されます。
長いコマンド ラインを必要とするプログラムは、パラメータ情報を格納したファイルを使用するように変更し、そのファイル名をコマンド ラインに含めます。
使用する環境変数が長いプログラムは、環境変数に格納される値が (使用するオペレーティング システムに応じて) 2047 文字または 8191 文字を超えないように変更します
2011年3月16日水曜日
MS-SQL で OracleのTO_DATEを
MS-SQLでOracleのTO_DATE関数を実装
CREATE FUNCTION [dbo].[TO_DATE]
(
-- Add the parameters for the function here
@piStrDate varchar(512),
@piFORMAT varchar(512)
)
-- =============================================
-- Author:アスカクリエイト
-- Create date: 2011/03/16
-- Description: 文字列をFORMAT文字列で日付型を返す
-- =============================================
RETURNS DateTime
AS
BEGIN
-- Declare the return variable here
DECLARE @vDate AS DateTime
-- 文字8
IF (@piFORMAT IS NULL) OR (UPPER(@piFORMAT) = 'YYYYMMDD')
BEGIN
SET @vDate = CONVERT(datetime, @piStrDate, 112)
END
ELSE
BEGIN
SET @vDate = CONVERT(datetime, @piStrDate, 112)
END
-- Return the result of the function
RETURN @vDate
END
CREATE FUNCTION [dbo].[TO_DATE]
(
-- Add the parameters for the function here
@piStrDate varchar(512),
@piFORMAT varchar(512)
)
-- =============================================
-- Author:アスカクリエイト
-- Create date: 2011/03/16
-- Description: 文字列をFORMAT文字列で日付型を返す
-- =============================================
RETURNS DateTime
AS
BEGIN
-- Declare the return variable here
DECLARE @vDate AS DateTime
-- 文字8
IF (@piFORMAT IS NULL) OR (UPPER(@piFORMAT) = 'YYYYMMDD')
BEGIN
SET @vDate = CONVERT(datetime, @piStrDate, 112)
END
ELSE
BEGIN
SET @vDate = CONVERT(datetime, @piStrDate, 112)
END
-- Return the result of the function
RETURN @vDate
END
MS-SQL で OracleのTO_CHARを
MS-SQL で OracleのTO_CHARを使用したい
CRAETE FUNCTION [dbo].[TO_CHAR]
(
-- Add the parameters for the function here
@piDateTime DateTime,
@piFORMAT varchar(512)
)
-- =============================================
-- Author:アスカクリエイト
-- Create date: 2011/03/16
-- Description: 日付を FORMATの文字列で返す
-- =============================================
RETURNS VARCHAR(2000)
AS
BEGIN
-- Declare the return variable here
DECLARE @vStrDate AS VARCHAR(2000)
-- 文字8
IF (@piFORMAT IS NULL) OR (UPPER(@piFORMAT) = 'YYYYMMDD')
BEGIN
SET @vStrDate = CONVERT(char(8), @piDateTime, 112)
END
ELSE
BEGIN
SET @vStrDate = CONVERT(char(8), @piDateTime, 112)
END
-- Return the result of the function
RETURN @vStrDate
END
CRAETE FUNCTION [dbo].[TO_CHAR]
(
-- Add the parameters for the function here
@piDateTime DateTime,
@piFORMAT varchar(512)
)
-- =============================================
-- Author:アスカクリエイト
-- Create date: 2011/03/16
-- Description: 日付を FORMATの文字列で返す
-- =============================================
RETURNS VARCHAR(2000)
AS
BEGIN
-- Declare the return variable here
DECLARE @vStrDate AS VARCHAR(2000)
-- 文字8
IF (@piFORMAT IS NULL) OR (UPPER(@piFORMAT) = 'YYYYMMDD')
BEGIN
SET @vStrDate = CONVERT(char(8), @piDateTime, 112)
END
ELSE
BEGIN
SET @vStrDate = CONVERT(char(8), @piDateTime, 112)
END
-- Return the result of the function
RETURN @vStrDate
END
2011年3月14日月曜日
支援
かみさんの実家が、福島県福島市ですが
土曜日からメールで安否は確認したのですが
ライフライン(電気、ガス、水道)が、止まっているらしく
電話が不通なのです。
早く復旧するように、お祈りします。
Yahooの支援に支援しました。
http://volunteer.yahoo.co.jp/
土曜日からメールで安否は確認したのですが
ライフライン(電気、ガス、水道)が、止まっているらしく
電話が不通なのです。
早く復旧するように、お祈りします。
Yahooの支援に支援しました。
http://volunteer.yahoo.co.jp/
2011年3月10日木曜日
PDFSharpを使って、画像からPDFを作成
PDFSharpを使って画像からPDFを作成
画像をPDFにまとめる
以下のコードで画像をPDFにまとめることができる。
string SavePath = "ImageTest.pdf";
string[] ImagePaths = { "無題.bmp" };
using (PdfDocument Document = new PdfDocument())
{
foreach (string ImagePath in ImagePaths)
{
PdfPage page = Document.AddPage();
using (XImage image = XImage.FromFile(ImagePath))
{
page.Width = image.PointWidth;
page.Height = image.PointHeight;
using (XGraphics gfx = XGraphics.FromPdfPage(page))
{
gfx.DrawImage(image, 0, 0);
}
}
}
Document.Save(SavePath);
}
Process.Start(SavePath);
元ネタ
http://d.hatena.ne.jp/aont/20090823/1251021218
画像をPDFにまとめる
以下のコードで画像をPDFにまとめることができる。
string SavePath = "ImageTest.pdf";
string[] ImagePaths = { "無題.bmp" };
using (PdfDocument Document = new PdfDocument())
{
foreach (string ImagePath in ImagePaths)
{
PdfPage page = Document.AddPage();
using (XImage image = XImage.FromFile(ImagePath))
{
page.Width = image.PointWidth;
page.Height = image.PointHeight;
using (XGraphics gfx = XGraphics.FromPdfPage(page))
{
gfx.DrawImage(image, 0, 0);
}
}
}
Document.Save(SavePath);
}
Process.Start(SavePath);
元ネタ
http://d.hatena.ne.jp/aont/20090823/1251021218
2011年3月9日水曜日
Command-LineでPDF印刷
フォルダにあるPDFを一括で印刷する必要があった。
PDF X-Change Viewerで以下のバッチを作成
"C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" /print ファイル名.pdf
出力先は、デフォルトプリンタ
PDF X-Change Viewerで以下のバッチを作成
"C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" /print ファイル名.pdf
出力先は、デフォルトプリンタ
wdCalendar for ASP.NET , OSS
wdCalendar for ASP.NET
http://wdcalendar.blogspot.com/
http://wdcalendar.blogspot.com/
ラベル:
Calendar,
JQuery,
OSS,
wdCalendar
2011年3月8日火曜日
Google Calendar like asp.net
Google Calendarに似た予定表
2011年3月8日時点
wdCalendar
http://plugins.jquery.com/project/wdCalendar
License:LGPL
日本語化
http://www.okushin.co.jp/kodanuki_note/2011/02/googlejquerywdcalendar.html
月表示と週表示がある。
DayPlot
www.daypilot.org/
License:Apache 2.0
OutLookに似ているインターフェース
c#で作成されているので、asp.netで作りやすい
JQuery Week Calendar
http://jsajax.com/Articles/jqueryweekcalendar/1439
License:MIT or LGPL
週表示のみ
JQuery-frontier-calendar
http://code.google.com/p/jquery-frontier-calendar/
License:MIT
月表示のみ
2011年3月8日時点
wdCalendar
http://plugins.jquery.com/project/wdCalendar
License:LGPL
日本語化
http://www.okushin.co.jp/kodanuki_note/2011/02/googlejquerywdcalendar.html
月表示と週表示がある。
DayPlot
www.daypilot.org/
License:Apache 2.0
OutLookに似ているインターフェース
c#で作成されているので、asp.netで作りやすい
JQuery Week Calendar
http://jsajax.com/Articles/jqueryweekcalendar/1439
License:MIT or LGPL
週表示のみ
JQuery-frontier-calendar
http://code.google.com/p/jquery-frontier-calendar/
License:MIT
月表示のみ
2011年3月7日月曜日
Delphi O/Rマッパー
Delphi Open SourceのO/Rマッパー
DelphiXEで使用できる。
InstantObjectもあるけど、こちらは開発が停滞しています。
http://sourceforge.net/projects/tiopf/
License:LGPL or MPL
O/Rマッパーとかでコーディングを少しでも楽にしたい。
DelphiXEで使用できる。
InstantObjectもあるけど、こちらは開発が停滞しています。
http://sourceforge.net/projects/tiopf/
License:LGPL or MPL
O/Rマッパーとかでコーディングを少しでも楽にしたい。
ラベル:
Delphi,
O/R,
OpenSource
iTextSharpで線を書く
iTextSharpで線を書く
iTextSharpでLineを書く
参考url
http://www.mikesdotnetting.com/Article/88/iTextSharp-Drawing-shapes-and-Graphics
確認Ver:5.0.5.0
Sample 今回は四角の枠
string pdfpath = Server.MapPath("PDFs");
Document doc = new Document();
try
{
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(pdfpath + "/Graphics.pdf", FileMode.Create));
doc.Open();
PdfContentByte cb = writer.DirectContent;
...
cb.SetColorStroke(new CMYKColor(255, 255, 255, 255));
cb.SetColorFill(new CMYKColor(255, 255, 255, 255));
cb.MoveTo(0, 850);
cb.LineTo(0, 810);
cb.LineTo(590, 810);
cb.LineTo(590, 850);
//cb.Fill(); //塗りつぶすならFillを使用
cb.ClosePathStroke(); //線を描くだけならClosePathStrokeを使用する
iTextSharpでLineを書く
参考url
http://www.mikesdotnetting.com/Article/88/iTextSharp-Drawing-shapes-and-Graphics
確認Ver:5.0.5.0
Sample 今回は四角の枠
string pdfpath = Server.MapPath("PDFs");
Document doc = new Document();
try
{
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(pdfpath + "/Graphics.pdf", FileMode.Create));
doc.Open();
PdfContentByte cb = writer.DirectContent;
...
cb.SetColorStroke(new CMYKColor(255, 255, 255, 255));
cb.SetColorFill(new CMYKColor(255, 255, 255, 255));
cb.MoveTo(0, 850);
cb.LineTo(0, 810);
cb.LineTo(590, 810);
cb.LineTo(590, 850);
//cb.Fill(); //塗りつぶすならFillを使用
cb.ClosePathStroke(); //線を描くだけならClosePathStrokeを使用する
2011年3月2日水曜日
2011年2月28日月曜日
Delphi ADOのConnect接続文字列のウィザード
procedure TADODBTest.EditConnStrClick(Sender: TObject);
begin
Connection.Close;
Connection.ConnectionString := ConnectionString.Text;
if EditConnectionString(Connection) then
begin
ConnectionString.Text := Connection.ConnectionString;
ConnectionStringClick(Sender);
end;
end;
上記で接続文字列のウィザードが表示される
begin
Connection.Close;
Connection.ConnectionString := ConnectionString.Text;
if EditConnectionString(Connection) then
begin
ConnectionString.Text := Connection.ConnectionString;
ConnectionStringClick(Sender);
end;
end;
上記で接続文字列のウィザードが表示される
2011年2月24日木曜日
FileListGet
FileListGet関数
指定したフォルダ内のファイル名を取得する場合に使用する。
1.一次元ベクトル変数を作成します。
2.FileListGetで1番に作成したベクトルに代入
項目更新 1番の変数 FileListGet(フォルダ名, 抽出拡張子※1, サブフォルダ対象判定※2)
3.VecSizeでベクトルレコード分、処理を行う
BlockのWhileを使用しても良いが、タスクにした方が後でメンテしやすい。
終了条件:VecSize(BB)
4.VecGetで取り出し
レコード後処理で、VecGet(1番の変数,Counter(0)) で取り出し出来る。
確認Ver:MAGICv9
指定したフォルダ内のファイル名を取得する場合に使用する。
1.一次元ベクトル変数を作成します。
2.FileListGetで1番に作成したベクトルに代入
項目更新 1番の変数 FileListGet(フォルダ名, 抽出拡張子※1, サブフォルダ対象判定※2)
3.VecSizeでベクトルレコード分、処理を行う
BlockのWhileを使用しても良いが、タスクにした方が後でメンテしやすい。
終了条件:VecSize(BB)
4.VecGetで取り出し
レコード後処理で、VecGet(1番の変数,Counter(0)) で取り出し出来る。
確認Ver:MAGICv9
2011年2月22日火曜日
UniPaas 実行時のPFキーの動作がおかしい
UniPaas 実行時のPFキーの動作がおかしい時がある。
サブフォームのシステムメニューはNoにしていたが
メインフォームのシステムメニューがYesになっていた。
上記により、メインフォームのWindowsシステムメニューにカーソルが
パーキングしているから、キーが無効になっていた。
対応:メインフォームもシステムメニューをNoにすること
サブフォームのシステムメニューはNoにしていたが
メインフォームのシステムメニューがYesになっていた。
上記により、メインフォームのWindowsシステムメニューにカーソルが
パーキングしているから、キーが無効になっていた。
対応:メインフォームもシステムメニューをNoにすること
IIS7 Express
以下のリンクが詳しい
http://blogs.msdn.com/b/osamum/archive/2011/01/19/iis-7-5-express.aspx
WindowsXPでも、IIS7相当の機能
http://blogs.msdn.com/b/osamum/archive/2011/01/19/iis-7-5-express.aspx
WindowsXPでも、IIS7相当の機能
2011年2月21日月曜日
MAGIC LIKE関数
文字列の比較(パターンマッチング)
文字列が指定したパターンに一致するかどうかを判断し、論理値を返します。
パターンには、通常の文字とワイルドカード文字を含めることができます。次の文字がワイルドカードに使用されます。
* … 0個以上の文字列
? … 1個の文字
SQLのWHERE句にLIKE文を記述出来る。
確認Ver:MAGICv9.4Plus
文字列が指定したパターンに一致するかどうかを判断し、論理値を返します。
パターンには、通常の文字とワイルドカード文字を含めることができます。次の文字がワイルドカードに使用されます。
* … 0個以上の文字列
? … 1個の文字
SQLのWHERE句にLIKE文を記述出来る。
確認Ver:MAGICv9.4Plus
2011年2月17日木曜日
Delphi Open Source Projects synapse
ネットワークアクセスコンポーネント
ライセンス:修正BSD
http://ararat.cz/synapse/doku.php/start
ライセンス:修正BSD
http://ararat.cz/synapse/doku.php/start
Delphi TEditのPasswordCharに「*(アスタリスク)」を指定すると「●(黒丸)」で表示されてしまう
TEditのPasswordCharに「*(アスタリスク)」を指定すると「●(黒丸)」で表示されてしまう
MSDNによるとCommon Controlのバージョン6以降のEditコントロールの
パスワード文字のデフォルト値が●に変更になってて
Delphiの方でもテーマが有効でPasswordCharが*の時は
コントロールのデフォルトに合わせる様になってるのが問題みたいですね。
Formの宣言の上に下記を追加したら良いかと
TEdit = class(StdCtrls.TEdit)
procedure CreateWnd; override;
end;
procedure TEdit.CreateWnd;
begin
inherited;
if PasswordChar <> #0 then
SendMessage(Handle, EM_SETPASSWORDCHAR, Ord(PasswordChar), 0);
end;
ソース:Delphi Q&A
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+201102/11020018.txt
MSDNによるとCommon Controlのバージョン6以降のEditコントロールの
パスワード文字のデフォルト値が●に変更になってて
Delphiの方でもテーマが有効でPasswordCharが*の時は
コントロールのデフォルトに合わせる様になってるのが問題みたいですね。
Formの宣言の上に下記を追加したら良いかと
TEdit = class(StdCtrls.TEdit)
procedure CreateWnd; override;
end;
procedure TEdit.CreateWnd;
begin
inherited;
if PasswordChar <> #0 then
SendMessage(Handle, EM_SETPASSWORDCHAR, Ord(PasswordChar), 0);
end;
ソース:Delphi Q&A
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+201102/11020018.txt
2011年2月16日水曜日
MAGICのDB2サポート状況
MAGICのDB2サポート状況、2010/01/28時点
MAGIC v10までは、UDBをサポート
UniPaasからは、AS400用のDB2をサポート、UDBはサポート対象外となった。
MAGIC v10までは、UDBをサポート
UniPaasからは、AS400用のDB2をサポート、UDBはサポート対象外となった。
2011年2月15日火曜日
ExpCalc
MAGIC(UniPaas)で使用出来る関数
一歩間違うと、訳分からない状態の式が出来る
式の実行
指定された式番号の定義式を実行します。
構文: ExpCalc (式番号)
確認Ver:MAGICv8とUniPaas1.5
一歩間違うと、訳分からない状態の式が出来る
式の実行
指定された式番号の定義式を実行します。
構文: ExpCalc (式番号)
確認Ver:MAGICv8とUniPaas1.5
iTextSharpでBarcodeのサイズを変更
iTextSharpでBarcodeのサイズを変更する
スケーリング(拡大・縮小)
イメージの大きさを指定してスケーリングをするときには
scaleAbsolute[Width|Height] メソッドを使います。
ある割合 (パーセント) でスケーリングするときは、scalePercent メソッドを使います。
既定では、スケーリングされていないイメージは、解像度が 72dpi と扱われることに注意。
50% でスケーリングされたイメージでは、144 になります。
小さくスケーリングされたイメージは、ピクセルの大きさが小さくなるので解像度は大きくなります。
300dpi で出力したいときには、72/300=24% のスケーリングを使います。
例えば、24% (72/300 = 0.24) のスケーリングで
1500X1500 ピクセル (5X300 = 1500) のイメージを PDF へ配置すると
PDF 中では、1500X1500 ピクセル が 5X5 inch となり
解像度が 300dpi のイメージとなります。
サイズがどうあろうとも、そのイメージはいつでも 1500X1500 ピクセルです。
Barcode39 code39 = new Barcode39();
code39.Code = iBarCode; //出力するバーコードの文字
code39.StartStopText = true; //スタートストップテキスト
code39.BarHeight = 20; //バーコ-ドの高さ
code39.GenerateChecksum = false;
Image image39 = code39.CreateImageWithBarcode(pcb, null, BaseColor.WHITE);
image39.SetAbsolutePosition(20, 550);
image39.RotationDegrees = 90; //回転90度
image39.ScaleAbsolute(250,20);
pcb.AddImage(image39);
スケーリング(拡大・縮小)
イメージの大きさを指定してスケーリングをするときには
scaleAbsolute[Width|Height] メソッドを使います。
ある割合 (パーセント) でスケーリングするときは、scalePercent メソッドを使います。
既定では、スケーリングされていないイメージは、解像度が 72dpi と扱われることに注意。
50% でスケーリングされたイメージでは、144 になります。
小さくスケーリングされたイメージは、ピクセルの大きさが小さくなるので解像度は大きくなります。
300dpi で出力したいときには、72/300=24% のスケーリングを使います。
例えば、24% (72/300 = 0.24) のスケーリングで
1500X1500 ピクセル (5X300 = 1500) のイメージを PDF へ配置すると
PDF 中では、1500X1500 ピクセル が 5X5 inch となり
解像度が 300dpi のイメージとなります。
サイズがどうあろうとも、そのイメージはいつでも 1500X1500 ピクセルです。
Barcode39 code39 = new Barcode39();
code39.Code = iBarCode; //出力するバーコードの文字
code39.StartStopText = true; //スタートストップテキスト
code39.BarHeight = 20; //バーコ-ドの高さ
code39.GenerateChecksum = false;
Image image39 = code39.CreateImageWithBarcode(pcb, null, BaseColor.WHITE);
image39.SetAbsolutePosition(20, 550);
image39.RotationDegrees = 90; //回転90度
image39.ScaleAbsolute(250,20);
pcb.AddImage(image39);
2011年2月14日月曜日
Quick PDF Library Lite
Quick PDF Library Lite
Quick PDF Libraryは有料だけどLiteは無料みたい。
でも使用したい機能は、DrawTextだから、Liteで十分と思われる。
http://www.quickpdflibrary.com/free/lite.php
Quick PDF Libraryは有料だけどLiteは無料みたい。
でも使用したい機能は、DrawTextだから、Liteで十分と思われる。
http://www.quickpdflibrary.com/free/lite.php
DelphianWorldのアーカイブ
DelphianWorldをアーカイブしているページ
http://web.archive.org/web/20070517141149/norg1964.hp.infoseek.co.jp/delphianworld/
Delphiの資料および情報が無くなりつつありますが
保存してくれているとうれしい限りです。
情報元は、Mr.XRayさんの掲示板
http://mrxray.on.coocan.jp/bbs/DelphiBBS/mrxray_delphifan_coffe.cgi
http://web.archive.org/web/20070517141149/norg1964.hp.infoseek.co.jp/delphianworld/
Delphiの資料および情報が無くなりつつありますが
保存してくれているとうれしい限りです。
情報元は、Mr.XRayさんの掲示板
http://mrxray.on.coocan.jp/bbs/DelphiBBS/mrxray_delphifan_coffe.cgi
2011年2月10日木曜日
Delphi Open Source Projects PasDoc
原文
Pasdoc generates documentation for Pascal units. It takes descriptions from comments within the source code. Documentation output formats include HTML and LaTeX. Object Pascal, FreePascal and Delphi specific features are supported.
翻訳
Pasdocは、Pascalユニットのためにドキュメンテーションを引き起こします。
それは、ソースコードの範囲内でコメントから説明をとります。
ドキュメンテーション出力フォーマットは、HTMLとLaTeXを含みます。
オブジェクトPascal、FreePascalとデルファイに特有の特徴は、サポートされます。
http://sourceforge.net/projects/pasdoc/
http://pasdoc.sipsolutions.net/
ライセンス:GPL
Pasdoc generates documentation for Pascal units. It takes descriptions from comments within the source code. Documentation output formats include HTML and LaTeX. Object Pascal, FreePascal and Delphi specific features are supported.
翻訳
Pasdocは、Pascalユニットのためにドキュメンテーションを引き起こします。
それは、ソースコードの範囲内でコメントから説明をとります。
ドキュメンテーション出力フォーマットは、HTMLとLaTeXを含みます。
オブジェクトPascal、FreePascalとデルファイに特有の特徴は、サポートされます。
http://sourceforge.net/projects/pasdoc/
http://pasdoc.sipsolutions.net/
ライセンス:GPL
2011年2月9日水曜日
C++ コマンドパラメータ
C++のコマンドパラメータ
VisualStudio2008のデフォルト文字がUniCodeだったので
正しく入力パラメータを認識しなかった。
対応
コンパイルオプションのUnicodeを無効にする。
構成:全般:文字セット
VisualStudio2008のデフォルト文字がUniCodeだったので
正しく入力パラメータを認識しなかった。
対応
コンパイルオプションのUnicodeを無効にする。
構成:全般:文字セット
Delphi Open Source Projects SKRegexp
Delphi OpenSource
Delphi用正規表現ユニット
ライセンス:MPL1.1
開発者:日本人
http://komish.com/softlib/skregexp.htm
すべてDelphiで書かれている。
Delphi用正規表現ユニット
ライセンス:MPL1.1
開発者:日本人
http://komish.com/softlib/skregexp.htm
すべてDelphiで書かれている。
Open Source Haru Free PDF Library
Open Source Haru Free PDF Library
作成元は、日本人
ソースはC言語
ライセンスはZLib
現在は外人さんがメンテを行っている。
昔は、http://sourceforge.net/projects/libharu/ 2.0.8
現在は、http://libharu.org/ 2011/02/09時点で、2.2.1
インターフェースがそろっているので、.Net(C#),Delphi,Ruby,Pythonなどからも
コール出来る。
日本語解説
http://terusan.kage-tora.com/harupdf.html 確認日 2011/02/09
作成元は、日本人
ソースはC言語
ライセンスはZLib
現在は外人さんがメンテを行っている。
昔は、http://sourceforge.net/projects/libharu/ 2.0.8
現在は、http://libharu.org/ 2011/02/09時点で、2.2.1
インターフェースがそろっているので、.Net(C#),Delphi,Ruby,Pythonなどからも
コール出来る。
日本語解説
http://terusan.kage-tora.com/harupdf.html 確認日 2011/02/09
2011年2月8日火曜日
Delphi Open Source Projects
Delphi Open Source Projects
OmniXML
OmniXML is a XML parser
Mozilla Public License (MPL) 1.1.
http://www.omnixml.com/
Open Source Delphi components for MIDAS
http://sourceforge.net/projects/midess/
OmniXML
OmniXML is a XML parser
Mozilla Public License (MPL) 1.1.
http://www.omnixml.com/
Open Source Delphi components for MIDAS
http://sourceforge.net/projects/midess/
PDFsharp - A .NET library for processing PDF
http://pdfsharp.codeplex.com/
.net用のPDFライブラリ
ライセンスはMIT
http://pdfsharp.codeplex.com/
.net用のPDFライブラリ
ライセンスはMIT
ラベル:
.Net,
OpenSource,
PDF
2011年2月7日月曜日
Ascii 文字コード一覧
chr 0 : ヌル(空白文字)
chr 1 : バイト値1(「ヘッダ開始」という意味らしい)
chr 2 : バイト値2(「テキスト開始」という意味らしい)
chr 9 : 水平タブ([TAB] キー一回分)
chr 10 : 改行(カーソル位置をそのままに、次の行へ移動)
chr 13 : 復帰(カーソル位置を行頭へ移動)
chr 32 : 空白(半角スペース " ")
chr 33 : 感嘆符(エクスクラメーション "!")
chr 34 : 二重引用符(ダブルクォーテーション '"')
chr 35 : シャープ("#")
chr 36 : ドル("$")
chr 37 : パーセント("%")
chr 38 : アンパサンド(&記号 "&")
chr 39 : (右)一重引用符(シングルクォーテーション "'")
chr 40 : 始め小括弧("(")
chr 41 : 終わり小括弧(")")
chr 42 : アスタリスク(米印 "*")
chr 43 : プラス("+")
chr 44 : カンマ(",")
chr 45 : マイナス("-")
chr 46 : ピリオド(".")
chr 47 : スラッシュ(わり算記号 "/")
chr 58 : コロン(":")
chr 59 : セミコロン(";")
chr 60 : 始め山括弧("<") chr 61 : 等号(イコール記号 "=") chr 62 : 終わり山括弧(">")
chr 63 : 疑問符(クエスチョンマーク "?")
chr 64 : アットマーク("@")
chr 91 : 始め大括弧("[")
chr 92 : 円記号("\")
chr 93 : 終わり大括弧("]")
chr 95 : アンダーライン("_")
chr 123 : 始め中括弧("{")
chr 124 : 縦線("|")
chr 125 : 終わり中括弧("}")
chr 126 : チルダ("~")
chr 1 : バイト値1(「ヘッダ開始」という意味らしい)
chr 2 : バイト値2(「テキスト開始」という意味らしい)
chr 9 : 水平タブ([TAB] キー一回分)
chr 10 : 改行(カーソル位置をそのままに、次の行へ移動)
chr 13 : 復帰(カーソル位置を行頭へ移動)
chr 32 : 空白(半角スペース " ")
chr 33 : 感嘆符(エクスクラメーション "!")
chr 34 : 二重引用符(ダブルクォーテーション '"')
chr 35 : シャープ("#")
chr 36 : ドル("$")
chr 37 : パーセント("%")
chr 38 : アンパサンド(&記号 "&")
chr 39 : (右)一重引用符(シングルクォーテーション "'")
chr 40 : 始め小括弧("(")
chr 41 : 終わり小括弧(")")
chr 42 : アスタリスク(米印 "*")
chr 43 : プラス("+")
chr 44 : カンマ(",")
chr 45 : マイナス("-")
chr 46 : ピリオド(".")
chr 47 : スラッシュ(わり算記号 "/")
chr 58 : コロン(":")
chr 59 : セミコロン(";")
chr 60 : 始め山括弧("<") chr 61 : 等号(イコール記号 "=") chr 62 : 終わり山括弧(">")
chr 63 : 疑問符(クエスチョンマーク "?")
chr 64 : アットマーク("@")
chr 91 : 始め大括弧("[")
chr 92 : 円記号("\")
chr 93 : 終わり大括弧("]")
chr 95 : アンダーライン("_")
chr 123 : 始め中括弧("{")
chr 124 : 縦線("|")
chr 125 : 終わり中括弧("}")
chr 126 : チルダ("~")
MS-SQL 半角から全角の変換
http://d.hatena.ne.jp/babydaemons/20080226
コピペさせてもらいました。
非常に助かります。
CREATE FUNCTION dbo.ToWide(@s VARCHAR(512))
RETURNS VARCHAR(512) AS
BEGIN
/* ASCII文字はコード順に処理する */
SET @s = REPLACE(@s COLLATE Japanese_BIN, ' ', ' ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '!', '!')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '"', '”')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '#', '#')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '$', '$')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '%', '%')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '&', '&')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '''', '’')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '(', '(')
SET @s = REPLACE(@s COLLATE Japanese_BIN, ')', ')')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '*', '*')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '+', '+')
SET @s = REPLACE(@s COLLATE Japanese_BIN, ',', ',')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '-', '-')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '.', '.')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '/', '/')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '0', '0')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '1', '1')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '2', '2')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '3', '3')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '4', '4')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '5', '5')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '6', '6')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '7', '7')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '8', '8')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '9', '9')
SET @s = REPLACE(@s COLLATE Japanese_BIN, ':', ':')
SET @s = REPLACE(@s COLLATE Japanese_BIN, ';', ';')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '<', '<') SET @s = REPLACE(@s COLLATE Japanese_BIN, '>', '>')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '?', '?')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '@', '@')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'A', 'A')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'B', 'B')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'C', 'C')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'D', 'D')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'E', 'E')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'F', 'F')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'G', 'G')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'H', 'H')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'I', 'I')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'J', 'J')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'K', 'K')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'L', 'L')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'M', 'M')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'N', 'N')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'O', 'O')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'P', 'P')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'Q', 'Q')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'R', 'R')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'S', 'S')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'T', 'T')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'U', 'U')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'V', 'V')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'W', 'W')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'X', 'X')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'Y', 'Y')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'Z', 'Z')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '`', '`')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'a', 'a')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'b', 'b')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'c', 'c')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'd', 'd')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'e', 'e')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'f', 'f')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'g', 'g')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'h', 'h')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'i', 'i')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'j', 'j')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'k', 'k')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'l', 'l')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'm', 'm')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'n', 'n')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'o', 'o')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'p', 'p')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'q', 'q')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'r', 'r')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 's', 's')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 't', 't')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'u', 'u')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'v', 'v')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'w', 'w')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'x', 'x')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'y', 'y')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'z', 'z')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '{', '{')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '|', '|')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '}', '}')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '~', ' ̄')
/* 濁点・半濁点を先に処理する */
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ガ', 'ガ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ギ', 'ギ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'グ', 'グ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ゲ', 'ゲ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ゴ', 'ゴ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ザ', 'ザ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ジ', 'ジ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ズ', 'ズ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ゼ', 'ゼ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ゾ', 'ゾ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ダ', 'ダ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ヂ', 'ヂ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ヅ', 'ヅ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'デ', 'デ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ド', 'ド')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'バ', 'バ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ビ', 'ビ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ブ', 'ブ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ベ', 'ベ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ボ', 'ボ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'パ', 'パ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ピ', 'ピ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'プ', 'プ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ペ', 'ペ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ポ', 'ポ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ヴ', 'ヴ')
/* 残りはコード順に処理する */
SET @s = REPLACE(@s COLLATE Japanese_BIN, '。', '。')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '「', '「')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '」', '」')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '、', '、')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ヲ', 'ヲ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ァ', 'ァ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ィ', 'ィ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ゥ', 'ゥ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ェ', 'ェ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ォ', 'ォ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ャ', 'ャ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ュ', 'ュ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ョ', 'ョ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ッ', 'ッ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ー', 'ー')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ア', 'ア')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'イ', 'イ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ウ', 'ウ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'エ', 'エ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'オ', 'オ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'カ', 'カ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'キ', 'キ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ク', 'ク')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ケ', 'ケ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'コ', 'コ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'サ', 'サ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'シ', 'シ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ス', 'ス')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'セ', 'セ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ソ', 'ソ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'タ', 'タ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'チ', 'チ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ツ', 'ツ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'テ', 'テ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ト', 'ト')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ナ', 'ナ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ニ', 'ニ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ヌ', 'ヌ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ネ', 'ネ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ノ', 'ノ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ハ', 'ハ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ヒ', 'ヒ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'フ', 'フ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ヘ', 'ヘ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ホ', 'ホ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'マ', 'マ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ミ', 'ミ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ム', 'ム')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'メ', 'メ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'モ', 'モ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ヤ', 'ヤ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ユ', 'ユ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ヨ', 'ヨ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ラ', 'ラ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'リ', 'リ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ル', 'ル')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'レ', 'レ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ロ', 'ロ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ワ', 'ワ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ン', 'ン')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '゚', '゜')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '゙', '゛')
RETURN @s
END
コピペさせてもらいました。
非常に助かります。
CREATE FUNCTION dbo.ToWide(@s VARCHAR(512))
RETURNS VARCHAR(512) AS
BEGIN
/* ASCII文字はコード順に処理する */
SET @s = REPLACE(@s COLLATE Japanese_BIN, ' ', ' ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '!', '!')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '"', '”')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '#', '#')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '$', '$')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '%', '%')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '&', '&')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '''', '’')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '(', '(')
SET @s = REPLACE(@s COLLATE Japanese_BIN, ')', ')')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '*', '*')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '+', '+')
SET @s = REPLACE(@s COLLATE Japanese_BIN, ',', ',')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '-', '-')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '.', '.')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '/', '/')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '0', '0')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '1', '1')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '2', '2')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '3', '3')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '4', '4')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '5', '5')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '6', '6')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '7', '7')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '8', '8')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '9', '9')
SET @s = REPLACE(@s COLLATE Japanese_BIN, ':', ':')
SET @s = REPLACE(@s COLLATE Japanese_BIN, ';', ';')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '<', '<') SET @s = REPLACE(@s COLLATE Japanese_BIN, '>', '>')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '?', '?')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '@', '@')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'A', 'A')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'B', 'B')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'C', 'C')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'D', 'D')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'E', 'E')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'F', 'F')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'G', 'G')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'H', 'H')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'I', 'I')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'J', 'J')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'K', 'K')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'L', 'L')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'M', 'M')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'N', 'N')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'O', 'O')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'P', 'P')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'Q', 'Q')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'R', 'R')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'S', 'S')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'T', 'T')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'U', 'U')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'V', 'V')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'W', 'W')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'X', 'X')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'Y', 'Y')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'Z', 'Z')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '`', '`')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'a', 'a')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'b', 'b')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'c', 'c')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'd', 'd')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'e', 'e')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'f', 'f')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'g', 'g')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'h', 'h')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'i', 'i')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'j', 'j')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'k', 'k')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'l', 'l')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'm', 'm')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'n', 'n')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'o', 'o')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'p', 'p')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'q', 'q')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'r', 'r')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 's', 's')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 't', 't')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'u', 'u')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'v', 'v')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'w', 'w')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'x', 'x')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'y', 'y')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'z', 'z')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '{', '{')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '|', '|')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '}', '}')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '~', ' ̄')
/* 濁点・半濁点を先に処理する */
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ガ', 'ガ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ギ', 'ギ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'グ', 'グ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ゲ', 'ゲ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ゴ', 'ゴ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ザ', 'ザ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ジ', 'ジ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ズ', 'ズ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ゼ', 'ゼ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ゾ', 'ゾ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ダ', 'ダ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ヂ', 'ヂ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ヅ', 'ヅ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'デ', 'デ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ド', 'ド')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'バ', 'バ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ビ', 'ビ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ブ', 'ブ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ベ', 'ベ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ボ', 'ボ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'パ', 'パ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ピ', 'ピ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'プ', 'プ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ペ', 'ペ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ポ', 'ポ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ヴ', 'ヴ')
/* 残りはコード順に処理する */
SET @s = REPLACE(@s COLLATE Japanese_BIN, '。', '。')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '「', '「')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '」', '」')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '、', '、')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ヲ', 'ヲ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ァ', 'ァ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ィ', 'ィ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ゥ', 'ゥ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ェ', 'ェ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ォ', 'ォ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ャ', 'ャ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ュ', 'ュ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ョ', 'ョ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ッ', 'ッ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ー', 'ー')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ア', 'ア')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'イ', 'イ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ウ', 'ウ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'エ', 'エ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'オ', 'オ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'カ', 'カ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'キ', 'キ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ク', 'ク')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ケ', 'ケ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'コ', 'コ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'サ', 'サ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'シ', 'シ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ス', 'ス')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'セ', 'セ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ソ', 'ソ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'タ', 'タ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'チ', 'チ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ツ', 'ツ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'テ', 'テ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ト', 'ト')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ナ', 'ナ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ニ', 'ニ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ヌ', 'ヌ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ネ', 'ネ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ノ', 'ノ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ハ', 'ハ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ヒ', 'ヒ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'フ', 'フ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ヘ', 'ヘ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ホ', 'ホ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'マ', 'マ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ミ', 'ミ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ム', 'ム')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'メ', 'メ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'モ', 'モ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ヤ', 'ヤ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ユ', 'ユ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ヨ', 'ヨ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ラ', 'ラ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'リ', 'リ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ル', 'ル')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'レ', 'レ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ロ', 'ロ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ワ', 'ワ')
SET @s = REPLACE(@s COLLATE Japanese_BIN, 'ン', 'ン')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '゚', '゜')
SET @s = REPLACE(@s COLLATE Japanese_BIN, '゙', '゛')
RETURN @s
END
2011年2月4日金曜日
MAGIC FileDlg
UniPaasのFileDlg関数
構文:
FileDlg(ファイルタイプ,グループ)
グループにフルパスを設定すると、フルパスの場所で、ファイルダイアログが表示される。
確認Ver UniPaas1.5
FileDlg関数はMAGIC v8から存在しています。
構文:
FileDlg(ファイルタイプ,グループ)
グループにフルパスを設定すると、フルパスの場所で、ファイルダイアログが表示される。
確認Ver UniPaas1.5
FileDlg関数はMAGIC v8から存在しています。
2011年2月3日木曜日
Delphi ダミーファイル作成
procedure CreateNewFile(FileName: String; FileSize: Integer);
var
FileHandle: Integer;
C: Char;
begin
FileHandle := FileCreate (FileName);
FileSeek(FileHandle,FileSize-1,0);
C := Char(0);
FileWrite (FileHandle,C,1);
FileClose (FileHandle);
end;
var
FileHandle: Integer;
C: Char;
begin
FileHandle := FileCreate (FileName);
FileSeek(FileHandle,FileSize-1,0);
C := Char(0);
FileWrite (FileHandle,C,1);
FileClose (FileHandle);
end;
2011年2月1日火曜日
2011年1月28日金曜日
iTextSharpでPDFファイル結合
using iTextSharp.text;
using iTextSharp.text.pdf;
//出力ファイルが存在している場合は削除
//1番目のファイルが合体するファイル
if (File.Exists(args[0].ToString()))
{
File.Delete(args[0].ToString());
}
Document doc = null; // 出力ファイルDocument
PdfCopy copy = null; // 出力ファイルPdfCopy
try
{
//-------------------------------------------------------------------------------------
// ファイル件数分、ファイル結合
//-------------------------------------------------------------------------------------
for (int i = 1; i < args.Length; i++)
{
// リーダー取得
PdfReader reader = new PdfReader(args[i].ToString());
// 入力ファイル1を出力ファイルの雛形にする
if (i == 1)
{
// Document作成
doc = new Document(reader.GetPageSizeWithRotation(1));
// 出力ファイルPdfCopy作成
copy = new PdfCopy(doc, new FileStream(args[0].ToString(), FileMode.Create));
// 出力ファイルDocumentを開く
doc.Open();
// 文章プロパティ設定
doc.AddKeywords((string)reader.Info["Keywords"]);
doc.AddAuthor((string)reader.Info["Author"]);
doc.AddTitle((string)reader.Info["Title"]);
doc.AddCreator((string)reader.Info["Creator"]);
doc.AddSubject((string)reader.Info["Subject"]);
}
// PDFコンテンツを取得、copyオブジェクトに追加
for (int iPageCnt = 1; iPageCnt <= reader.NumberOfPages; iPageCnt++)
{
PdfImportedPage page = copy.GetImportedPage(reader, iPageCnt);
copy.AddPage(page);
}
// フォーム入力を結合
PRAcroForm form = reader.AcroForm;
if (form != null)
copy.CopyAcroForm(reader);
// リーダーを閉じる
reader.Close();
}
}
finally
{
if (copy != null)
copy.Close();
if (doc != null)
doc.Close();
}
using iTextSharp.text.pdf;
//出力ファイルが存在している場合は削除
//1番目のファイルが合体するファイル
if (File.Exists(args[0].ToString()))
{
File.Delete(args[0].ToString());
}
Document doc = null; // 出力ファイルDocument
PdfCopy copy = null; // 出力ファイルPdfCopy
try
{
//-------------------------------------------------------------------------------------
// ファイル件数分、ファイル結合
//-------------------------------------------------------------------------------------
for (int i = 1; i < args.Length; i++)
{
// リーダー取得
PdfReader reader = new PdfReader(args[i].ToString());
// 入力ファイル1を出力ファイルの雛形にする
if (i == 1)
{
// Document作成
doc = new Document(reader.GetPageSizeWithRotation(1));
// 出力ファイルPdfCopy作成
copy = new PdfCopy(doc, new FileStream(args[0].ToString(), FileMode.Create));
// 出力ファイルDocumentを開く
doc.Open();
// 文章プロパティ設定
doc.AddKeywords((string)reader.Info["Keywords"]);
doc.AddAuthor((string)reader.Info["Author"]);
doc.AddTitle((string)reader.Info["Title"]);
doc.AddCreator((string)reader.Info["Creator"]);
doc.AddSubject((string)reader.Info["Subject"]);
}
// PDFコンテンツを取得、copyオブジェクトに追加
for (int iPageCnt = 1; iPageCnt <= reader.NumberOfPages; iPageCnt++)
{
PdfImportedPage page = copy.GetImportedPage(reader, iPageCnt);
copy.AddPage(page);
}
// フォーム入力を結合
PRAcroForm form = reader.AcroForm;
if (form != null)
copy.CopyAcroForm(reader);
// リーダーを閉じる
reader.Close();
}
}
finally
{
if (copy != null)
copy.Close();
if (doc != null)
doc.Close();
}
vbscriptでショートカット(リンクアイコン)を作成
デスクトップ上にシュートカットアイコンを作成します
Set fso = CreateObject("Scripting.FileSystemObject")
Set ws = CreateObject("WScript.Shell")
desktop = ws.SpecialFolders("Desktop")
' ショートカット作成
Set shortcut = ws.CreateShortcut(desktop & "\Lotus Notes 7.lnk")
With shortcut
.TargetPath = "C:\Program Files\lotus\notes\notes.exe"
.WorkingDirectory = desktop
.Save
End With
Set fso = CreateObject("Scripting.FileSystemObject")
Set ws = CreateObject("WScript.Shell")
desktop = ws.SpecialFolders("Desktop")
' ショートカット作成
Set shortcut = ws.CreateShortcut(desktop & "\Lotus Notes 7.lnk")
With shortcut
.TargetPath = "C:\Program Files\lotus\notes\notes.exe"
.WorkingDirectory = desktop
.Save
End With
2011年1月27日木曜日
iTextSharpの文字印刷
//文字列の出力
//フォントの作成(使用するフォントをあらかじめ準備)
Font font = new Font(
BaseFont.CreateFont(@"c:\windows\fonts\msgothic.ttc,0", BaseFont.IDENTITY_H,
BaseFont.NOT_EMBEDDED));
pcb.BeginText();
//文字の出力(文字の出力時は必ず、BeginTextとEndTextで囲む必要がある)
pcb.SetFontAndSize(font.BaseFont, 16);
//構成・出力文字列・X・Y・rotation(回転):水平時は0
pcb.ShowTextAligned(Element.ALIGN_LEFT, "BarCode", 10, 380, 270);
pcb.EndText();
//フォントの作成(使用するフォントをあらかじめ準備)
Font font = new Font(
BaseFont.CreateFont(@"c:\windows\fonts\msgothic.ttc,0", BaseFont.IDENTITY_H,
BaseFont.NOT_EMBEDDED));
pcb.BeginText();
//文字の出力(文字の出力時は必ず、BeginTextとEndTextで囲む必要がある)
pcb.SetFontAndSize(font.BaseFont, 16);
//構成・出力文字列・X・Y・rotation(回転):水平時は0
pcb.ShowTextAligned(Element.ALIGN_LEFT, "BarCode", 10, 380, 270);
pcb.EndText();
2011年1月26日水曜日
iTextSharpでテンプレートを使用する方法
iTextSharpでテンプレートを使用する方法
CodeZineや@ITにも方法が載っていたが、バージョンが古いせいか
コピペで動作しなかった。
iTextSharp 5.0.5で動作確認
using iTextSharp.text;
using iTextSharp.text.pdf;
// step 1: creation of a document-object
Document doc = new Document();
// step 2:
// we create a writer that listens to the document
// and directs a PDF-stream to a file
String vTempFile = iPDFFileName + "_.pdf";
PdfReader pr = new PdfReader(iPDFFileName);
PdfWriter pw = PdfWriter.GetInstance(doc, new FileStream(vTempFile, FileMode.Create));
// step 3: we open the document
doc.Open();
// template.pdfを現在のPDF文書に対して適用
PdfImportedPage page = pw.GetImportedPage(pr, 1);
PdfContentByte pcb = pw.DirectContent; //旧だとGetDirectContent;
pcb.AddTemplate(page, 0, 0);
// step 4: we add content
//iTextSharp.text.Image bmp = iTextSharp.text.Image.GetInstance(iBarCodeFileName);
Image bmp = Image.GetInstance(iBarCodeFileName);
bmp.SetAbsolutePosition(50, 630);
pcb.AddImage(bmp);
//doc.Add(bmp);
// step 5: we close the document
doc.Close();
CodeZineや@ITにも方法が載っていたが、バージョンが古いせいか
コピペで動作しなかった。
iTextSharp 5.0.5で動作確認
using iTextSharp.text;
using iTextSharp.text.pdf;
// step 1: creation of a document-object
Document doc = new Document();
// step 2:
// we create a writer that listens to the document
// and directs a PDF-stream to a file
String vTempFile = iPDFFileName + "_.pdf";
PdfReader pr = new PdfReader(iPDFFileName);
PdfWriter pw = PdfWriter.GetInstance(doc, new FileStream(vTempFile, FileMode.Create));
// step 3: we open the document
doc.Open();
// template.pdfを現在のPDF文書に対して適用
PdfImportedPage page = pw.GetImportedPage(pr, 1);
PdfContentByte pcb = pw.DirectContent; //旧だとGetDirectContent;
pcb.AddTemplate(page, 0, 0);
// step 4: we add content
//iTextSharp.text.Image bmp = iTextSharp.text.Image.GetInstance(iBarCodeFileName);
Image bmp = Image.GetInstance(iBarCodeFileName);
bmp.SetAbsolutePosition(50, 630);
pcb.AddImage(bmp);
//doc.Add(bmp);
// step 5: we close the document
doc.Close();
ラベル:
.Net,
C#,
iTextSharp
C# コマンドラインからパラメータを取得する
C# コマンドラインからパラメータを取得する
Mainメソッドのパラメータで取得する方法
static void Main(string[] args)
{
if (args.Length == 0)
{
Console.WriteLine("コマンドライン引数はありません。");
}
else
{
foreach (string arg in args)
Console.WriteLine(arg);
}
}
Mainメソッドのパラメータで取得する方法
static void Main(string[] args)
{
if (args.Length == 0)
{
Console.WriteLine("コマンドライン引数はありません。");
}
else
{
foreach (string arg in args)
Console.WriteLine(arg);
}
}
.NETでPDF帳票を出力する
iTextSharpは、iTextというJavaのライブラリをC#に移植したものです。.NETで動作するiTextには、iTextSharp以外にも、iText.NETという移植版が存在します。
開発者が日本人(氏原さん)のため多国語処理に強く
日本語の情報が充実しているメリットがあります。
ソースは、SourceForgeより
CodeZineの記事
http://codezine.jp/article/detail/462
開発者が日本人(氏原さん)のため多国語処理に強く
日本語の情報が充実しているメリットがあります。
ソースは、SourceForgeより
CodeZineの記事
http://codezine.jp/article/detail/462
ラベル:
.Net,
iTextSharp,
PDF
delphiでプリンター属性を変更する
delphiでプリンター属性を変更する
以下がソース
ただし、Windows95までは権限が無かったのでOKだったが
NTからはプリンター属性を変更するのに権限が必要
Wins32のDevModeを使用しています
function SetPaper(PaperName: String): boolean;
var
DrvName, PrtName, PortName: array[0..512] of char;
h: THandle;
pDevMode: PDEVICEMODE;
PaperCount, i: Integer;
Papers: array[0..255] of array[0..63] of Char;
PaperNo: array[0..255] of Word;
begin
Result := False;
Printer.GetPrinter(DrvName, PrtName, PortName, h);
Printer.SetPrinter(DrvName, PrtName, PortName, 0);
Printer.GetPrinter(DrvName, PrtName, PortName, h);
pDevMode := GlobalLock(h);
try
// 用紙サイズ配列数を取得
PaperCount := DeviceCapabilities(DrvName, PortName, DC_PAPERS,
nil, pDevMode);
// 用紙サイズ番号をPaperNoに保存
DeviceCapabilities(DrvName, PortName, DC_PAPERS, @PaperNo, nil);
// 用紙サイズ名ををPapersに格納
DeviceCapabilities(DrvName, PortName, DC_PAPERNAMES, @Papers, nil);
// 指定した用紙名で用紙サイズ番号を検索
for i := 0 to PaperCount -1 do
begin
if PaperName=Papers[i] then
begin
// 検索された用紙サイズのdmPaperSizeを設定
pDevMode^.dmPaperSize := PaperNo[i];
Result := True;
Break;
end;
end;
finally
GlobalUnlock(h);
end;
end;
NTからはプリンター属性を変更するのに権限が必要
Wins32のDevModeを使用しています
function SetPaper(PaperName: String): boolean;
var
DrvName, PrtName, PortName: array[0..512] of char;
h: THandle;
pDevMode: PDEVICEMODE;
PaperCount, i: Integer;
Papers: array[0..255] of array[0..63] of Char;
PaperNo: array[0..255] of Word;
begin
Result := False;
Printer.GetPrinter(DrvName, PrtName, PortName, h);
Printer.SetPrinter(DrvName, PrtName, PortName, 0);
Printer.GetPrinter(DrvName, PrtName, PortName, h);
pDevMode := GlobalLock(h);
try
// 用紙サイズ配列数を取得
PaperCount := DeviceCapabilities(DrvName, PortName, DC_PAPERS,
nil, pDevMode);
// 用紙サイズ番号をPaperNoに保存
DeviceCapabilities(DrvName, PortName, DC_PAPERS, @PaperNo, nil);
// 用紙サイズ名ををPapersに格納
DeviceCapabilities(DrvName, PortName, DC_PAPERNAMES, @Papers, nil);
// 指定した用紙名で用紙サイズ番号を検索
for i := 0 to PaperCount -1 do
begin
if PaperName=Papers[i] then
begin
// 検索された用紙サイズのdmPaperSizeを設定
pDevMode^.dmPaperSize := PaperNo[i];
Result := True;
Break;
end;
end;
finally
GlobalUnlock(h);
end;
end;
Delphiでファイルのタイムスタンプを変更する
Delphiでファイルのタイムスタンプを変更する
引数 | FileName … タイムスタンプを変更したいファイルの名前です。 DateTime … タイムスタンプです。TDateTime 型で指定して下さい。 |
戻り値 | タイムスタンプの変更が成功すれば True、失敗すれば(ファイルが存在しない場合など) False を返します。 |
uses SysUtils;
function FileSetDate2(FileName: string; DateTime: TDateTime): Boolean;
var hFile: Integer;
begin
hFile := FileOpen(FileName, fmOpenWrite);
Result := hFile > 0;
if Result then begin
Result := FileSetDate(hFile, DateTimeToFileDate(DateTime)) = 0;
FileClose(hFile);
end;
end;
Windows DCを降格出来ない
DCを降格出来ない
DCPROMOコマンドでコメインコントローラーを降格出来ない場合
DCPROMO /forceremoval オプションを追加すると、強制的に降格出来る。
その後、ADでそのサーバの残骸が削除する
残骸とは、管理サーバの一覧から削除
ドメイン参加になっている一覧から削除
Oracle DBConsole構築方法
DBConsole構築方法
コマンドプロンプトからemca -deconfig dbcontrol db
emca -config dbcontrol db
GhostScriptLiteを.Netから使用する
GhostScriptを.Netから使用する。
http://www.codeproject.com/KB/cs/GhostScriptUseWithCSharp.aspx
http://www.codeproject.com/KB/cs/GhostScriptUseWithCSharp.aspx
登録:
投稿 (Atom)