ぶろぐらまぁの日記

仕事でのTIPSをメモっておきます。
個人的なメモなので、参考にするのは
構いませんが、責任は持ちませんよ。w

リモートデスクトップで「Windowsのセキュリティ」ダイアログを表示する

2011年01月17日 16時00分54秒 | Windows
リモートテスクトップ接続中にCtrl+Alt+Deleteを押して「Windowsのセキュリティ」ダイアログを表示したいときがあります。
でも、普通にこれをやろうとすると、リモート接続している元の「Windowsのセキュリティ」が表示されます。

そこで、Ctrl+Alt+End を押すとリモートデスクトップの「Windowsのセキュリティ」が表示されます。

<td>タグに指定したclassを動的に変更する

2010年06月10日 15時44分23秒 | .net
aspxファイルの<td>タグに指定したclass属性を条件によって動的に変更する。

ラベルやテキストなどのコントロールに対して設定したcssclassの動的変更や、JavaScriptを使ってcssファイルを切り替えるというのはけっこうネットでも公開されていますけど、td,tr,divなどのタグに対して、サーバ処理(aspx.csファイル)での変更は意外と情報がなくて苦労したのでここにメモっておきます。
ポイントは runat="server" を記載してサーバーコントロールとして扱うところでしょうか。
以下のソースを応用すれば、trやdivタグにも適用できそうです。



(aspxファイル)
<td id="tdtest1" class="csstest1" runat="server">
<asp:label id="lbtest1" runat="server">99,999</asp:label>
</td>

※デフォルトではcsstest1を指定


(aspx.csファイル)
// 定義部分
protected System.Web.UI.HtmlControls.HtmlTableCell tdtest1;

// 描画部分
if (条件)
{
  ((HtmlTableCell)FindControl("tdtest1")).Attributes["class"] = "csstest2";
}
else
{
  ((HtmlTableCell)FindControl("tdtest1")).Attributes["class"] = "csstest1";
}

※ある条件のときにclassをcsstest2に切り替える


(cssファイル)
csstest1
{
  background-color:#FFFFFF;
  text-align:right;
}

csstest2
{
  background-color:#FFFF9C;
  text-align:center;
}



バッチでSQLの結果をファイルに出力してそれを変数に取り込む

2008年10月10日 16時34分10秒 | SQL
(SQLServer)
例えば、コントロール日付をデータベースのあるテーブルに持ち、それをバッチでSQLを発行して取得し、その値を変数に入れてファイル名に使ったりするときなど。

SQLの結果のファイルへの出力はisqlコマンドやosqlコマンドを使っても似たようなことができるが、カラム名やカラムと結果の区切り線(----------)まで取得してしまうので、ここではbcpを使って結果だけを取得する。

バッチファイル(xxx.bat)に以下のような感じで記述する。

<ここから>

REM コントロール日付をSQLを発行して取得し、結果をファイルに出力する
bcp "SELECT * FROM XXX WHERE XXX = 'XX'" queryout 出力ファイル名(フルパスで指定)-S サーバ名 -U ユーザ名 -P パスワード -c

REM コントロール日付をファイルから変数に取り込む
FOR /f %%i IN 上で出力したファイル名(フルパス指定) DO SET HIDUKE=%%i
ECHO %HIDUKE%

<ここまで>

※SQLの結果(ここではコントロール日付が入っていると仮定)は1件しかないという前提です。

これで%HIDUKE%にコントロール日付が入ったので、これを使っていろいろできます。



JOINで一気にUPDATEする

2008年03月17日 21時44分42秒 | SQL
FETCHでぐるぐる回して一件ずつ更新するのではなく、JOINして条件に該当するレコードを一気にUPDATEする。

例)テーブル1のxxxコードをテーブル2(変換マスタ)を使って、旧コードから新コードに変換したいとき、以下のように書いてやるとど~んと変換できる。

UPDATE (テーブル1)
SET xxxコード = CONV.NEW_CODE
FROM (テーブル1) AS A
INNER JOIN (テーブル2) AS CONV
ON A.xxxコード = CONV.OLD_CODE
WHERE (条件)
※(テーブル1)は同じテーブル名

JOINの条件式にCase文を入れる

2007年12月19日 11時44分10秒 | SQL
例)テーブルBの品番が「999」のときは「333」に置き換えて結合、それ以外はそのまま結合

select * from テーブルA as a
left join テーブルB as b
on a.品番 = (case when b.品番 = '999' then '333' else b.品番 end)
where a.xxx = xxx

SELECT * INTO でテーブル定義をコピーするときにフィールドを追加する

2007年11月14日 11時40分12秒 | SQL
select * into を使うと、既存のテーブル定義を丸ごとコピーしてテーブルをクリエイトできるが、以下のようにすると、さらにフィールドを追加することができる。

DECLARE @AAA AS VARCHAR(64)
DECLARE @BBB AS INGEGER
select *,@AAA AS AAA,@BBB AS BBB into <新テーブル名> from <テーブル名>


ドライブレターの変更

2007年07月04日 11時13分22秒 | Windows
ごくまれにやるんだけど、あれ?どうやんだったっけな~っていうような技のひとつ。

USBメモリなどのリムーバブルメディアを刺したときに、ドライブレターが自動的に割り当たるが、このドライブレターを変更したいときは以下のようにする。

1.[スタートメニュー]-[コントロールパネル]-[管理ツール]-[コンピュータの管理]にある[記憶域]の階層にある[ディスクの管理]をクリック

2.目的のドライブを右クリックして、[ドライブ文字とパスの変更]を選択

3.[変更]ボタンを押す

4.ドロップダウンリストから変更したいドライブレターを選択してから[OK]ボタンを押す

ブログペットを設置

2007年06月20日 13時16分50秒 | ひとりごと
gooブログでもブログペットを設置できるようになったようなので、設置しました。
でも、サイドバーへ貼り付けるのはgooブログアドバンス(有料)のみらしいです。
セコイ。やっと設置できるようにしたと思ったらこれかよ。



一時テーブルの作成とドロップ

2007年06月13日 11時02分45秒 | SQL
(SQL Server)

ストアドやSQLを何度も繰り返して実行するときに、ワークテーブルを消し忘れると、そのテーブルが既に存在するというエラーになる。
毎回、手でDROPするのもめんどうなので、一時テーブルを作り直すには以下のように記述すればいい。
SQLの先頭と一番最後に書いておけばより確実だ。

-- 一時テーブルのドロップ
IF object_id('tempdb..#XXXXXX', 'U') IS NOT NULL
DROP TABLE #XXXXXX

※ここで#XXXXXXはテーブル名をあらわす

ちなみに一時テーブルは、テーブル名の頭に「#」をつけてあげると、SQLServerをインストールすると標準で作られるtempdbインスタンスに勝手に作ってくれる。

-- 一時テーブルの定義
CREATE TABLE #XXXXXX (
[aaa] NVARCHAR(10),
[bbb] NVARCHAR(10),
[ccc] NVARCHAR(10),
:
:
)

これに対し、変数テーブルは「@」をテーブル名につけて、以下のように作るが、変数なのでDROPする必要がない。

-- 変数テーブルの作成
DECLARE @XXXXXX TABLE (
[aaa] NVARCHAR(10),
[bbb] NVARCHAR(10),
[ccc] NVARCHAR(10),
:
:
)


変数になにかを指定しているときだけその条件で絞るSQL

2007年05月11日 10時26分32秒 | SQL
プログラムの開発で、画面から条件を入力したときはその条件で、入力していないときは全件引っ張るときなどに便利。
他に調査などで、データを引っこ抜くときに、条件を指定したときはその条件で、指定しないときは全件引っ張るなどにも使える。
特に後者は、SQLの知識がない人に使わせるときに、変数のセット部分をコメントにすると、全件引っ張れるので、指示しやすい。

DECLARE @CODE nvarchar(5)

--ここをコメントにして変数の中身をNULLにすると全件ヒットする
SET @CODE = '001'

SELECT * FROM XXX
WHERE ((@CODE IS NULL AND 1=1) OR (@CODE IS NOT NULL AND XXX.CODE = @CODE))