Excelで、別シートから1つの項目をキーにして、他の項目を参照したりするのに、VLOOKUP関数は便利だよね。
VLOOKUP(検索値,範囲,列番号,検索の型)
=IF($B2="","",VLOOKUP($B2,'項目一覧'!$A$1:$E$100,2,FALSE))
=IF($B2="","",VLOOKUP($B2,'項目一覧'!$A$1:$E$100,3,FALSE))
=IF($B2="","",VLOOKUP($B2,'項目一覧'!$A$1:$E$100,4,FALSE))
私家版VB用QuickSort関数です。
私家版といってももともとはWeb上のソースで、それに手を加え、手を加えしながら暖めているものです。
もう出展も忘れてしまいましたが、このロジックそのものは有名なので、まあいいでしょう。
SQLServerやMSDEの場合は、SHOWPLAN_ALLまたはSHOWPLAN_TEXTオプションを設定すると、以降発行するSQLはすべて実際には実行されず、実行計画を表示する、という感じになります。
C:\>osql -U username -P password -S servername 1> SET SHOWPLAN_TEXT ON 2> GO 1>通常の実行モードに戻すのは、ONをOFFに変えて、同じ操作を行います。
Oracleの場合はPLAN_TABLEをあらかじめ作っておく必要があります。
C:\>cd %ORACLE_HOME%\rdbmsxx\admin C:\...\admin>sqlplus sys/oracle@mylisner SQL*Plus: Release 9.2.0.1.0 - Production on 金 Sep 26 11:14:17 2003 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. SQL>@utlxplan.sql . . SQL>GRANT SELECT ON SYS.PLAN_TABLE TO PUBLIC; SQL>GRANT INSERT ON SYS.PLAN_TABLE TO PUBLIC; SQL>GRANT UPDATE ON SYS.PLAN_TABLE TO PUBLIC; SQL>GRANT DELETE ON SYS.PLAN_TABLE TO PUBLIC; SQL>CREATE PUBLIC SYNONYM PLAN_TABLE FOR SYS.PLAN_TABLE; SQL>実際に実行計画を取得するのは以下のようにします。
/* 実行計画をPLAN_TABLEに取得します */ TRUNCATE PLAN_TABLE; EXPLAIN PLAN SET STATEMENT_ID='PLANTEST' FOR -- コマンドの構文(文頭部) SELECT e.empno, e.ename, d.dname FROM scott.emp e, scott.dept d WHERE e.deptno=d.deptno; -- ターゲットSQL文 /* テーブルの中身を整形して表示します。 */ SELECT DECODE(id,0,'', LPAD(' ',3*(level-1))||level||'.'||position)||' '||operation||' '||options||' '||object_name||' '|| object_type||' '||DECODE(id,0,'Cost = '||position) QUERY FROM plan_table CONNECT BY PRIOR id = parent_id AND statement_id = 'PLANTEST' START WITH id = 0 AND statement_id = 'PLANTEST';
よくあるTipsですが、EDコマンドで起動するエディタを変更するには
SQL>SET define_editor = '任意のエディタ'とします。
define_editor = '任意のエディタ'
今頃何言ってんだいというかんじだが、よく考えたらINDEXに関して正しい知識がなかった。
そんなもん知ってる気でいたんだけど、先週、あれ、そうだったの?ってことを指摘されて気付いた。
てなわけで、今日はインデックスのお勉強。
まずはテーブルを定義
CREATE TABLE m_struct( struct_id CHAR(4), struct_name VARCHAR2(64), module_name VARCHAR2(24), add_date CHAR(8) DEFAULT TO_CHAR(SYSDATE, 'YYYYMMDD'), add_time CHAR(6) DEFAULT TO_CHAR(SYSDATE, 'HHMISS'), CONSTRAINT pk_m_struct PRIMARY KEY(struct_id) ) CREATE TABLE m_struct_member( struct_id CHAR(4), member_id CHAR(4), member_name VARCHAR2(64), member_type VARCHAR2(64), add_date CHAR(8) DEFAULT TO_CHAR(SYSDATE, 'YYYYMMDD'), add_time CHAR(6) DEFAULT TO_CHAR(SYSDATE, 'HHMISS'), CONSTRAINT pk_m_struct_member PRIMARY KEY(struct_id, member_id) )
うーん、なにか、構造体の情報を格納するテーブルらしいですね。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/tsqlref/ts_tsqlcon_6lyk.asp
http://homepage2.nifty.com/sak/
http://www.oracle.co.jp/interactive/Techniques/VLDB/
http://www.roboken.esys.tsukuba.ac.jp/~satofumi/damebu/project/dProject/sqlText_06.html
http://www.arsys.co.jp/Oracle/p-1.html
http://www.hi-ho.ne.jp/tsumiki/
http://tsubosak.hp.infoseek.co.jp
http://rina.jpn.ph/~rance/om/
http://www.amy.hi-ho.ne.jp/yoshiko/oracle/tech/
↓indexチューニング
http://www.ad.cyberhome.ne.jp/~milmil/oracle/index-tuning1.html
http://www.int21.co.jp/pcdn/oracle/
http://ash.jp
↓関数インデックスなど
http://cgi.html.ne.jp/~nika/orcl_mst/
http://hiracle.hp.infoseek.co.jp/tech/techmain.htm
EUCの文字コード変換を行う場合、NKF For Win32、またはNKF32.DLLを使用するのが一般的でしょう。
これはこれで、VBから使用するサンプルも多く、特に難しいと言うこともないのですが、ADOを使用可能なら、もっと簡単にできちゃいます。
サンプルはASPなのでVBScriptですがVBからもほぼ同じ。Server.CreateObjectをCreateObject関数に置き換えるか、参照設定して
Set oEucStream = New ADODB.Stream
とすれば動かすことができます。
今日、出た話。
OracleのテーブルをODBCでAccessよりリンクテーブルとして参照すると・・・
VARCHAR2の列はCHAR(固定長文字列)型として認識されてしまう、とか。
現象としては、hogehoge VARCHAR2(10)と定義された列に、
と定義された列に、'Oracle'という文字列を格納したとして、
Accessより参照すると
0----+----1----+----2
'Oracle '
--ログインの追加 sp_addlogin [ @loginame = ] 'login' [ , [ @passwd = ] 'password' ] [ , [ @defdb = ] 'database' ] [ , [ @deflanguage = ] 'language' ] [ , [ @sid = ] sid ] [ , [ @encryptopt = ] 'encryption_option' ]
--ログインをDBにアクセス可能にする sp_grantdbaccess [@loginame =] 'login' [,[@name_in_db =] 'name_in_db' [OUTPUT]]
--ログインをロールのメンバに追加する sp_addrolemember [ @rolename = ] 'role' , [ @membername = ] 'security_account'
MSDN Japan Home
>
MSDN Library Japan
>
ダイナミック HTML
>
データバインド
http://msdn.microsoft.com/library/default.asp?url=/workshop/database/tdc/tabular_data_control_node_entry.asp
Windows 2000/Xpで、NumLockがONの状態で起動する方法。
毎回調べるけど、ぜんぜん覚えられないので。
キー:HKEY_USERS\.DEFAULT\Control Panel\Keyboard
文字列値:InitialKeyboardIndicators
0ならOFF
2ならON
レジストリを編集することで、変更可能です。
以下を拡張子regで保存して、レジストリに追加するか、
該当キーをレジストリエディタで変更し、MSDEを再起動します。
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer] "LoginMode"=dword:00000002
LoginModeの値は、
| 認証 | 値 |
|---|---|
| 統合Windows認証 | 1 |
| SQL Server認証 | 2 |