IDENTITYフィールドへの値の追加

通常IDENTITYのフィールドに値を追加することは出来ないが、IDENTITY_INSERTONにすることで追加できる。

SET IDENTITY_INSERT [テーブル名] ON
INSERT INTO [テーブル名] (フィールド1,フィールド2,…) VALUES (1,"TEST",・・・)
SET IDENTITY_INSERT [テーブル名] OFF

ただし、VALUESでは無くSELECT句で指定する場合でも、フィールド名を明示的に指定する必要がある。
まったく同じ内容のテーブルを全て追加する場合でも指定しないとダメらしい。

SET IDENTITY_INSERT [テーブル名] ON
INSERT INTO [テーブル名] (フィールド1,フィールド2,…) SELECT * FROM T_TEST
SET IDENTITY_INSERT [テーブル名] OFF

重複を削除するSQL

delete from TABEL1
where exists(

select *
from TABEL1 as t1
where TABEL1.[KEY]=t1.[KEY]
group by t1.[KEY]
having COUNT(*)>1 and TABEL1.[no]<>min(t1.[no])

)

                                                      • -

delete from TABLE1 の TABLE1 に名前をつけることは出来ないみたい。
(select の場合はつけても大丈夫みたい)

サブクエリーの方は名前をつけなければダメ。

SQLServerの接続数をリアルタイムに確認する方法

Windowsのパフォーマンスモニターを使います。

[スタート]-[管理ツール]-[パフォーマンス] で実行

開いたら右上のプラスボタンを押してSQLServerの接続数を追加する。

パフォーマンスモニタに[SQLServer:General Statistics]
カウンタの一覧から[User Connections]
を追加する


ASP.NET実行時に増えてしまったものを減らすにはIISで実行しているアプリケーションプールを右クリックしリサイクルを実行する。
(プロパティーで定時や間隔でリサイクルする設定もある。)

CheckBoxがあるときのフォーカス復帰

CheckBox には今まで使っていたプログラムではポストバックから帰ってきたときのフォーカスの復帰が出来なかった。

原因はCheckBoxにonFocusを入れようとすると<span>でくくられてそこに入っていたから。
例)


<span onfocus="〜〜〜"><input id="CheckBox1" type="checkbox" name="CheckBox1" /></span>


そこでCheckBoxには他のコントロールとは別にonFocusをセットする為に文中の2行を加える

  ↓これ
Const SCRIPT_ONFOCUS_BY_CHECKBOX As String = "var elements = document.getElementsByTagName('input');" & _
"function onfocusHandler(){document.getElementById('__LASTFOCUS').value=document.activeElement.id;document.getElementById('txtLastFocus').value=document.getElementById('__LASTFOCUS').value;}" & _
"for (var i = 0; i < elements.length; i++) {if (elements[i].type == 'checkbox') {elements[i].attachEvent('onfocus', onfocusHandler);}}"


Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack() Then
HookOnFocus(CType(Me.Page, Control))
End If
    ↓これ
ScriptManager.RegisterStartupScript(Me.Page, Me.GetType(), "ScriptOnFocusByCheckBox", SCRIPT_ONFOCUS_BY_CHECKBOX, True)
ScriptManager.RegisterStartupScript(Me.Page, Me.GetType(), "ScriptDoFocus", SCRIPT_DOFOCUS.Replace("REQUEST_LASTFOCUS", Request("__LASTFOCUS")), True)
End Sub


document.getElementById('__LASTFOCUS').value=document.activeElement.id;
CheckBoxの場合thi.idでは名前が取得出来ないようなのでアクティブはコントロールのidを取得する為にdocument.activeElement.idに変更