WindowsServerのリスタート2009/09/17 11:13

'========================================
'WindowsServerのリスタート(リブート)を行います
'24H運転のサーバーで、データのバックアップを行った後に
'リスタート処理を行います。待ち受け処理をしているPRGも
'あるので、メモリをクリーンにするためにも行っています。
'========================================
'いくつか方法があるようです。
'VBスクリプトによる方法
'IISによる方法
'プログラムによる方法
'  この中で使用するDLLは、「SAK図書館」にある
'  sakinfo.dll を使用します
'  『sakif110.lzh 22,247 bytes』 検索してください。
'------------------------------------
01.VBスクリプトによる方法
  '--------
  RESTART.VBSを手に入れます。
  以下のアドレスからダウンロードできるようです。
  ftp://ftp.microsoft.com/reskit/win2000/restart.vbs
  '--------
  RESTART.VBSを C:\ に登録します
  (パスが通ればどこでもよいみたいです)
  バッチファイルを作成します。
  (RESTART.VBSと同じ場所に)
  '-----
  cscript c:\restart.vbs /S サーバー名 /R
  '-----
  このバッチファイルをタスクに設定して、動作を確認。
  '======================
  '注意点
  '======================
  WindowsServer2003,2008等は、何かプログラムが起動していると
  このスクリプトが動作しないようです。
  
'-------------------------------------
02.IISによる方法(IISが起動している必要があります)
'-------------------------------------
  この方法は試していません。
  > iisreset /reboot
  これで、リブートするようです。
'-------------------------------------
03.プログラムによる方法
'-------------------------------------
  以下の宣言をしておきます。
Public Declare Function ExitWin Lib "sakinfo.dll" (ByVal mode As Long, ByVal errmsg As String) As Long
'** ExitWindowsEx 定数
Public Const EWX_LOGOFF = 0
Public Const EWX_SHUTDOWN = 1
Public Const EWX_REBOOT = 2
Public Const EWX_FORCE = 4
Public Const EWX_POWEROFF = 8
'------------------------------
'次の関数を定義して、コールすればリブートします。
'------------------------------
Sub ReBoot_Win()
Dim errmsg As String

'** 準備
errmsg = Space(300)

'** Windows リブート
If ExitWin(EWX_REBOOT, errmsg) = 0 Then
errmsg = Left(errmsg, InStrRev(errmsg, Chr(0)) - 1)
MsgBox("ExitWin エラー" & Chr(10) & Chr(10) & errmsg)
End If

'** 終了
End

End Sub

漢字入力時に 自動的に振り仮名を取得2009/09/17 09:41

'=========================================
'漢字入力時にそのカナ入力を取得して、
'振り仮名として取得します。このルーチンは
' ( み~くんパパの仕事部屋 VB.NETサンプル)
' ( [IME]ふりがな取得クラス)
'を使用しています。
'=========================================
01.まず、「IMEComp.vb」を取得して、プロジェクトに追加します。
  ( み~くんパパの仕事部屋 VB.NETサンプル)を検索してください。
フォームには2つのTextBoxを追加します
 SH_名称
SH_振り仮名

'-------
02.プロジェクトで以下の宣言をします。
Public Class サンプルPRG
Private WithEvents clsTextBox1Furi As IMEComp.Furigana
'-------
03.フォームのLoadルーチンに以下を追加します。
Private Sub サンプルPRG_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
clsTextBox1Furi = New IMEComp.Furigana(Me.SH_名称)
'--------
04.以下のルーチンを追加します。
Private Sub clsTextBox1Furi_Converted(ByVal sender As Object, ByVal e As IMEComp.ConvertedEventArgs) Handles clsTextBox1Furi.Converted

If sender.Equals(SH_名称) Then
If IsNarrow(e.FuriganaString) Then SH_振り仮名.Text &= e.FuriganaString
End If

End Sub

VBで作成したプログラム用のHELPの作り方2009/09/16 14:50

VBで開発したプログラム用のHELPファイルを作成します。
'素材はWORDのDOC形式で作成します。
'次にフリーの「doc2htmlhelp.vbs」を使用して、元のHELPファイルを作成します。
'ただしこのHELPには、INDEXが付いていないので、VBから指定したHELPを表示させる
'ことができません。
'次に「ヘルプましん」を利用してINDEX付きのHELPを作成します。
'そのINDEXをVB内で指定してHELPを表示します。
01.WORDでHELP素材を作成する。
  DOC形式のファイルで、作成し、
  処理ごとの「タイトルを」「スタイル」の「見出し1」に設定する。
  必要なら、目次を作成する。
02.「doc2htmlhelp.vbs」を使用してHELPファイルを作成する
   cscript.exe doc2htmlhelp.vbs [完全パス付きのWORDファイル名] /DivDocLevel:2

詳しくは、「doc2htmlhelp.vbs」のHELPを見ること。
  DOCファイルがあるディレクトリに、DOC名のフォルダーが作成され、次に必要なファイルが
  作成されている。
03.「ヘルプましん」を使用して、HELPファイルを作成する。
  プロジェクトのフォルダー取り込みで、先ほど作成したフォルダーを指定します。
  あとは、「ヘルプましん」の説明に従って、HELPを作成します。
04.VB2005から、HELPの指定。
    'HELPプロバイダーの設定
   Public HP1 As New HelpProvider
    'HELPファイルの指定
'各フォーム内で指定します。
HP1.HelpNamespace = [完全パスのHELPファイル名]
HP1.SetShowHelp(Me, True)
HP1.SetHelpNavigator(Me, HelpNavigator.KeywordIndex)
HP1.SetHelpKeyword(Me, [HELPを作成した時のINDEX名])

ADODB SqlServer接続文字列の作成時の注意点2009/09/16 08:40

SQLServeを使用して
ADODB SqlServer接続文字列の作成時の注意点の覚書
sa で ログインする場合
'=============================
'Windows2000の(Server)場合、SQL2008、SQL2005の
Nativeクライアントをインストール出来るが、
実際にはODBCの設定が出来ないので
標準のSQLクライアントを使うしかない。

'-----------------------------------------------
Public xdb As New ADODB.Connection
dim LoginID as string
dim PWD_TXT as string 'パスワード文字列
dim XDB_NM as string 'データベース名
dim SV_NAME as string 'サーバー名
dim s as string
xdb.Mode = adModeReadWrite
xdb.CommandTimeout = 15000
'ログインIDの設定
LoginID = "TS00"
'SQLNCLI.1
'SQLOLEDB.1
'SQL2008 Nativeの場合の文字列
s = "Provider=SQLNCLI10.1;workstation id=" & LoginID & ";"
'SQL2005 Nativeの場合の文字列
s = "Provider=SQLNCLI1.1;workstation id=" & LoginID & ";"
'SQL2000 または,SQL2005,SQL2008でも使用可
s = "Provider=SQLOLEDB.1;workstation id=" & LoginID & ";"

If PWD_TXT <> "" Then
s = s & "Persist Security Info=false;User ID=sa;"
s = s & "Password=" & PWD_TXT & ";"
Else
s = s & "Persist Security Info=false;User ID=sa;"
End If
s = s & "data source=" & SV_NAME & ";"
s = s & "initial catalog=" & XDB_NM & ";"

xdb.ConnectionString = s

CrystalReportでバーコード画像を表示する方法VB62009/09/15 11:37

CrystalReportで画像を表示する方法のVB6版 覚書
'===========================================
'ローカルのアクセステーブルに印刷用のファイルを登録し
'CrystalReportで表示する
'このバーコードはフリーのMiBarcode.EXEのDDE機能を利用して
'印刷している
'=======================================
Option Explicit
'アクセスのOLEオブジェクト型のデータに登録する場合
'アクセスで表示する場合は、BITMAPをそのまま、Byte
'変数に変換して登録すればよいが、クリスタルレポートでは
'先頭にダミーバイトを挿入する必要がある。
'そのためのおまじない変数宣言
Dim CHUNK_B(98) As Byte
'BITMAPをByte変数に格納するための宣言
Dim CH_BG() As Byte

'==============================================
'データをローカルのアクセスDBに登録するルーチン
'==============================================
Private Sub OK_B_Click()
Dim i%, j%, FH%
Dim S, XDIR, strDummy As String
Dim xdb As New ADODB.Connection
Dim ds As New ADODB.Recordset
Dim TEMP As Object
XDIR = App.Path
'実行環境ディレクトリ以下のDATAディレクトリにデータベース
'を保存
S = ""
S = S & "Provider=Microsoft.Jet.OLEDB.4.0;"
S = S & "Data Source=" & App.Path & "\data\WORK.mdb;"
S = S & "Persist Security Info=False"
xdb.ConnectionString = S
xdb.Open

'クリスタルレポート上では、商品とPIMAGEの2つのテーブルを
'使用して表示させる。
'商品データの登録
S = "select * from 商品"
S = S & " where PNO=" & Xtext(SH_PNO.Text)
ds.Open S, xdb, adOpenDynamic, adLockPessimistic
On Error Resume Next
ds.MoveFirst
If Err.Number = 0 And Not ds.EOF Then
Else
ds.AddNew
End If
On Error GoTo 0
ds("PNO").Value = SH_PNO.Text
ds("名称").Value = SH_名称.Text
ds("品番").Value = SH_品番.Text
ds("型番").Value = SH_型番.Text
ds.Update
ds.Close
'----
'DDEをサポートしたバーコード表示ルーチンを使用して
'フォーム上に張り付けたPicture1にバーコードを表示させる
'ルーチン
Call OLE_DISP

SavePicture Picture1.Image, XDIR & "\QRBAR.BMP"
DoEvents
'
S = "select * from PIMAGE"
S = S & " where PNO=" & Xtext(SH_PNO.Text)
ds.Open S, xdb, adOpenDynamic, adLockPessimistic
On Error Resume Next
ds.MoveFirst
If Err.Number = 0 And Not ds.EOF Then
Else
ds.AddNew
End If
On Error GoTo 0
ds("PNO").Value = SH_PNO.Text
On Error GoTo 0
'ビットマップをバイナリでオープンして、Byte配列に読み込む
FH = FreeFile
Open XDIR & "\QRBAR.bmp" For Binary As #FH
ReDim CH_BG(LOF(FH))
Get #FH, , CH_BG
Close #FH
'画像データはOLEオブジェクト型で設定
'クリスタルレポート用に、ダミー配列を登録
ds("PIMAGE").AppendChunk (CHUNK_B)
'実際のBITMAPデータを登録
ds("PIMAGE").AppendChunk (CH_BG)

ds.Update
ds.Close
xdb.Close

End Sub
'=======================================================
'DDE機能を使用して、PicturerにバーコードBitMapを張り付ける
'=======================================================
Sub OLE_DISP()
Dim MiBar As New Mibarcd.Auto
With MiBar
.Show (0)
.Code = "" & SH_PNO.Text & "::" & SH_名称.Text & "::" & SH_型番.Text & "::" & SH_品番.Text & ";"
.CodeType = 12 'QR2"QR2"
.QRVersion = 8
.QRErrLevel = 1 '"M"
.HMargin = 5
.BarScale = 2
.CopyType = 1
.Execute
Picture1.Picture = Clipboard.GetData
End With
End Sub