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
2011年9月30日金曜日
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" />
コレを追加すると解消される
登録:
投稿 (Atom)