初めて遭遇したシステム準備ツール
ググってみても解決方法は再セットアップのみ。
これが思い当たるところがある。
まず、セットアップ時間とCDの読み込むときの動作音。
これが何度となくシャカシャカと音が出ているのが気になっていたがインストールは正常に終わっているように思えた。
ここでPCが立ち上がった時にシステム準備ツールが勝手に立ち上がった。
それ以外は至って普通に見える。
ここで気づけばいいものをそのまま作業をしていてユーザー名を設定しようと思ったのだがDefaultと勝手に名前がついていた。
何だこれは????・・・
それから問題のシステム準備ツールを何とかしようと思ったのがことの始まり・・・
何をどうやってもこのシステム準備ツールが消えない・・・
というか出ないように出来ない・・・
結局再インストールをすることにした。
そしてインストールを眺めていたのだがもしやと思いCDクリーニングを行った。
途中でCDクリーニングを行ったのだが(4枚組みで1枚が終わった時にクリーニングを行う)インストール終了が若干早かったような気がした・・・
それで決定的に違ったのが最後のインストールでの1枚。これがCDからファイルコピーをするのだがCDの動作音がしきりに出ていたのだが今回はそれほどでもなかった。
最後に終了間際で再起動を何度か繰り返すのだが忌まわしきシステム準備ツールの画面が現れたのだ。なんだダメだったか・・・と思っていた矢先に勝手に設定を終了して再起動を始めたではないか・・・
もしや・・・
画面が現れると購入時のXP設定画面が現れた。
そうだよね。これが普通だよね。リカバリしてこの画面が現れないでリカバリが終了するはずはないね。
結局システム準備ツールが現れる場合はリカバリ中で不具合が起こっていた。ということなのだと思が断定は出来ないかな・・・
インストールが正常に終了していなければ何をどうやってもダメだと諦めがつく
今後何度同じことが起きるか・・・
もう一台リカバリする予定があるので今回のことを踏まえて行うとしよう。
2009年8月11日火曜日
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
を追加する。
本気でトライせねば・・・
しまいには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 書式設定
| 書式 | 説明 | またNは小数点そのままだと小数点2までの表示なのでN0(エヌゼロ)とすると小数点の表示がなくなる。値が"123456"の時 |
| 書式なし | 123456 | |
| C | 通貨 | \123,456 |
| D | 10進数 | 123456 |
| E | 指数 | 1.234560E+005 |
| F | 固定小数点 | 123456.00 |
| G | 一般 | 123456 |
| N | 数値 | 123,456.00 |
| P | パーセント | 12,345,600.00% |
| R | ラウンドトリップ | (エラーが出る) |
| X | 16進数 | 1E240 |
| 0 | 123456 | |
| 00000000 | 00123456 | |
| ######## | 123456 | |
| #,##0 | 123,456 | |
| %0 | %12345600 | |
| 00.000E0 | 12.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で飛ぶことになる。
この組み合わせで上記問題を回避することが可能(それ以外の方法はあると思うのだが・・・)
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に相当する動作は出来ます。
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
が、しかし、方法はあったのだ。
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にドメイン登録を合わせて行ったところ・・・
なんと今までの動きは何だったの?と思いたくなるくらいのレスポンスになった。
それが普通なのだが・・・
それにしても本当の解決にはならないが、まずはよしとしておこう。
特に新しいデータソースの名前入力の画面から次への画面に移動するとき
すぐに次の画面に移動しないことがある場合がある。
それとテスト時の成功しましたの画面もそうである。
なぜその端末だけが遅いのかがまったく分からず途方のくれていた・・・
この時点で接続反応が遅いと、それを使用するアプリも当然遅くなる。
正確にはデータベースに接続する場合の処理が遅い。
そこで気が付いてその端末に仮想化でOSを構築していたのでそのODBCを
試してみたが、明らかに仮想化のODBC設定が早い。
それでMDACやSQLServer ODBC バージョンを見てみてもまったく同じ・・・
何がなんだか分からなくなってきて、とりあえずひらめいたことはサーバー名をIPからドメインに変更してみた。
それだけではダメなので LMhostsにドメイン登録を合わせて行ったところ・・・
なんと今までの動きは何だったの?と思いたくなるくらいのレスポンスになった。
それが普通なのだが・・・
それにしても本当の解決にはならないが、まずはよしとしておこう。
登録:
投稿 (Atom)