2009年5月22日金曜日

リモートデスクトップでデュアルディスプレイ

XPproのリモートデスクトップで前からほしかった機能・・・
リモートデスクトップのバージョン6.0以上により可能だということだ。
SP3をインストールすると自動的に6.0に変更されるのでSP3はインストール必須。


尚、方法はrdpからショートカットを作成しそのプロパティからアドレスを
表示してアドレスを変更すして "/span" のオプションを追加すると出来る。
(例)
C:\WINDOWS\system32\mstsc.exe /span C:\Remote\Default.rdp

Default.rdpとして個別に作成したリモート接続用アイコンのみがWide画面で表示される。

横並びにしか対応していないので、それ以外の使い方をしたい場合には不可。

また、エクスペリエンスで余計な画面描写は避けた方がいいです。
本日の夜、早速試してみたい

2009年3月3日火曜日

クエリ内の1フールドで指定した数で文字列を分離する ACCESS for VBA

通常のACCESS VBAでの関数は解らないが、ある文字列を指定した数で2つに分離するとなるとなかなか大変である。

そこで独自に関数を作成してクエリ内で使用することにより簡単に分離が可能な関数をメモします。

この関数の場合は全角半角の文字が混入しても指定した半角数を対象にします。
(例)東京ディズニーランド(15文字)10で分けたい場合 東京ディズニ  -ランドのように出来ます。

まず、ACCESSのモジュール内に Functionのモジュールを作成

Function MyLenLeft(ByVal a, ByVal b)
 Dim c, LenName
 c = 0
 Dim i, nul
 nul = 0
 For i = 0 To Len(a) - 1
  Dim k
  k = Mid(a, i + 1, 1)
  If (Asc(k) And &HFF00) = 0 Then  
    c = c + 1
  Else
   c = c + 2
  End If
  If c <= b * 1 Then
   LenName = LenName & k
  End If
  Next
  MyLenLeft = LenName
End Function

Function MyLenMidOver (ByVal a, ByVal b)
 Dim c, LenName
 c = 0
 Dim i, nul
 nul = 0
 For i = 0 To Len(a) - 1
  Dim k
  k = Mid(a, i + 1, 1)
  If (Asc(k) And &HFF00) = 0 Then  
    c = c + 1
  Else
   c = c + 2
  End If
  If c <= b * 1 Then
   LenName = LenName & k
  End If
  Next
  MyLenMidOver = LenName
End Function


この2つをコピペで作成して
クエリ内に LeftやRight等の関数と同じように使用する。

(例)住所の列がものすごく長い場合に30文字で分けたい場合
住所A:MyLenLeft(住所、30)、住所B:MyLenMidOver(住所、30)
これで綺麗に分割できます。

なにかと便利な関数ですので他の用途にも応用が利くと思います。

2009年2月16日月曜日

パッケージ データへの分散クエリの実行

データ変換サービス (DTS) パッケージをリンク サーバーとして登録し、パッケージに対して分散クエリを実行できます。この機能によって、各種のソース (たとえば、Oracle と DB2 データ ソース) からのデータを単一のパッケージに統合し、そのデータを変換し、変換された分散クエリの結果を外部のデータ コンシューマに公開することができます。
パッケージ データに対して分散クエリを実行するには、sp_addlinkedserver ストアド プロシージャを使用して、パッケージをリンク サーバーとして定義する必要があります。次のコード例では、DTS パッケージに対して sp_addlinkedserver を使用する方法を示しています。sp_addlinkedserver 'DTSOLEDBPkg', 'PackageName', 'DTSPackageDSO', '/FC:\Dts\Dts01.dts')
sp_addlinkedserver コマンドで、各引数は以下のようになります。
DTSOLEDBPkg は、作成するリンク サーバーの名前です。
PackageName は、OLE DB データ ソースの製品名です。ここでは、任意の名前または NULL 文字列を指定できます。
DTSPackageDSO は、DTS パッケージの OLE DB プロバイダ名です。
最後の引数は、ファイル DTS01.dts の場所を指定します。
パッケージをリンク サーバーとして定義したら、このパッケージをデータ変換元として含む分散クエリを実行できます。以下に分散クエリの例を示します。Northwind データベースの Orders テーブルに対し、Oracle サーバーの Customer テーブルからデータを取得するパッケージとの結合操作を行います。このクエリでは、Orders テーブルと Customers テーブルに共通キー CustomerID があることを想定しています。SELECT a.OrderID, a.CustomerID, a.OrderDate, b.Companyname, b.Region
FROM Orders AS a, dtsLink...packageNameOracle AS b
WHERE a.CustomerID = b.CustomerID
このクエリの packageNameOracle は DTS パッケージ名です。ただし、パッケージの複数ステップをデータ ソースとして使用する場合は、パッケージ ステップ名を指定できます。

パッケージ データへの分散クエリの実行

データ変換サービス (DTS) パッケージをリンク サーバーとして登録し、パッケージに対して分散クエリを実行できます。この機能によって、各種のソース (たとえば、Oracle と DB2 データ ソース) からのデータを単一のパッケージに統合し、そのデータを変換し、変換された分散クエリの結果を外部のデータ コンシューマに公開することができます。
パッケージ データに対して分散クエリを実行するには、sp_addlinkedserver ストアド プロシージャを使用して、パッケージをリンク サーバーとして定義する必要があります。次のコード例では、DTS パッケージに対して sp_addlinkedserver を使用する方法を示しています。sp_addlinkedserver 'DTSOLEDBPkg', 'PackageName', 'DTSPackageDSO', '/FC:\Dts\Dts01.dts')
sp_addlinkedserver コマンドで、各引数は以下のようになります。
DTSOLEDBPkg は、作成するリンク サーバーの名前です。
PackageName は、OLE DB データ ソースの製品名です。ここでは、任意の名前または NULL 文字列を指定できます。
DTSPackageDSO は、DTS パッケージの OLE DB プロバイダ名です。
最後の引数は、ファイル DTS01.dts の場所を指定します。
パッケージをリンク サーバーとして定義したら、このパッケージをデータ変換元として含む分散クエリを実行できます。以下に分散クエリの例を示します。Northwind データベースの Orders テーブルに対し、Oracle サーバーの Customer テーブルからデータを取得するパッケージとの結合操作を行います。このクエリでは、Orders テーブルと Customers テーブルに共通キー CustomerID があることを想定しています。SELECT a.OrderID, a.CustomerID, a.OrderDate, b.Companyname, b.Region
FROM Orders AS a, dtsLink...packageNameOracle AS b
WHERE a.CustomerID = b.CustomerID
このクエリの packageNameOracle は DTS パッケージ名です。ただし、パッケージの複数ステップをデータ ソースとして使用する場合は、パッケージ ステップ名を指定できます。

SQL Server の複数インスタンス上の分散クエリ

Accessの様に別々のODBCからのリンクテーブルをクエリでJOINする場合に有効である。



SQL Server の複数のインスタンスを実行するサーバーで Microsoft® SQL Server™ 2000 のインスタンスを指定する際には、分散クエリで使用される Transact-SQL 要素に構文上の変更を加える必要はありません。インスタンスを分散クエリに指定するには、以下のモードのどちらかを使用します。
sp_addlinkedserver の @datasrc パラメータに 'server_name/instance_name' という構文を使用してサーバー名を指定します。
接続文字列に Server=server_name; INSTANCENAME=instance_name を指定します。
インスタンスを指定しない場合、分散クエリは指定されたサーバー上の SQL Server 2000 の既定のインスタンスに接続されます。
以下に、サーバー名 London 上に Payroll という名前の特定インスタンスを指定する例を示します。-- Define a linked server on an instance of SQL Server using @datasrc.
sp_addlinkedserver
@server = 'LondonPayroll1',
@provider = 'SQLOLEDB',
@datasource = 'London/Payroll'
-- Define a linked server on an instance of SQL Server using
-- INSTANCENAME in a provider string.
sp_addlinkedserver
@server = 'LondonPayroll2',
@provider = 'SQLOLEDB',
@provstr = 'Server=London;INSTANCENAME=Payroll'
-- Specify an instance of SQL Server in OPENDATASOURCE
-- using Data Source.
SELECT *
FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=London/Payroll;User ID=MyUID;Password=MyPass'
).Northwind.dbo.Categories
-- Specify an instance of SQL Server in OPENROWSET
-- using a provider string.
SELECT a.*
FROM OPENROWSET(
'SQLOLEDB',
'Data Source=London;INSTANCENAME=Payroll;
User ID=MyUID;Password=MyPass',
Northwind.dbo.Categories
) AS a
-- Specify an instance of SQL Server in OPENROWSET
-- using a the datasource parameter.
SELECT a.*
FROM OPENROWSET(
'SQLOLEDB','London/Payroll','MyUID','MyPass',
'SELECT * FROM Northwind.dbo.Categories'
) AS a

2009年2月2日月曜日

windows2000 でタスクの強制終了

再起動を行えない場合に該当のタスクのみ終了したい場合に、終了出来ないきことがままある。

その場合はXP移行で使用可能なtaskkillコマンドが有効であるがWindows2000ではそのままでは使用出来ない。

そこで追加のセットアップをする必要がある。


Windows 2000 CD-ROM をセットします。
「Microsoft Windows 2000 CD」画面が起動するので、[この CD を参照(B)] をクリックします。
Support\Tools フォルダにある Setup.exe をダブルクリックします。

そうするとインストールが開始されるのでそのまま終了。

その後は以下のコマンドで有効である。

コマンドプロンプトで kill 696

※696はタスク番号です。

これでほぼ終了することが可能である。

2009年1月26日月曜日

EPSON PM-A890 CDレーベル印刷トラブル

この機種のCDレーベル印刷の不具合はかなり定番の現象のようであり、とうとう自分のプリンターも起こってしまった。

現象をさぐるとかなり有名な話らしい。おまけに購入から3年後に現象が発生してサービスも受けられない時期に、とうとう引き込み時に「ガー」と言い出し印刷不能の状態に陥ってしまった。もうダメかと諦めていたのだが、ふとダメもとで試したことがある。

CDトレイの裏には縦の筋が現れていたのだがその部分にセロハンテープを貼ってみた。

すると、スルスルっとCDトレイが引き込まれ印刷することが出来るようになったではないか!!

プリンタから発せられるけたたましい音から、プリンタの故障と思ったのだがプリンタにはまったく異常がないことが判明。

一安心したが、耐久性などの部分ではこれから様子を見るしかないと思われる。

EPSONではもしかして判っていたのでは?・・・と思うが、CDトレイの裏にセロハンテープか何かを貼って使用して下さいとは絶対に推奨しないだろう。

もし、同じ苦しみを味わっている方がいればひとつ試してみるのもいいかもしれない