private void TextKeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode != Keys.Enter) { return; }
this.ProcessTabKey(!e.Shift);
e.Handled = true;
}
2011年8月2日火曜日
2011年7月11日月曜日
windows7でapacheが起動しない
80番を何かが使っているのでは?
コマンドプロントで「make_sock: could not bind to address 0.0.0.0:80」って返ってきた場合、ポート80が使用されていてApacheが起動できないことを意味しています。
つまりポート80を使用しているプロセスを停止してあげればApacheをスタートすることができる
コマンドプロンプトから「netstat -oan」を打ち込んで実行。
ポートとプロセスの状態が見れるので、「[Loval Address]0.0.0.0:80」 を使用している [PID] を確認します。
タスクマネージャを開きプロセスタブを開きます。
さらに、 「表示」→「列の選択」で、「PID(プロセル ID)(P)」をチェックして表示します。
すると、プロセス一覧にPIDが表示されるので、先ほど確認したPIDを使用しているプロセスを特定し、そのプロセスを停止します。
まあ大抵はSkypeさんが邪魔してると思いますが、知らない名前のプロセスだった場合は自己責任で停止してくださいね。
後はもう一度XAMPPのコントロールパネルからApacheをスタートさせれば起動されるはずです。
ちょっと話が脱線した気がしますがXAMPPの設定は以上です。
あとは「http://localhost/」にアクセスしてXAMPPのページが表示されれば成功です。
コマンドプロントで「make_sock: could not bind to address 0.0.0.0:80」って返ってきた場合、ポート80が使用されていてApacheが起動できないことを意味しています。
つまりポート80を使用しているプロセスを停止してあげればApacheをスタートすることができる
コマンドプロンプトから「netstat -oan」を打ち込んで実行。
ポートとプロセスの状態が見れるので、「[Loval Address]0.0.0.0:80」 を使用している [PID] を確認します。
タスクマネージャを開きプロセスタブを開きます。
さらに、 「表示」→「列の選択」で、「PID(プロセル ID)(P)」をチェックして表示します。
すると、プロセス一覧にPIDが表示されるので、先ほど確認したPIDを使用しているプロセスを特定し、そのプロセスを停止します。
まあ大抵はSkypeさんが邪魔してると思いますが、知らない名前のプロセスだった場合は自己責任で停止してくださいね。
後はもう一度XAMPPのコントロールパネルからApacheをスタートさせれば起動されるはずです。
ちょっと話が脱線した気がしますがXAMPPの設定は以上です。
あとは「http://localhost/」にアクセスしてXAMPPのページが表示されれば成功です。
SQLS2008R2でリモート接続を有効にする
スタート > すべてのプログラム > Microsoft SQL Server 2008 R2 > 構成ツール > SQL Server 構成マネージャー
を開いて
SQL Server ネットワークの構成 > MSSQLSERVERのプロトコル
の右ペインで
共有メモリ 有効
TCP/IP 有効
にする
を開いて
SQL Server ネットワークの構成 > MSSQLSERVERのプロトコル
の右ペインで
共有メモリ 有効
TCP/IP 有効
にする
2011年6月16日木曜日
T-SQL:Replace関数で大文字小文字を区別
T-SQL:Replace関数で大文字小文字を区別(COLLATE句の指定方法)
SQL-Server2000をデフォルトの照合順序でインストールすると
Japanese_CI_AS つまり大文字小文字区別なしアクセント区別ありと
なっていることと思います。
※Windows照合順序に左右されるのかな?
今回私が試している環境は上記の状態です。
この状態でReplace関数を使用すると、次のような結果になります。
Select Replace('DbCd','D', 'a')
↓
'abCa'
大文字小文字の区別なしに'D'と'd'が'a'に変換される
この関数上でのみ大文字小文字を区別させるには、使用する文字列自体に照合順序を指定します。
Select Replace('DbCd' collate Japanese_CS_AS,'D', 'a')
↓
'abCd'
大文字小文字を区別して'D'のみが'a'に変換される
ちなみに上記指定では変換元の文字列に対して指定していますが
検索文字、置換文字のいずれに指定しても同様の結果が得られるようです。
Select Replace('DbCd','D', 'a' collate Japanese_CS_AS)
↓
'abCd'
Select Replace('DbCd','D' collate Japanese_CS_AS, 'a')
↓
'abCd'
最初、ヘルプを読んだ際に指定方法がわからず、下記の指定をしてしまっていたのですが、これでは変換後の文字に対して指定しているのでまったく意味を為していなかったんですね。
Select Replace('DbCd','D', 'a') collate Japanese_CS_AS
↓
'abCa'
ということで、照合順序の指定方法、COLLATE句がどこにかかるのかを間違えないようにしましょう。
SQL-Server2000をデフォルトの照合順序でインストールすると
Japanese_CI_AS つまり大文字小文字区別なしアクセント区別ありと
なっていることと思います。
※Windows照合順序に左右されるのかな?
今回私が試している環境は上記の状態です。
この状態でReplace関数を使用すると、次のような結果になります。
Select Replace('DbCd','D', 'a')
↓
'abCa'
大文字小文字の区別なしに'D'と'd'が'a'に変換される
この関数上でのみ大文字小文字を区別させるには、使用する文字列自体に照合順序を指定します。
Select Replace('DbCd' collate Japanese_CS_AS,'D', 'a')
↓
'abCd'
大文字小文字を区別して'D'のみが'a'に変換される
ちなみに上記指定では変換元の文字列に対して指定していますが
検索文字、置換文字のいずれに指定しても同様の結果が得られるようです。
Select Replace('DbCd','D', 'a' collate Japanese_CS_AS)
↓
'abCd'
Select Replace('DbCd','D' collate Japanese_CS_AS, 'a')
↓
'abCd'
最初、ヘルプを読んだ際に指定方法がわからず、下記の指定をしてしまっていたのですが、これでは変換後の文字に対して指定しているのでまったく意味を為していなかったんですね。
Select Replace('DbCd','D', 'a') collate Japanese_CS_AS
↓
'abCa'
ということで、照合順序の指定方法、COLLATE句がどこにかかるのかを間違えないようにしましょう。
2011年5月23日月曜日
Windows 7, Vista のPCの共有フォルダに、ルータを超えて接続する
Windows 7, Vista でルータを超えて(サブネットの異なる)パソコン同士でファイル共有(パスワード保護共有)を行うには、Windows ファイアウォールで「Netlogon サービス」を例外に追加する必要があるようです。
コントロール パネル > Windows ファイアウォール
画面の左上の「Windows ファイアウォールを介したプログラムまたは機能を許可する」をクリック
「設定の変更」ボタンをクリックする
「許可されたプログラムおよび機能」欄の「Netlogon サービス」の「ホーム/社内(プライベート)」欄をチェック
コントロール パネル > Windows ファイアウォール
画面の左上の「Windows ファイアウォールを介したプログラムまたは機能を許可する」をクリック
「設定の変更」ボタンをクリックする
「許可されたプログラムおよび機能」欄の「Netlogon サービス」の「ホーム/社内(プライベート)」欄をチェック
2011年3月9日水曜日
C# 細かい条件を指定してプログラムを起動する
// ProcessStartInfo の新しいインスタンスを生成する
System.Diagnostics.ProcessStartInfo hPsInfo = (
new System.Diagnostics.ProcessStartInfo()
);
// 起動するアプリケーションを設定する
hPsInfo.FileName = "Notepad";
// コマンドライン引数を設定する
hPsInfo.Arguments = @"C:\Hoge.txt";
// 新しいウィンドウを作成するかどうかを設定する (初期値 false)
hPsInfo.CreateNoWindow = true;
// シェルを使用するかどうか設定する (初期値 true)
hPsInfo.UseShellExecute = false;
// 起動できなかった時にエラーダイアログを表示するかどうかを設定する (初期値 false)
hPsInfo.ErrorDialog = true;
// エラーダイアログを表示するのに必要な親ハンドルを設定する
hPsInfo.ErrorDialogParentHandle = this.Handle;
// アプリケーションを起動する時の動詞を設定する
hPsInfo.Verb = "Open";
// 起動ディレクトリを設定する
hPsInfo.WorkingDirectory = @"C:\Hoge\";
// 起動時のウィンドウの状態を設定する
hPsInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal; //通常
hPsInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; //非表示
hPsInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized; //最小化
hPsInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Maximized; //最大化
// ProcessStartInfo を指定して起動する
System.Diagnostics.Process.Start(hPsInfo);
System.Diagnostics.ProcessStartInfo hPsInfo = (
new System.Diagnostics.ProcessStartInfo()
);
// 起動するアプリケーションを設定する
hPsInfo.FileName = "Notepad";
// コマンドライン引数を設定する
hPsInfo.Arguments = @"C:\Hoge.txt";
// 新しいウィンドウを作成するかどうかを設定する (初期値 false)
hPsInfo.CreateNoWindow = true;
// シェルを使用するかどうか設定する (初期値 true)
hPsInfo.UseShellExecute = false;
// 起動できなかった時にエラーダイアログを表示するかどうかを設定する (初期値 false)
hPsInfo.ErrorDialog = true;
// エラーダイアログを表示するのに必要な親ハンドルを設定する
hPsInfo.ErrorDialogParentHandle = this.Handle;
// アプリケーションを起動する時の動詞を設定する
hPsInfo.Verb = "Open";
// 起動ディレクトリを設定する
hPsInfo.WorkingDirectory = @"C:\Hoge\";
// 起動時のウィンドウの状態を設定する
hPsInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal; //通常
hPsInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; //非表示
hPsInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized; //最小化
hPsInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Maximized; //最大化
// ProcessStartInfo を指定して起動する
System.Diagnostics.Process.Start(hPsInfo);
2011年3月8日火曜日
C# ファイルのパスを調べる関係
if (File.Exists(filePath)) {
// filePathのファイルは存在する
} else {
// filePathのファイルは存在しない
}
if (Directory.Exists(dirPath)) {
// dirPathのディレクトリは存在する
} else {
// dirPathのディレクトリは存在しない
}
//ファイルのサイズを取得
System.IO.FileInfo fi = new System.IO.FileInfo(@"C:\test.txt");
long filesize = fi.Length;
// パスを定数で定義する
const string FILE_PATH = @"C:\Hoge.txt";
// 作成日時を取得する
DateTime dtCreate = System.IO.File.GetCreationTime(FILE_PATH);
// 更新日時を取得する
DateTime dtUpdate = System.IO.File.GetLastWriteTime(FILE_PATH);
// アクセス日時を取得する
DateTime dtAccess = System.IO.File.GetLastAccessTime(FILE_PATH);
// 取得したタイムスタンプを表示する
MessageBox.Show("作成日時 : " + dtCreate.ToString());
MessageBox.Show("更新日時 : " + dtUpdate.ToString());
MessageBox.Show("アクセス日時 : " + dtAccess.ToString());
// filePathのファイルは存在する
} else {
// filePathのファイルは存在しない
}
if (Directory.Exists(dirPath)) {
// dirPathのディレクトリは存在する
} else {
// dirPathのディレクトリは存在しない
}
//ファイルのサイズを取得
System.IO.FileInfo fi = new System.IO.FileInfo(@"C:\test.txt");
long filesize = fi.Length;
// パスを定数で定義する
const string FILE_PATH = @"C:\Hoge.txt";
// 作成日時を取得する
DateTime dtCreate = System.IO.File.GetCreationTime(FILE_PATH);
// 更新日時を取得する
DateTime dtUpdate = System.IO.File.GetLastWriteTime(FILE_PATH);
// アクセス日時を取得する
DateTime dtAccess = System.IO.File.GetLastAccessTime(FILE_PATH);
// 取得したタイムスタンプを表示する
MessageBox.Show("作成日時 : " + dtCreate.ToString());
MessageBox.Show("更新日時 : " + dtUpdate.ToString());
MessageBox.Show("アクセス日時 : " + dtAccess.ToString());
2011年1月27日木曜日
SQLサーバのストアド何とかをC#で書く!!!!!
SQL CLRってのを使います
1. SQLサーバーのセキュリティ設定の変更
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO
/* 2005ではGUIのメニューがあったが、なぜか2008では見当たらない */
/*
clr enabled オプションを 0 に設定することにより、CLR 統合を無効にできます。
CLR 統合を無効にすると、SQL Server ではすべての CLR ルーチンの実行が停止され、
すべてのアプリケーション ドメインがアンロードされます。
*/
2. VS2008で、SQL CLR
「新しいプロジェクト」⇒
(プロジェクトの種類):他の言語/データベース
(テンプレート):SQL Serverプロジェクト
⇒
接続するDBを聞かれるので、選択する⇒
セキュリティのナントカの質問がイパーイ出るが、全て禿同
3. プロシージャを書く!!
「プロジェクト」⇒「ストアドプロシージャの追加」⇒ プロシージャを書く!!
4. ビルドすると、DBにストアドプロシージャが出来ている!!!!!!
http://www.atmarkit.co.jp/fdb/rensai/sqls05try05/sqls05try05_1.html
http://www.atmarkit.co.jp/fdb/rensai/sqls05try06/sqls05try06_1.html
1. SQLサーバーのセキュリティ設定の変更
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO
/* 2005ではGUIのメニューがあったが、なぜか2008では見当たらない */
/*
clr enabled オプションを 0 に設定することにより、CLR 統合を無効にできます。
CLR 統合を無効にすると、SQL Server ではすべての CLR ルーチンの実行が停止され、
すべてのアプリケーション ドメインがアンロードされます。
*/
2. VS2008で、SQL CLR
「新しいプロジェクト」⇒
(プロジェクトの種類):他の言語/データベース
(テンプレート):SQL Serverプロジェクト
⇒
接続するDBを聞かれるので、選択する⇒
セキュリティのナントカの質問がイパーイ出るが、全て禿同
3. プロシージャを書く!!
「プロジェクト」⇒「ストアドプロシージャの追加」⇒ プロシージャを書く!!
4. ビルドすると、DBにストアドプロシージャが出来ている!!!!!!
http://www.atmarkit.co.jp/fdb/rensai/sqls05try05/sqls05try05_1.html
http://www.atmarkit.co.jp/fdb/rensai/sqls05try06/sqls05try06_1.html
2011年1月19日水曜日
C#で多次元配列を宣言する
string[,] nengo = new string[,]{{"明治","明","M"},{"大正","大","T"},{"昭和","昭","S"},{"平成","平","H"} };
2010年12月27日月曜日
T-SQL 文字列の長さをいじろう
長さ、文字コード、類似性、識別子関連の関数一覧
http://journal.mycom.co.jp/articles/2008/10/22/tsql/002.html
| 関数名 | 戻り値 | 説明 |
|---|---|---|
| LEN | 数値(入力値依存) | 文字数を返します |
| DATALENGTH | 数値(入力値依存) | 引数式に必要なバイト数を返します |
| ASCII | int | ASCIIコードを返します |
| CHAR | char(1) | ASCIIコード(0~255)を文字に変換します |
| UNICODE | int | 指定した文字に対応するUnicodeの整数コードを返します |
| NCHAR | nchar(1) | 整数コード(0~65535)からUnicode文字を返します |
| SOUNDEX | varchar | 発音の似た単語を見つけるために、英数字の文字列を4文字のコードに変換します |
| DIFFERENCE | int | 音の似た単語の類似度を0~4の数字で返します。4:類似性高、0:類似性低 |
| QUOTENAME | nvarchar(258) | SQL Server識別子を作成します |
http://journal.mycom.co.jp/articles/2008/10/22/tsql/002.html
2010年12月15日水曜日
decimal 型と numeric 型 のバイトサイズ
| 有効桁数 | ストレージのバイト サイズ |
|---|---|
| 1 - 9 | 5 |
| 10-19 | 9 |
| 20-28 | 13 |
| 29-38 | 17 |
http://msdn.microsoft.com/ja-jp/library/ms187746.aspx
http://social.msdn.microsoft.com/Forums/ja-JP/sqlserverja/thread/5e69eb1a-e7c7-42c4-b8bd-f17fe17c971e/
2010年12月2日木曜日
WS2008でデスクトップにマイコンピュータのアイコンを出す
"C:\Windows\system32\rundll32.exe" shell32.dll,Control_RunDLL desk.cpl,Web,0
2010年10月28日木曜日
C# 指定したファイルをOS標準のアプリで開く
//"C:\My Documents\My Pictures"を表示
System.Diagnostics.Process.Start(@"C:\My Documents\My Pictures");
System.Diagnostics.Process.Start(@"C:\My Documents\My Pictures");
2010年10月15日金曜日
T-SQL の ストアドの outputパラメータをadoで受ける
Dim cmd As New ADODB.Command
Dim rs As ADODB.Recordset
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "[ストアド名]"
Set cmd.ActiveConnection = CurrentProject.Connection
cmd.Parameters.Append cmd.CreateParameter(, 型名, adParamInput, , パラメータの値)
cmd.Parameters.Append cmd.CreateParameter("hoge", 型名, adParamOutput)
Set rs = cmd.Execute
'
'ここでcmd.Executeで取得した値が削除される場合があるため
'rsに代入しておくことにより回避する
'
value = cmd.Parameters(index)
Dim rs As ADODB.Recordset
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "[ストアド名]"
Set cmd.ActiveConnection = CurrentProject.Connection
cmd.Parameters.Append cmd.CreateParameter(, 型名, adParamInput, , パラメータの値)
cmd.Parameters.Append cmd.CreateParameter("hoge", 型名, adParamOutput)
Set rs = cmd.Execute
'
'ここでcmd.Executeで取得した値が削除される場合があるため
'rsに代入しておくことにより回避する
'
value = cmd.Parameters(index)
2010年10月13日水曜日
2010年5月19日水曜日
ストアドからストアド
・戻り値がない場合
EXECUTE [dbo].[P_Stored1] 'testdata1';
・戻り値がある場合
DECLARE @return_value int
EXEC @return_value = [dbo].[[P_Stored2] 'testdata2'
SELECT 'Return Value' = @return_value
EXECUTE [dbo].[P_Stored1] 'testdata1';
・戻り値がある場合
DECLARE @return_value int
EXEC @return_value = [dbo].[[P_Stored2] 'testdata2'
SELECT 'Return Value' = @return_value
一時表と動的SQL
DECLARE @sql nvarchar(1024); -- 実行するSQL文を入れます
DECLARE @tab_name nvarchar(16) = 'table1';
-- 入れる一時表を作ろう
CREATE TABLE #TMPTABLE (
chars nvarchar(4000) NULL
);
-- SQL文を作る
SET @sql = 'INSERT #TMPTABLE ';
SET @sql = @sql + 'FROM ' + @tab_name;
-- 実行する
execute (@sql);
DECLARE @tab_name nvarchar(16) = 'table1';
-- 入れる一時表を作ろう
CREATE TABLE #TMPTABLE (
chars nvarchar(4000) NULL
);
-- SQL文を作る
SET @sql = 'INSERT #TMPTABLE ';
SET @sql = @sql + 'FROM ' + @tab_name;
-- 実行する
execute (@sql);
CSVファイルの内容をDBに登録する
-- oracleのUTL_FILEみたいなやつは存在しないようです
BULK INSERT dbo.table1 FROM '\\SERVER1\Directory\CSVFILE.CSV'
WITH (
DATAFILETYPE = 'char',
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
http://msdn.microsoft.com/ja-jp/library/ms188365.aspx
BULK INSERT dbo.table1 FROM '\\SERVER1\Directory\CSVFILE.CSV'
WITH (
DATAFILETYPE = 'char',
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
http://msdn.microsoft.com/ja-jp/library/ms188365.aspx
2010年5月18日火曜日
コンボボックスでほしいモノを検索して選択する
// コンボボックス:combo1 がテーブル:TABLE1 にバインドしており、
// カラム:COL1 の値が collumnvalue のものを選択させたいとき
int intPosition = this.tABLE1BindingSource.Find("COL1", collumnvalue);
if (intPosition == -1) { return; }
this.combo1.SelectedIndex = intPosition;
// カラム:COL1 の値が collumnvalue のものを選択させたいとき
int intPosition = this.tABLE1BindingSource.Find("COL1", collumnvalue);
if (intPosition == -1) { return; }
this.combo1.SelectedIndex = intPosition;
2010年5月13日木曜日
Fillしたデータを直接読み取る(複数行)
// Fillする
tABLEAdapter1.Fill(DataSet1.Table1);
// レコードセット(?)を取る
DataRowCollection drc1 = (DataRowCollection)dATASet.TABLE1.Rows;
// 一行ずつ読み取る
for (int i = 0; i < drc1.Count; i++)
{
DATASet.TABLE1Row drc2 = (DATASet.TABLE1Row)drc1[i];
Console.WriteLine(drc2.collumnname.ToString());
}
tABLEAdapter1.Fill(DataSet1.Table1);
// レコードセット(?)を取る
DataRowCollection drc1 = (DataRowCollection)dATASet.TABLE1.Rows;
// 一行ずつ読み取る
for (int i = 0; i < drc1.Count; i++)
{
DATASet.TABLE1Row drc2 = (DATASet.TABLE1Row)drc1[i];
Console.WriteLine(drc2.collumnname.ToString());
}
登録:
投稿 (Atom)