Page 39 of 42  « First  ... « 37  38  39  40  41 » ...  Last » 
drmg on 9 月 15th, 2004
window.onerror= OnErrorTrace;
function OnErrorTrace(msg,url,line){
try{
var rtn ="";
rtn+="[URL]\t"  + url + "\n";
rtn+="[LINE]\t" + line+ "\n";
rtn+="[MSG]\t"  + msg + "\n";
rtn+="[TRACE]";
var fnc=onerror.caller;
while(fnc!=null){
rtn+="\t"+String(fnc).substr(0,String(fnc).indexOf("{",0))+"\n";
fnc=fnc.caller;
};
alert(rtn);
}catch(e){
alert(rtn+"\n"+e.message);
};
};
drmg on 9 月 14th, 2004

///<summary>
/// リレーションシップに基いて、複数階層データバインドを行う関数。
/// Aspで2階層目以降のDataSourceを↓の様に設定する。
/// DataSource='<%# GetChildRelation(Container.DataItem,"リレーションシップ名") %>'
///</summary>
///<param name="dataItem">親要素</param>
///<param name="relation">リレーションシップ名</param>
///<returns>子要素データビュー</returns>
protected DataView GetChildRelation(object dataItem, string relation)
{
DataRowView drv = dataItem as DataRowView;
if (drv != null)
{
return drv.CreateChildView(relation);
}
else
{
return null;
}
}

↓ASP.NET の階層的なデータ バインディング
http://www.microsoft.com/japan/msdn/net/aspnet/ASPN-HierDataBinding.asp

<html>
<head>
<title>
JavaScriptに定義されたページを、順番に表示するためだけのHTA
(WebApplicationのキャッシュ読み込み用に作成。。)
</title>
<script language="JavaScript">
///// 初期化 /////
var numTime=1000;    //ループ間隔
///// 表示するページ /////
var aryURL;
aryURL=new Array();
aryURL[aryURL.length]="http://localhost/page1.html";
aryURL[aryURL.length]="http://localhost/page2.html";
aryURL[aryURL.length]="http://localhost/page3.html";
///// 読み込みループ /////
function OpenLoop(numSetIx){
try {
if(numSetIx==null){
LOG.value="[処理開始]";
OpenLoop(0);
return;
}
if(aryURL.length <= numSetIx){
LOG.value="[処理終了]"+"\n"+LOG.value;
return;
}
if(PAGE.window.document.readyState!="complete"){
setTimeout("OpenLoop("+numSetIx+")",numTime);
return;
}
if(PAGE.document.CHECK){
setTimeout("OpenLoop("+numSetIx+")",numTime);
return;
};
LOG.value="[読み込み中.."+(numSetIx+1)+"/"+aryURL.length+"]"
+aryURL[numSetIx]+"\n"+LOG.value;
PAGE.document.CHECK=true;
PAGE.location=aryURL[numSetIx];
setTimeout("OpenLoop("+(numSetIx+1)+")",numTime);
return;
}catch(Err){
//エラー
LOG.value="[エラー!!]"+Err.message+"\n"+LOG.value;
setTimeout("OpenLoop("+(numSetIx+1)+")",numTime);
};
};
</script>
</head>
<body onload="JavaScript:OpenLoop();">
<textarea ID="LOG"   style="width:100%;height:20%;overflow:scroll;"></textarea>
<iframe   ID="PAGE"  style="width:100%;height:80%;overflow:scroll;"></iframe>
</body>
</html>

drmg on 9 月 14th, 2004

1.NullとEmptyの違い

  ORACLE : EmptyとNullを曖昧に判断する。

  SQLSERVER : EmptyとNullを明確に判断する。

2.Nullのソート順

  ORACLE : 昇順で、Null値は最後に配置される。

  SQLSERVER : 昇順で、Null値は先頭に配置される。

3.Null置き換え関数

  ORACLE : Nvl(Field,Value)

  SQLSERVER : IsNull(Field,Value)

4.Trim

  ORACLE : Trim存在する。

  SQLSERVER : RTrim/LTrimならある。

5.左文字詰め(’0′埋めだと)

  ORACLE : LPAD([文字列],38,’0′)

  SQLSERVER : REPLICATE(’0′,38-DATALENGTH([文字列]))+[文字列]

6.ロック(占有ロックとの事。。)

  Oracle : FOR UPDATE

  SQLSERVER : (UPDLOCK)

7.文字型→日付型変換

  ORACLE : TO_DATE(’2000/01/01 10:20:30′,’yyyy/mm/dd hh24:mi:ss’)

  SQLSERVER : CONVERT ( datetime,’2000/01/01 10:20:30′,120)

8.日付型→文字型変換

  ORACLE : TO_CHAR(更新日時,’YYYYMMDD’)

  SQLSERVER : CONVERT(varchar,更新日時,112)

9.システム日付

  ORACLE : SYSDATE(current_timestampも使えたが、グリニッジっぽい値になってしもうた。なぜ?)

  SQLSERVER : current_timestamp

10.文字列切り出し

  ORACLE : SELECT SUBSTR([文字列],2,2) FROM DUAL

  SQLSERVER : SELECT SUBSTRING([文字列],2,2)

11.数値→文字列変換

  ORACLE : TO_CHAR([文字列])

  SQLSERVER : 数値から文字型であれば、暗黙の変換で大丈夫。

        (明示的に書くならば、CAST or CONVERT使用)

12.文字列連結  

  ORACLE : ||

  SQLSERVER : +

13.JOIN時のテーブル別名

  ORACLE : 無くても動いた。。。

  SQLSERVER : テーブル別名必須っぽい?(UNIONにも必要とは。。)

14.EMPTY→数値型の更新について。

  ORACLE : EMTPY→数値型へ更新が可能。Nullの扱いとなる。

  SQLSERVER : EMPTY→数値型へ更新が不可。数値変換エラーとなる。

15.余分な0が付加される。(ドライバのせい?)

  ORACLE : NUMBER(15,5)型から数値1を、SELECTすると結果は、”1″

  SQLSERVER : NUMERIC(15,5)型から数値1を、SELECTすると結果は、”1.00000″

16.それぞれの予約語に注意。。

drmg on 9 月 14th, 2004

DataBaseでの文字列型、EmptyとNullの扱いについて。

・Oracleは、EmptyとNullを曖昧に判断する。

・SQLServerは、EmptyとNullを明確に判断する。

これを、意識しないとハマる事がある。。

つまり、

 Oracleでは↓の様に書けば曖昧に判断してくれるが、

  SELECT * FROM table WHERE field=”

 SQLServerだと、↓の様に書かないと違う結果になる事がある。

  SELECT * FROM table WHERE field=” OR field is null

どっちが良いとも思わないが、昔ハマった。。

最近だと、だったらSQLServer側で、

fieldの初期値をEmptyにすれば

どちらも↓の書き方で良いではないかと思ったのだが。。

  SELECT * FROM table WHERE field=”

外部キーによる参照整合性制約を使っているため、

null値を設定出来ないと困る事が発覚。。

↓の書き方しかないのかなぁと、思うこの頃。

  SELECT * FROM table WHERE field=” OR field is null