2009年12月10日木曜日

MSAccess使いからVB.NETへの道 ListViewの使い方

ListViewに慣れてくるとListBoxよりも常用してしまう。
そんな中でListViewの情報を取り出すメソッド一覧

Dim i As Integer = Me.ListView.SelectedItems(0).Index
選択されたアイテムの行数を取得。そこでそのアイテムを取り出す(選択が1つの場合)
下記は選択されていない場合の処理
If Me.ListView.Items(i).Text = ""  Then
 MessageBox.Show("アイテム選択がされていません。処理を中止します。")
 Exit Sub
End If

選択された全行数
Me.ListView.SelectedItems.Count

ListViewに表示された行数(全行数)
Me.HINListView.Items.Count

ListViewの行が選択されているか判断
Me.HINListView.Items(i).Selected = True '選択されている

ListViewの選択に関わらず一覧から任意に取得
Me.ListView.Items(i).Text


サブアイテムを取り出す
Me.ListView.Items(1).SubItems(1).Text
インデックスは0から開始

何千行もあるものをLoop処理しようとしなかれば
これらを組み合わせると大体のことは出来そうである。なかなか使えると思う

2009年12月5日土曜日

禁煙への道 2

一応まだ続いている。

何度も誘惑に惑わされつつも、なんとか自分を保っているような気がする・・・


そこで気がついた。
タバコをやめて得したと思える瞬間。

この理由付けが一番大事だと思った。

胸焼け、胃が重たいなどが前までは毎日のように感じていたが、今はほぼ無くなった。


ピロリ菌も悪さしてた部分も大きかったが、タバコを再開して前のような胸焼けや、胃が重たいなどには戻りたくない。。。

これが今禁煙のもっともな理由である。

タバコには習慣性が働くが、自分に報酬があるから習慣性になるのだとどこかの記事を見かけたので、その逆を試してみた。

それ以外にもいろいろ理由付けを考えてみるとよりいっそう禁煙が出来る・・・かな?

2009年12月3日木曜日

あ~ ネガティブ

ネガティブ11の特性というものを見つけたのでメモしておこうとおもう。
世の中、解釈がなんでもありのような時代で惑わされていないか?と思うこのごろ
自由に解釈して正当化しても結局自分に返ってくる話だから精進しないと後悔するぞ

1 先を読まない,深読みしない,刹那主義
2 主体性がない,受け身である
3 うっかりが多い,思慮が浅い
4 無責任,逃げ腰体質
5 本質が語れない,理解が浅い
6 ひと言で語れない,話が冗長
7 抽象的,具体性がない,表面的
8 説得力がない,納得感が得られない
9 仕事が進まない,放置体質
10 言いたいことが不明,論点が絞れない,話が拡散
11 駆け引きできない,せっかち,期を待てない

これだけ羅列すると見た目にいやだと思うね。しかし言い回しや変な理由をつけるとそれほどおかしいとは感じなくなるとおもうから気をつけておこう。

2009年11月24日火曜日

禁煙への道

禁煙ブームらしい・・・

本当か?・・・

統計では禁煙傾向のデータが出揃っているとういうが・・・

きっかけがつかめないままずるずると今日まできているという人が大半でなないのか?


ほんと、こんな自問自答を繰り返している毎日だった。

1時間以内には吸わない。ニコチン量を減らす。そして禁煙に突入したい。

そう思うだけなら誰でもできるぞ!!

タバコを吸わない人には冷たくあしらわれる。
しかしそう言わないでほしいんだな。そう思うことからすべてが始まるのだから。頭ごなしにいわれるとやる気さえそぎ落とされてしまう。

きっかけがほしいのだ。自分に見返りになるなにかが。

そしてその日は思わぬところからやってきた。

溶連菌(猩紅熱)にかかった。

のどが痛い。熱もさることながらなんといってものどが痛い。

必然的にタバコを吸っていなかったのが気がついたら12時間以上。

その時は禁煙の決意などしていなかったので、久しぶりに喫煙すると、うえっ!痛っ。。。

痛いのが戻された感じになったので、そのまま大人しく寝た。

そして熱が3日目まで突入するとさすがに仕事も休んではいられない。

とにかく直さねばとひたすら寝ていたらタバコを2日間まるで吸っていなかった。


こっ・・・これは、チャンス?

やってみようという気持ちになった。さて・・・つづく

2009年11月22日日曜日

バレー全日本男子 ちょっと見直した

32年ぶりのメダルが確定…

少し前だと男子バレーはどうせ・・・
的なイメージがあってほとんど意識をしてみてなかった。

昨年、オリンピック出場を決めた瞬間、植田監督が倒れたシーンが印象的だったのだがその年のバレーの内容が今までとはたしかに違っていた。

今年は昨年の戦い方を裏付けるような結果かもしれない。
そう、今の全日本は歴代のなかでも最高水準でプレーしており世界のトップクラスともそれなりに渡り合えるように変貌をとげていた。

本当の意味ではまだかと思う部も見え隠れするが、以前なんかよりは比べ物にならないほどに肉薄している。


男子バレーの人気は今ひとつだが、あのプレーは本当にま近でみて頂きたいと切に思う。
芸術とまで思うクイック、カベのようなブロック、自分が着地する前にボールが床におちてしまうスパイク、そしてブロックのシャット!そして会場に響くボールの怒号のような爆音。
迫力満点だ!!

さらにはブロックの上から放たれるスパイク。最高到達点は3m50cm以上の攻防戦。

知れば知るほど高度な技術と駆け引きの行われる一瞬の攻防。


これらがすべて世界最高峰レベルの仲間入りをしたと思うプレーをしている。

うれしいことだ。ガンバレ日本!!!

2009年11月13日金曜日

MSAccess使いからVB.NETへの道 TextBox中の文字を他のTextBoxにドラッグアンドドロップその2

続きはそんなに大したことではないが、明細行の行コピーの手順としてはまず前提が大事になってくる。

TextBoxをひたすら配置するときに、Webでよく使われている手法として行カウントのNoを含めるという名前付けを行う。

これをVBでも行いloop処理で書くプログラム数を減らすというものだ。
例えば 1行目の商品CDのTextBoxには

SYOHIN01

という具合。もちろん2行目はSYOHIN02 ・・・
そこでドラッグアンドドロップをするときに使う文字としてSYOHIN02を使用するわけだ。

Right関数で右2列を使用すれば現在の行数がわかるのでその同じ行のすべての情報を取得すればよい。

そこで1行がまた大量の場合SYOHINなどの名前をつけてしまうと各名称をタイプしなければならないのでお勧めする名称は

Column0101

とすると良いだろう。
1行の全項目を取得する場合にもLoopが使えるのでソースが激減する。

また名称で判別したい場合は、関数にしてしまうのも手だ。

Public Function SYOHIN()
SYOHIN = "01"
End Sub

個別に処理をしたい場合に書いたソースの項目名がすべて数字だと何が何だか解らなくなってしまうのを防ぐためだ。

これでコントロール名称を動的に取得すればよい。
使い分けとしてまとめると

●項目を単体で制御する場合は関数名を使い動的にコントロール名で行う。

●項目全体を一度に行う場合はコントロール名称をそそまま使用しLoop制御で一気にたたみかける。

次回はその使用例を覚書としてまとめようと思う。

2009年11月12日木曜日

MSAccess使いからVB.NETへの道 TextBox中の文字を他のTextBoxにドラッグアンドドロップその1

邪道な方法
Accessの様な行明細で同じ内容の行をコピーして増やしていきたい・・・
そういう要望は多々ある。
作る方はあまりお勧めしない運用であるが、見積の画面となるとそうはいかなくなってくる。
この方法は明細行を1つ1つTextBoxで作成した場合である。
(明細形式のコントロールでは想像着かない為)
そこで少し奮闘してみた。
まずは受ける方のTextBoxプロパティでAllowDropをTrueに必ず変更する。
これをしなければうんともすんとも言わない。

TextBoxのあるフォームに以下のコードを書き込む。

'受ける方のCD TextBox2
Private Sub TextBox2_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles _ TextBox2.DragEnter
'ドラッグされている内容が文字列型に変換可能な場合
If e.Data.GetDataPresent(GetType(String)) Then
'コピーを許可するようにドラッグ元に通知する
e.Effect = DragDropEffects.Copy
End If

End Sub

Private Sub TextBox2_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles _ TextBox2.DragDrop

If Me.ActiveControl.Name <> "TextBox1" Then
Me.TextBox2.Text = e.Data.GetData(GetType(String))
End If
End Sub

'ドラッグする方
Private Sub TextBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles _ TextBox1.MouseDown

Me.ActiveControl.DoDragDrop(Me.ActiveControl.Name.ToString, DragDropEffects.Copy)

End Sub

ちなみにこの例はTextBox2の値に"TextBox1"という文字が入る。Me.ActiveControl.Name.ToString を文字として指定しているからである。
Me.ActiveControl.Text.ToStringとすればそのTextBoxの文字をドラッグアンドドロップすることが可能であるが、それでは1つだけがコピーされるだけである。

なのでまずは方法が解ったところで次回その取り回しをリファレンスしたいと思う。

2009年11月10日火曜日

MSAccess使いからVB.NETへの道 Handles後のコマンド登録

同じイベントの発生する項目が大量にあった場合に昔ではひたすらイベントに書き込んでいた記憶がある。

しかしHandles後に指示するコマンドは複数登録が出来1箇所のソースで完了できる仕様になっている。

が、なかなか便利かとおもいきや大量にある場合はやはり大変なのでなんとかいい方法はないかと思ったとき、エクセルと秀丸のようなテキストエディタを使ってみた。

エクセルで元ネタを作成し、値の貼り付けでテキストにしてあげてから、デキストエディタに一度貼り付け必要であれば編集、その後VBのソースに貼り付ける。

一度エクセルで項目名を作成しておけば、同じようなことがあった場合次からはかなり早い。

この場面はAccessのようなアプリを作成していると特に遭遇する事態であった

2009年11月7日土曜日

MSAccess使いからVB.NETへの道

VBでMSAccessの様に動かす・・・

これに至るまでに長かったこと。。。

この問題の最大はなんと言っても表形式フォームの表現だろう。


なんだかんだ言われたい放題のMSaccessだがこの表形式フォームの機能はよく考えられていると思う。


ただの表示だけならVBでもなんとかなる…何度もそう思った

問題は入力する表形式フォームで複雑に制御をしなければらなない場合だ。

特に入力の値に応じてEnterによるTab移動を駆使するといったことを実現出来るものはVBで用意されたコントロールにはないということだ。

この制御はMSAccessにとってたやすい表現であった為、VBにもあるのでは?という甘い期待を抱いていたのだが実現が難しいというのが分かるまでに長かった。

そうするとTextBoxをひたすら配置するしかないという結論である。


MSAccessの様にVBを使う条件
●一覧で表示する場合行数が未定の場合に使い分けるコントロール
 A) DataGridview
  これは1行で表示出来るものに限られる。
  EnterでのTab移動は単純な動きだけは可能なので編集する場所が少ない場合に有効である

 B)DataRepeater
  表示だけなら1行の中に自由にテキストボックスを配置が出来てAccessの表形式フォームの見栄えが簡単に出来る
  しかしVisualBasicPowerPack3.0をインストールしてから使用するものなので配布時に注意する必要がある
  すごく期待したがこれもEnterのTab移動が困難

 C)ListView
  これはAccessで言うリストボックス。そう思って使おう
  なれればかなり便利。それほど難しくないし

 D)TextBoxを力技で配置
  入力インターフェイスを自在に行うのならやはりこの方法
  入力行数を固定して使う
  それよりデータが多い場合はページング処理を施す

それでもう一つ重要な条件で、クエリは手書きです。AccessのGUIみたいなものはありません。あるにはありますが実現できることはかなり制限されます。クエリのGUIからの脱却は考えることです。(あれに変わるわかりやすいものはないと思いますが・・・)


という具合の住み分け方法に落ち着いた。


後にそのTextBoxの力技で配置の大まかな方法をレビューしようと思う。

MSAccess使いからVB.NETへの道

ようやくVB.NETの使い方がなんとなく分かってきた。
MSAccessからの脱却方法を自分なりに今後まとめておこうと思う。

その前にちょっとこまった現象

VB2008ExpressEditionでContextMenuStripコントロールを使用していたところ強制終了が突然発生する。

なかなか油断しているところでやられてしまうので、何度か頓挫してしまった。

どうにかならないものか・・・

2009年9月28日月曜日

充電式電池の完全放電確認方法

今の時代、充電式の乾電池を使うというのがごく普通になってきた。

以前では、ニカド式でラジコンなどに使用する用途くらいであまり普及はしていなかった。

なのでニカド電池はほとんど放置状態だったのだが、放置して置いた為か再び充電すると使用できるようになるではないか。

以前使用しているときは、メモリ効果が最大に達した為か、充電してもすぐ電池がなくなるという状態でいかにもお買い得感がなくて見向きもしなくなった経緯があった。

しかし最近の充電式はパワーから、持続性までまるで違うので驚いた。特に継ぎ足し充電が可能と放電がほとんどないというところがニカド電池を使用していた人間には信じがたかった。


だが、そんななかにも充電方法によっては、メモリ効果と疑いたくなるような状態にもなる場合に遭遇した。

たいがい電池を2本以上を同時に使用する場面が穂ほとんどと思われるが、そのどちらかの電池が途中まで充電が残っている場合と、もう一つの電池がほとんどない場合などは、充電器で充電している途中で点滅を繰り返す(充電されない電池)とご認識する場合がある。

残量チェックメーターなどがあればよいがなかなか高価なのである。

そうすると他の手を考えなければならないが、手ごろなものがなかなか見つからない。

すると最近の子供のおもちゃ箱から、ラジコンのプロポが出てきた。それは500円の一応フルアクションの車のラジコンであった。

そのプロポの動力源は単4乾電池2本。そこで工夫をしてみた。

ボタンを押しっぱなしにするように結束バンドでボタンとの間に電話線のクリップを間に挟みこんだ。

これで放電機の完成だが、赤外線は目には見えない。
そこで赤外線の確認方法として、携帯電話のカメラ越しで確認するという方法で解決。

1日放電させれば十分だと思うが、これはやってみないとわからない。

それで、放電してみてから充電すると、エラー点滅していた電池が復活。


ニカドもあとで試してみよう。

昔は無線ラジコンを500円でなんてとても買えなかったが時代の流れか。ラジコンはこわれてもプロポだけが残るのことが多いと思うが、こういう使い方もどうだろう?

2009年9月14日月曜日

リモートしている時の便利なキー アプリを閉じる

リモートをしている時に最大化になったアプリを閉じようとした場合場合によってはスクロールしなければ右上のXを押せない場合あると思う。

その場合Alt + F4でアプリを終了出来る。

初めはなかなか出来なかったが、慣れてくるとかえってこの方法で閉じるようになった。マウスで閉じたいアプリの適当な場所をクリックしてアクティブにし Alt + F4 を左手で実行。

最近のPCは大量に画面を開いていても気にせず動いてくれるので
画面を沢山開いて閉じたいアプリが全部でない場合、なんとも気持ちよく閉じたいアプリを指定して終了出来る。
指のフォームポジションが出来てしまえばこっちのもの。楽器を弾くような感じかな。
リモートでなくても推奨したいキーだね。

2009年9月8日火曜日

リモートソフトの定番

PCのリモートコントロールをする場合、いろいろなところからソフトが出ているがどれが快適につかえるのかがやってみなければわからず、レビュー等を参考にしながら最終的に以下のソフトに落ち着いた。

ちなみフリーでWindowsでリモートという条件です。
尚、動画系の再生はリモートで閲覧する場合はどのソフトでも快適とはいいづらい

①WindowsのXPpro移行搭載のリモートデスクトップ(Homeはリモートする側のみ。Windows2000 Serverから可能となっている)
 リモートとなるのはこれが最強だと思う。
 LAN内であればまず問題なく使用可能。設定次第では誰もが使用可能となってしまうのでセキュリティには十分注意。
 作成されたrdpからショートカットを作成して、リンク先にコマンドを追加するとデュアルデスプレイに出来たりと便利になっている。
 WAN側から操作ということになると基本的にルーターの設定が必須となりポートフォワーディング等を施さなければならない。
家庭で使用するにチャレンジしてみるものいいかもしれない。

尚、ルーターのセッティング等を一切行わないで外からリモートを行う場合はP2PソフトのHamachiを使用すると良い。P2Pなのだか早く言ってしまえば仮想LAN構築するものだ。そのLANをルータ設定いらずであっという間に構築することが出来る。この様に仮想LANを構築できるはソフトはこれ以外見当たらない。
ということでHamachiとリモートデスクトップをセットで使用するのが定番


②LogMein
 これもすぐれもので、ルータの設定を一切行わないでもリモートが可能になる。WondowsXPのHomeエディションの場合はぐらいかな。とてもリモートのレスポンスが良くて快適にリモートが可能となる。リモートする側はブラウザがあればリモート可能なのでよほど古いPCでなければインターネットが出来るPCでリモートが出来る。

尚、リモートするPCのショートカットも作成出来たりと各種の設定が可能なので便利である。
また、リモートされるPCでは操作される側のPCがリモートされるさまが確認出来る。
ちなみにWindowsのリモートデスクトップではログイン画面に変わってしまい、リモートされるさまは確認が出来ない。


③UltraVNC
以前のRealVNCを使用していた時はかなり画像描写が遅くて使用をやめた経緯があったのだがUltraVNCはかなりレスポンスが良かったのでお気に入りで使用することになった。
その一番の要因がスペックの低いPCでもそれなりに快適にリモートが可能になっていたのである。LAN内では相当有効である。
尚、外から操作する場合は先ほどの紹介したようにHamachiと一緒に使用すると簡単にリモートが可能。


以上のようにかなり以前からリモートのソフトを探していたのだが、結局この方法に落ち着きました。

2009年8月26日水曜日

NetWork Notepadをイライラせずに使うコツ

NetWork Notepadを目の前にしてさあやるぞ!!・・・

と思い図を作成しようとしたところ全然思うように描けない。


これじゃ使い物にならないと思いながら、なぜこんなに評判がいいのか疑問を抱いた。


ネットでフリーソフトで描けるネットワーク図のアプリを探してもNetWork Notepadより評判の良いものは見つからないし・・・

そうすると、このソフト独自のクセがあったみたい。
それが分かれば難なく描くことが出来るようになった。その代表操作例が次のようになる。

1日本語化

 ・file → setup で日本語表示に変更

2全体の移動

 ・空白の部分で右クリックしながらマウス移動をするとスクロール

3オブジェクトの移動及び複数同時移動

 ・Shift + 左クリックで移動可能

4フォント変更

 ・テキスト上で右クリック

5アイコンの大きさ変更

 ・右クリック→プロパティ→X軸のスケールとY軸のスケールの値を変更


大体こんなところかな

2009年8月21日金曜日

vistamizervの不具合でインストール失敗 vre3.33

vistamizerのインストールでやってしまった。
インストール後の再起動からエンドレスReboot状態に陥った。


立ち上がりすぐのプログレスバーが出たと思うと電源が落ち再起動・・・これが延々つづく・・・
ver3.2でも起こっているので尚ってはいなさそうだ。ちなみにver2.5あたりはインストールが出来る。


こうなると復旧作業となるが、ここでポイントになる点がXPのCDということだろう。
最終的に行った作業はCDbootからのシステムの修復(R)を行ったところとりあえず起動するようになった。
メーカーOEMの場合システムの修復の項目があればそちらを試すのがよい。
メーカーOEMの再インストールツールに修復があることが前提だ。これはメーカーによってさまざまなので自信のないひとにはお勧め出来ません。

いろいろなサイトに情報がでているがその通りの結果になるので、再インストールする覚悟で行おう。

尚、修復を行った場合はSPが2にIEが6に戻る。とりあえず他はそのまま生き残ったが効果音だけはvistamizerの効果音で立ち上がった。

いいんだかわるいんだか。様子見でそのまま放置(普通に使えるので)。不具合が出たら追って記載します。

2009年8月17日月曜日

VBScript (VBS)でPC設定を楽しよう

大きな会社では必要ないと思う。

小技で各PCの設定を素人でも行えるようにする。

各個人に行ってもらうことはダブルクリックと、メッセージが表示されたらOKを押してもらうだけ。

今回の設定は
①新たに設置したサーバーのショートカットをデスクトップに配置
②サーバー名で参照できるようにlmhostsに登録

これを各個人の端末に設定をする。

そこでどうするかと言えばvbsになるわけだ。

そこで以下がそのソース。

Dim x
x = "新サーバー設定開始。"
MsgBox x

Dim str_from 'lmhostsを上書き保存
Dim str_to
Dim str_from2 'lmhosts.samを上書き保存
Dim str_to2

str_from = "\\共有フォルダ\配布フォルフダ\lmhosts.sam"str_to = "C:\WINDOWS\system32\drivers\etc\lmhosts"

Set objFS = CreateObject("Scripting.FileSystemObject")Call objFS.CopyFile(str_from, str_to)
str_from2 = "\\共有フォルダ\配布フォルフダ\lmhosts.sam"
str_to2 = "C:\WINDOWS\system32\drivers\etc\lmhosts.sam"

'********************lmhostsを再起動ナシで反映
Set objFS = CreateObject("Scripting.FileSystemObject")Call objFS.CopyFile(str_from2, str_to2)
Set WshShell = CreateObject("WScript.Shell")Set oExec = WshShell.Exec("cmd /c nbtstat -R")

WScript.echo oExec.StdOut.ReadAll  ’成功メッセージ

'********************ショートカット作成
Dim sc,desk_top
Set WSH=CreateObject("WScript.Shell") Set ws = WScript.CreateObject("WScript.Shell")desk_top = ws.SpecialFolders("Desktop")
Set sc = WSH.CreateShortcut(desk_top & "\新サーバー へのショートカット.lnk") sc.TargetPath = "\\新サーバー" sc.save
Set sc = Nothing Set WSH = nothing

準備として
①共有フォルダが必要
②その共有フォルダにlmhostsのコピーの元ネタをしこんでおく
③各クライアントのlmhostsとlmhosts.samの両方が等しくなるようにコピーする
④クライアントの再起動をせずにlmhosts更新を行うので、一応メッセージ確認で一呼吸置くようにする
⑤デスクトップにショートカットを配置する場合は、特殊なデスクトップに対応する

拡張子を.vbsで保存後終了。

尚、lmhostsはなにもしなければ上記の場所のはずなのでデフォルト

こうすると、そのファイルをダブルクリックして、出てきたメッセージは全部OKを押して・・・

の説明で設定完了です。

ファイルの配布はお好みで・・・

これを元にいろいろ出来るかと思います。


あと、使用する場合は自己責任にてお願いします。

2009年8月11日火曜日

sysprep システム準備ツールの出現 メーカーOEM

初めて遭遇したシステム準備ツール

ググってみても解決方法は再セットアップのみ。


これが思い当たるところがある。

まず、セットアップ時間とCDの読み込むときの動作音。


これが何度となくシャカシャカと音が出ているのが気になっていたがインストールは正常に終わっているように思えた。

ここでPCが立ち上がった時にシステム準備ツールが勝手に立ち上がった。
それ以外は至って普通に見える。
ここで気づけばいいものをそのまま作業をしていてユーザー名を設定しようと思ったのだがDefaultと勝手に名前がついていた。

何だこれは????・・・

それから問題のシステム準備ツールを何とかしようと思ったのがことの始まり・・・



何をどうやってもこのシステム準備ツールが消えない・・・
というか出ないように出来ない・・・


結局再インストールをすることにした。


そしてインストールを眺めていたのだがもしやと思いCDクリーニングを行った。
途中でCDクリーニングを行ったのだが(4枚組みで1枚が終わった時にクリーニングを行う)インストール終了が若干早かったような気がした・・・

それで決定的に違ったのが最後のインストールでの1枚。これがCDからファイルコピーをするのだがCDの動作音がしきりに出ていたのだが今回はそれほどでもなかった。


最後に終了間際で再起動を何度か繰り返すのだが忌まわしきシステム準備ツールの画面が現れたのだ。なんだダメだったか・・・と思っていた矢先に勝手に設定を終了して再起動を始めたではないか・・・




もしや・・・




画面が現れると購入時のXP設定画面が現れた。




そうだよね。これが普通だよね。リカバリしてこの画面が現れないでリカバリが終了するはずはないね。



結局システム準備ツールが現れる場合はリカバリ中で不具合が起こっていた。ということなのだと思が断定は出来ないかな・・・

インストールが正常に終了していなければ何をどうやってもダメだと諦めがつく


今後何度同じことが起きるか・・・



もう一台リカバリする予定があるので今回のことを踏まえて行うとしよう。

2009年8月10日月曜日

VB.NET 表形式フォーム

VB.NET 表形式フォームをイメージで言うとMSACCESSの表形式と同じような実装を行うととんでもないことになってしまう。

しまいにはACCESSでいいんではないかと言うくらい。。。


そうこうしているうちにVBに移行しようとすることを頓挫してしまう。

ところがVB6時代からあったらしく今まで全然知らなかったのだが、VBには

DataRepeater

なるものが存在するらしい。


このDataRepeaterを説明するのにおおよそACCESSの表形式フォームのイメージを例としているので、どこまで出来るのかは未知数だけれどもDataGridviewをひたすらこねくり回すよりもいいかと思う。

そこで

VisualBasicPowerPack3.0

をインストールするとDataRepeaterが使用出来るがExpress Editionではデフォルトで使用することは出来ない。

インストール後、新しく作成されたツールボックスのVisual Basic PowerPacksの部分で右クリックアイテムの選択(I)からコントロールを追加してから使用可能となる。

全部で

LineShape
OvalShape
RectangleShape
DataRepeater

を追加する。


本気でトライせねば・・・

2009年8月5日水曜日

DATAGRIDVIEW 書式設定


vb.net DataGridview 書式設定

Me.DataGridView1.Columns("0").DefaultCellStyle.Format = "c"

のCの部分に相当する一覧

だが、上記の設定を施しても書式設定が変わらないことがある。


その場合はDataset または readなどで値を格納する時に

書式を設定する必要がある。

で、書式を設定する前に格納する値を数値に変換してやらねばならない

Dim INT_KN as System.Int32 = 0

このINT_KNにDatasetする値を格納して数値型に変更する

INT_KN.ToString("N")

INT_KN代入演算子の後に.ToString("N")と続ける。

継承の問題があるのかとは思うがプロパティをどう変えようがまったく効果がなった。MSAccessを使用していた時とはまったく感覚が違うのでこれが判明するのにかなりの時間を要した。


またNは小数点そのままだと小数点2までの表示なのでN0(エヌゼロ)とすると小数点の表示がなくなる。

今後はその入力編集で数値入力チェックの問題が起こると思うので合わせて注意が必要である。

























































































書式説明値が"123456"の時
書式なし123456
C通貨\123,456
D10進数123456
E指数1.234560E+005
F固定小数点123456.00
G一般123456
N数値123,456.00
Pパーセント12,345,600.00%
Rラウンドトリップ(エラーが出る)
X16進数1E240
0123456
0000000000123456
########123456
#,##0123,456
%0%12345600
00.000E012.346E4
プラス#;マイナス#;ゼロプラス123456
iの値は「#」です。iの値は「123456」です。

2009年7月9日木曜日

JavaScript onChangeとonkeypress及びonBlurの挙動関連

HTMLでEnterにてTAB移動する場合のイベントの使用方法で

onChange

onkeypress

onBlur

の組み合わせで行っているがこの組み合わせがうまく作動しない例としてメモ

まず onkeypress でTAB移動を制御、移動先で入力をすぐに出来るようにする為にselectプロパティで文字を選択状態にする。

onChangeにて入力変更部分を再表示等で制御
これはメッセージによる処理分岐を必要としない処理限定

上記以外の場合でメッセージによりキャンセルが必要な場合にonBlurを使用する。

そこでTAB移動先のテキストBOXにonBlurイベントによる変更があった場合にselectプロパティが無効になる場合がある。

その場合はonkeypressコマンドでの変更を余儀なくされる。

単純なタブ移動であれば、いろいろなサイトで紹介があるのでそれを用いるのがソースも少なく済みいいのだが、少し複雑な場合はそうはいかない。

ちなみに少し拡張で事が足りるのならonkeypressでとる引数を次のようにコントロール名称を抜く例をメモ

onkeypress=nextFocus(text1)
onkeypress=nextFocus(text2)




function(nextObj){
if(event.keyCode==13){
  if(nextObj.name!="text2"){
   nextObj.focus();
   nextObj.select();
   window.event.returnValue = false;
  }
}
}

これはテキスト2以外はEnterで飛ぶことになる。

この組み合わせで上記問題を回避することが可能(それ以外の方法はあると思うのだが・・・)

Javascript onChange 使用時のキャンセル処理で2回が効かない

onChange で変更された時に、値をチェックする場合に

return false

でキャンセルで処理を抜けるというプログラムを作成した場合
一度目は期待通りの処理がされるが連続して同じ処理をさせようと
するとうまく動かない場合がある。

どうしてなのか分からず探してみたのだがこういう情報を見つけた。

http://support.microsoft.com/kb/216435/ja


IEでの作動だったのだが、どうやらonChange ではフォームの
再読み込みがもしくはリセットされなければキャンセルされたままだという。

そこでキャンセル処理を含ませる場合のイベントは

onBlur

で行う。

onChangeとonBlurの挙動はネットでいやというほど出て来るので
割愛しますが、用途を踏まえて使用したほうが良い。

ちなみにonBlurでもonChangeに相当する動作は出来ます。

2009年7月6日月曜日

Google Chart APIで日本語を使う

Google Chart APIは無料で簡単でしかもなかなかリッチなインターフェイスを実現出来るすぐれものだが日本語を使えるとは説明がない。

が、しかし、方法はあったのだ。

UTF8変換すればよいだけとのことだ。

そこで関数をコピペ用として後で使用する為にメモをしておくとする。
VBA,VBScript,aspで使用可能ですが、これを使用しての不都合が発生した場合、当方で責任は持ちません。

引数名 ConveLen
引数型  String
戻り値 全角及び半角カナ、記号の場合にUTF8変換文字
    英数字はそのまま
型   string
サンプル ConveLen("テスト")

Function SJIStoUTF8(strSJIS)
strUNICODE = ASCW(strSJIS)
 strWORK2 = HEX16toSTR2(HEX(strUNICODE))
strUTF8CODE = "1110" & Mid(strWORK2, 1, 4)
 strUTF8CODE = strUTF8CODE & "10" & Mid(strWORK2, 5, 6)
 strUTF8CODE = strUTF8CODE & "10" & Mid(strWORK2, 11, 6)
strWORK16 = STR2toHEX16(strUTF8CODE)
strRET = ""
 strRET = strRET & "%" & Mid(strWORK16, 1, 2)
 strRET = strRET & "%" & Mid(strWORK16, 3, 2)
 strRET = strRET & "%" & Mid(strWORK16, 5, 2)
SJIStoUTF8 = strRET
End Function

Function HEX16toSTR2(strHEX)
Dim n
 Dim i
 Dim n8421
 Dim str2STR
Dim nCHK
str2STR = ""
For n = 1 To Len(strHEX)
  On Error Resume Next
  nCHK = 0 '0で初期化
  nCHK = CInt("&h" & Mid(strHEX, n, 1))
  On Error Goto 0
n8421 = 8
  For i = 1 To 4
   If (nCHK And n8421) = 0 Then
    str2STR = str2STR & "0"
   Else
    str2STR = str2STR & "1"
   End If
   n8421 = n8421 / 2
  Next
 Next
HEX16toSTR2 = str2STR
End Function

Function STR2toHEX16(str2)
Dim strHEX
 Dim n
 Dim i
 Dim n8421
 Dim nBYTE
n = Len(str2) Mod 4
 If n <> 0 Then
  str2 = String(4 - n, "0") & str2
 End If
strHEX = ""
For n = 1 To Len(str2) Step 4
  n8421 = 8
  nBYTE = 0
  For i = 0 To 3
   If Mid(str2, n + i, 1) = "1" Then
    nBYTE = nBYTE + n8421
   End If n8421 = n8421 / 2
  Next
  strHEX = strHEX & Hex(nBYTE)
 Next
STR2toHEX16 = strHEX
End Function

Function ConveLen(ByVal a)
Dim i,outLen
strHan = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョ゙゚ー"
For i = 0 To Len(a) - 1
 k = Mid(a, i + 1, 1) 'If InStr(strHan, Mid(k, i, 1)) <> 0 Then '半角カナ →UTF8
 If InStr(strHan, k) <> 0 Then
  outLen = outLen & SJIStoUTF8(k)
 else
  If (Asc(k) And &HFF00) = 0 Then
   outLen = outLen & k
  Else
   outLen = outLen & SJIStoUTF8(k)
  End If
 End If
Next
ConveLen = outLen
End Function

2009年7月1日水曜日

ODBC接続がやけに遅い場合

ODBC接続を設定していると、やけに動きの遅い端末がある場合がたまにある。

特に新しいデータソースの名前入力の画面から次への画面に移動するとき
すぐに次の画面に移動しないことがある場合がある。

それとテスト時の成功しましたの画面もそうである。

なぜその端末だけが遅いのかがまったく分からず途方のくれていた・・・

この時点で接続反応が遅いと、それを使用するアプリも当然遅くなる。
正確にはデータベースに接続する場合の処理が遅い。

そこで気が付いてその端末に仮想化でOSを構築していたのでそのODBCを
試してみたが、明らかに仮想化のODBC設定が早い。

それでMDACやSQLServer ODBC バージョンを見てみてもまったく同じ・・・

何がなんだか分からなくなってきて、とりあえずひらめいたことはサーバー名をIPからドメインに変更してみた。

それだけではダメなので LMhostsにドメイン登録を合わせて行ったところ・・・


なんと今までの動きは何だったの?と思いたくなるくらいのレスポンスになった。

それが普通なのだが・・・


それにしても本当の解決にはならないが、まずはよしとしておこう。

2009年6月22日月曜日

Virtual Serverを快適に使う場合

Virtual Server すなわち仮想化として使用する場合に、PCのスペックがどれほどのものが要求されるか分からなかった。

そこでこの度PCのスペックが上がる機会があったので比較をしてみた。

過去のスペックが Cour 2 Duo のE4300だった。普通に使うには十分であるが、仮想化を動かすとなると、なんともはがゆい緩慢な動きでどうあがいてもそれ以上の動きにはいたらなかった。

なのであまり使用はしていなかったが、
同じCore 2 Duo のE7400に変えてからは様子が違う。

普通に使用する感覚で操作が可能だ。

これからPCを購入すり予定なら、E7400以上が推奨としたい。
そうなるとCour i7は安泰と思うが・・・
仮想化でPCを2台以上でと考えならそうすべきだと思う。

そうそうメモリは4Gが条件

2009年6月12日金曜日

メール送信だけが出来ない 特別変

ある日の夕方、一本の電話が入った。
「メール送信が出来ないんだけど」
よくある話だな・・・


内容を見てみる・・・


だがいたってOutlook Expressは健康に見える。


送信するメールは巨大でもなんでもない。


Outlook Expressの各ファイルサイズもそんなに大きくないし(2Gで壊れる)・・・


表示用のメール登録名称にも問題ない(記号や特に;などが名称に使われている場合は送信エラーになることがある)



そのメールアカウントは過去に何度も送信するのに使用されている・・・



はて・・・


メールのエラーは送信前の接続時にエラーが起きている・・・



ポートエラー?・・・



なんだかよく解らない・・・




その日は帰った。明日には普通に使えるだろう・・・




・・・次の日


「やっぱダメだんだけど」


本当?・・・



本腰入れて調べてみるがさっぱりわからん。


ポートバウンド587の設定も施してみるが、あえなく撃沈・・・


うそだろ・・・


しばらく カチャコチャ・・・いじり倒してみたりして




こうなったら、
Windowsファイヤーウオールを解除!!
ウイルスセキュリティソフトをすべて停止!!
登録済みメールアカウントの全てを削除

ん~裸同然・・・


こんどは・・・うりゃっ!!




・・

・・・ 本気らしい・・・ 



そのうち他の営業所から

「メールの送信が出来ないのだけれども・・・」



えっ!・・・・えっ!~



もっ・・・もしかして他の営業所は?ものすごくやな予感が・・・




リモート、リモート・・・空いてる端末、空いてる端末・・・あったあった・・・



やだな~・・・すごくいやだな~






ふ~・・・・・・・・・・・







とりあえず・・・









ここも・・・・やられてる・・・








メールサーバー管理のベンダーに連絡(有名プロバイダやベンダーとかではない)



助けて!!・・・



「え~・・・ん~・・・・」


「こちらで問題のアカウントを作成してテストしてみたのですがいったって普通に送受信出来ます。通信ログにはエラー情報等の問題は発見できませんね」


でも他の営業所はエラーになるところとならないところがあるし・・・


「初めての話で・・・」



こっちだって初めてだよ!!


ポート監視とかのアプリで確認とるようなことって出来ないの?


「え~・・・今ひとつ決めてみたいのはなくて・・・」





いったいどうすりゃいいんだよ(内心)



「O○n様でメールサーバーの故障情報があったらしいです」




メールサーバーはそちらにあるだろ



「ルータ再起動してみるとかあとダメだったらプロバイダーに連絡とか・・・」




たしかに言うとおりメールサーバーまでの間に通信が遮断されているし・・・




営業所に


ルーター再起動して!!


は~い





あ!

あ!!

送信出来た!!!






他の営業所


ルータ再起動して


わかりました。

 

・・

 

・・・

 

「シ~ン・・」

 

 

送信出来ました!!」

うわっ!!・・・ほっ、ほんと・・・(汗)

 

そこでルータ再起動にコツがあり、電源を落としたあとすぐに立ち上げずに10分くらい待機しておくと良いらしい。

プロバイダーの接続情報がクリアされ再接続時に情報を再構築する為である。

(後で判明したのだが、10分くらいの電源Offでは復旧せず、半日放置して復旧したということもある)

ポートバウンドに気をとられていたが、プロバイダーに問題がありルーターを再起動ないと接続出来ないとは考えてもいなかった。

しかしこれ以上のことが起こったら問題を解決できるのであろうか・・・

やれやれ・・・

2009年6月8日月曜日

ノーチュー

ウオール街でかの有名なノーチュー・・・
あのサブプライム破綻前、ウオール街ではゴミ同然の扱いをしていた株を安くなったといい買い続けて2009年の8月の事態に陥った。
それだものゴミ箱といわれても仕方がない。

さらに農林中金は天下りポストの上野氏が退職。政府からの資金増強の前に退職しているから退職金をまともに貰っている。1兆9000億もの資本運増強を行い自己資本率10%は確保したとはいいつつも、09年3月までには有価証券の含み損も2兆929億円(08年9月末は約1兆5700億円)に拡大した。これはもう通常なら破綻だと思う。
あげくには農水省は小林氏の待遇アップを期待し、所管官庁との関係悪化を避けたい農林中金は、総研でのポストを格上げして折り合いを付けるなどと社長より高い報酬をかんがえているそうだ。天下りポストの枠までも増やそうと考えているらしい。

この話調べれば調べるほど頭にくる。なぜマスコミはここにもっと話を突っ込まないのだろう。これこそもっと叩くベキだと思わないのか!!

2009年6月6日土曜日

最大値のレコードだけを集める

ある特定の項目の最大値にあたるレコードの集まりだけを取り出す。。。
単にMAX関数を使うだけではSQLは完成しない。。。
さらに、その最大値が日付だった場合、指定の日付を最大値とみなして抜き出すことをしようものなら、さらに工夫が必要だ。

そこで例題 本日が 2009年 4月1日として その日現在の集合を抜き出す。20000101~ 20041231 までは 10 200501001 ~ 20081231 までは 20というよな運用として
テーブル名 T
データ
FA       FB      FC
--------------------------------------------
abc      20000101     10
abc      20050101     20
abc      20090101     30
abc      20100101     40
def      20040401     50
def      20090331     60
def      20091231     70
def      20100101     80
ghi      20030501     90
ghi      20090501     100
ghi      20100501     110

結果
F1       F2      FC
--------------------------------------------
abc      20090101     30
def      20090331     60
ghi      20030501     90

SELECT Q1.F1, Q1.F2, T1.FC FROM T
AS T1 INNER JOIN
(SELECT FA AS F1,
 MAX(CASE WHEN FB >'20090401' THEN
 '00000000'
ELSE
 FB
END)
AS F2 FROM T
GROUP BY FA)
AS Q1
ON Q1.F1=T1.FA
AND Q1.F2=T1.FB

ポイントはサブクエリで指定の日付を超えた場合に'00000000'と変換する部分がポイント
尚、Micrsoft Access ではサポートをしていないらしいとのことで、エラーが発生
ちなみに CASE を使用する場合には Accessでは IIf を使用する。
Accessではストアドをキックしてレコードを抜き出した方がよさそうである

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トレイの裏にセロハンテープか何かを貼って使用して下さいとは絶対に推奨しないだろう。

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