2011年6月28日火曜日

Evalで、文字編集

通常は
<%# Eval("Price") %> で、項目名を設定すれば良いが
数字の場合、編集して表示させたい時がある。

<%# DataBinder.Eval(Container.DataItem, "Price", "{0:c}") %>

Excel Biff

Excel Biff形式で出力

http://www.codeproject.com/KB/office/biffcsharp.aspx

2011年6月23日木曜日

microsoft reportviewer

microsoft reportviewer
開発PCには、インストールされているが、実行サーバにはインストールされていなかった。

ココから、downkload出来る。
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6442

2011年6月22日水曜日

Linux Terminal Server

Linux Terminal Server
とういものがあるそうな、今度評価してみたい。

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を使用する。

LINQで日付比較

where rc.Status == "Py"
&& (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("");
}
}

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++;
}

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の良い所、受け渡しパラメータを自動生成してくれるから、パラメータの設定コードを
記述する必要が無い。

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();
}

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(); //件数の取得

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を実行する必要がある

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で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();
}

2011年6月6日月曜日

IIS7.5 Windows認証

IIS7.5 Windows認証は、標準では設定されないので、注意が必要。
IIS6までは、認証の部分に、Windows認証があったが
IIS7.5は、インストール時に設定しないといけなくなった。

2011年6月2日木曜日

SQL Audit

MS-SQLで監査用の履歴を作成する

http://sourceforge.net/projects/sqlaudit/

MS-SQL 接続ユーザーの取得

MS-SQLで接続ユーザーの取得する場合

SELECT SYSTEM_USER

確認Ver SQL2005

パケットモニター

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

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)

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