<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" version="2.0">
  <channel>
    <title>vb-oboegaki blog　ＶＢ開発者の覚書</title>
    <link>http://vb-oboegaki.asablo.jp/blog/</link>
    <description/>
    <language>ja</language>
    <generator>mc 0.0</generator>
    <pubDate>Thu, 17 Sep 2009 11:23:02 +0900</pubDate>
    <item>
      <title>WindowsＳｅｒｖｅｒのリスタート</title>
      <link>http://vb-oboegaki.asablo.jp/blog/2009/09/17/4582931</link>
      <guid>http://vb-oboegaki.asablo.jp/blog/2009/09/17/4582931</guid>
      <pubDate>Thu, 17 Sep 2009 11:13:53 +0900</pubDate>
      <dcterms:modified>2009-09-17T11:23:02+09:00</dcterms:modified>
      <dcterms:created>2009-09-17T11:14:12+09:00</dcterms:created>
      <description>&amp;#39;========================================&#13;&lt;br&gt;
&amp;#39;WindowsServerのリスタート（リブート）を行います&#13;&lt;br&gt;
&amp;#39;24H運転のサーバーで、データのバックアップを行った後に&#13;&lt;br&gt;
&amp;#39;リスタート処理を行います。待ち受け処理をしているＰＲＧも&#13;&lt;br&gt;
&amp;#39;あるので、メモリをクリーンにするためにも行っています。&#13;&lt;br&gt;
&amp;#39;========================================&#13;&lt;br&gt;
&amp;#39;いくつか方法があるようです。&#13;&lt;br&gt;
&amp;#39;VBスクリプトによる方法&#13;&lt;br&gt;
&amp;#39;IISによる方法&#13;&lt;br&gt;
&amp;#39;プログラムによる方法&#13;&lt;br&gt;
&amp;#39;　　この中で使用するＤＬＬは、「ＳＡＫ図書館」にある&#13;&lt;br&gt;
&amp;#39;　　sakinfo.dll を使用します&#13;&lt;br&gt;
&amp;#39;　　『sakif110.lzh 22,247 bytes』　検索してください。&#13;&lt;br&gt;
&amp;#39;------------------------------------&#13;&lt;br&gt;
01.VBスクリプトによる方法&#13;&lt;br&gt;
　　&amp;#39;--------&#13;&lt;br&gt;
　　ＲＥＳＴＡＲＴ.ＶＢＳを手に入れます。&#13;&lt;br&gt;
　　以下のアドレスからダウンロードできるようです。&#13;&lt;br&gt;
　　&lt;a href="ftp://ftp.microsoft.com/reskit/win2000/restart.vbs"&gt;ftp://ftp.microsoft.com/reskit/win2000/restart.vbs&lt;/a&gt;&#13;&lt;br&gt;
　　&amp;#39;--------&#13;&lt;br&gt;
　　RESTART.VBSを　C:\　に登録します&#13;&lt;br&gt;
　　（パスが通ればどこでもよいみたいです）&#13;&lt;br&gt;
　　バッチファイルを作成します。&#13;&lt;br&gt;
　　（ＲＥＳＴＡＲＴ.ＶＢＳと同じ場所に）&#13;&lt;br&gt;
　　&amp;#39;-----&#13;&lt;br&gt;
　　cscript c:\restart.vbs /S サーバー名 /R&#13;&lt;br&gt;
　　&amp;#39;-----&#13;&lt;br&gt;
　　このバッチファイルをタスクに設定して、動作を確認。&#13;&lt;br&gt;
　　&amp;#39;======================&#13;&lt;br&gt;
　　&amp;#39;注意点&#13;&lt;br&gt;
　　&amp;#39;======================&#13;&lt;br&gt;
　　WindowsServer2003,2008等は、何かプログラムが起動していると&#13;&lt;br&gt;
　　このスクリプトが動作しないようです。&#13;&lt;br&gt;
　　&#13;&lt;br&gt;
&amp;#39;-------------------------------------&#13;&lt;br&gt;
02.ＩＩＳによる方法（ＩＩＳが起動している必要があります）&#13;&lt;br&gt;
&amp;#39;-------------------------------------&#13;&lt;br&gt;
　　この方法は試していません。&#13;&lt;br&gt;
　　&amp;gt; iisreset /reboot &#13;&lt;br&gt;
　　これで、リブートするようです。&#13;&lt;br&gt;
&amp;#39;-------------------------------------&#13;&lt;br&gt;
03.プログラムによる方法&#13;&lt;br&gt;
&amp;#39;-------------------------------------&#13;&lt;br&gt;
　　以下の宣言をしておきます。&#13;&lt;br&gt;
    Public Declare Function ExitWin Lib &amp;quot;sakinfo.dll&amp;quot; (ByVal mode As Long, ByVal errmsg As String) As Long&#13;&lt;br&gt;
    &amp;#39;** ExitWindowsEx 定数&#13;&lt;br&gt;
    Public Const EWX_LOGOFF = 0&#13;&lt;br&gt;
    Public Const EWX_SHUTDOWN = 1&#13;&lt;br&gt;
    Public Const EWX_REBOOT = 2&#13;&lt;br&gt;
    Public Const EWX_FORCE = 4&#13;&lt;br&gt;
    Public Const EWX_POWEROFF = 8&#13;&lt;br&gt;
&amp;#39;------------------------------&#13;&lt;br&gt;
&amp;#39;次の関数を定義して、コールすればリブートします。&#13;&lt;br&gt;
&amp;#39;------------------------------&#13;&lt;br&gt;
    Sub ReBoot_Win()&#13;&lt;br&gt;
        Dim errmsg As String&#13;&lt;br&gt;
&#13;&lt;br&gt;
        &amp;#39;** 準備&#13;&lt;br&gt;
        errmsg = Space(300)&#13;&lt;br&gt;
&#13;&lt;br&gt;
        &amp;#39;** Windows リブート&#13;&lt;br&gt;
        If ExitWin(EWX_REBOOT, errmsg) = 0 Then&#13;&lt;br&gt;
            errmsg = Left(errmsg, InStrRev(errmsg, Chr(0)) - 1)&#13;&lt;br&gt;
            MsgBox(&amp;quot;ExitWin エラー&amp;quot; &amp;amp; Chr(10) &amp;amp; Chr(10) &amp;amp; errmsg)&#13;&lt;br&gt;
        End If&#13;&lt;br&gt;
&#13;&lt;br&gt;
        &amp;#39;** 終了&#13;&lt;br&gt;
        End&#13;&lt;br&gt;
&#13;&lt;br&gt;
    End Sub&lt;br&gt;
</description>
      <dc:subject>ＰＣ</dc:subject>
      <dc:subject>VS2005</dc:subject>
      <dc:subject>VS2008</dc:subject>
    </item>
    <item>
      <title>漢字入力時に 自動的に振り仮名を取得</title>
      <link>http://vb-oboegaki.asablo.jp/blog/2009/09/17/4582861</link>
      <guid>http://vb-oboegaki.asablo.jp/blog/2009/09/17/4582861</guid>
      <pubDate>Thu, 17 Sep 2009 09:41:40 +0900</pubDate>
      <dcterms:modified>2009-09-17T09:54:30+09:00</dcterms:modified>
      <dcterms:created>2009-09-17T09:54:00+09:00</dcterms:created>
      <description>&amp;#39;=========================================&#13;&lt;br&gt;
&amp;#39;漢字入力時にそのカナ入力を取得して、&#13;&lt;br&gt;
&amp;#39;振り仮名として取得します。このルーチンは&#13;&lt;br&gt;
&amp;#39;  ( み～くんパパの仕事部屋 VB.NETサンプル)&#13;&lt;br&gt;
&amp;#39; (  [IME]ふりがな取得クラス)&#13;&lt;br&gt;
&amp;#39;を使用しています。&#13;&lt;br&gt;
&amp;#39;=========================================&#13;&lt;br&gt;
01.まず、「IMEComp.vb」を取得して、プロジェクトに追加します。&#13;&lt;br&gt;
　　( み～くんパパの仕事部屋 VB.NETサンプル)を検索してください。&#13;&lt;br&gt;
  フォームには２つのＴｅｘｔＢｏｘを追加します&#13;&lt;br&gt;
　SH_名称&#13;&lt;br&gt;
  SH_振り仮名&#13;&lt;br&gt;
&#13;&lt;br&gt;
&amp;#39;-------&#13;&lt;br&gt;
02.プロジェクトで以下の宣言をします。&#13;&lt;br&gt;
Public Class サンプルＰＲＧ&#13;&lt;br&gt;
    Private WithEvents clsTextBox1Furi As IMEComp.Furigana&#13;&lt;br&gt;
&amp;#39;-------&#13;&lt;br&gt;
03.フォームのＬｏａｄルーチンに以下を追加します。&#13;&lt;br&gt;
    Private Sub サンプルＰＲＧ_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load&#13;&lt;br&gt;
        clsTextBox1Furi = New IMEComp.Furigana(Me.SH_名称)&#13;&lt;br&gt;
&amp;#39;--------&#13;&lt;br&gt;
04.以下のルーチンを追加します。&#13;&lt;br&gt;
    Private Sub clsTextBox1Furi_Converted(ByVal sender As Object, ByVal e As IMEComp.ConvertedEventArgs) Handles clsTextBox1Furi.Converted&#13;&lt;br&gt;
    &#13;&lt;br&gt;
        If sender.Equals(SH_名称) Then&#13;&lt;br&gt;
            If IsNarrow(e.FuriganaString) Then SH_振り仮名.Text &amp;amp;= e.FuriganaString&#13;&lt;br&gt;
        End If&#13;&lt;br&gt;
&#13;&lt;br&gt;
    End Sub&lt;br&gt;
</description>
      <dc:subject>ＰＣ</dc:subject>
      <dc:subject>VS2005</dc:subject>
      <dc:subject>VS2008</dc:subject>
    </item>
    <item>
      <title>ＶＢで作成したプログラム用のＨＥＬPの作り方</title>
      <link>http://vb-oboegaki.asablo.jp/blog/2009/09/16/4582029</link>
      <guid>http://vb-oboegaki.asablo.jp/blog/2009/09/16/4582029</guid>
      <pubDate>Wed, 16 Sep 2009 14:50:41 +0900</pubDate>
      <dcterms:modified>2009-09-16T14:54:34+09:00</dcterms:modified>
      <dcterms:created>2009-09-16T14:52:39+09:00</dcterms:created>
      <description>VBで開発したプログラム用のＨＥＬPファイルを作成します。&#13;&lt;br&gt;
&amp;#39;素材はＷＯＲＤのＤＯＣ形式で作成します。&#13;&lt;br&gt;
&amp;#39;次にフリーの「doc2htmlhelp.vbs」を使用して、元のＨＥＬPファイルを作成します。&#13;&lt;br&gt;
&amp;#39;ただしこのＨＥＬＰには、ＩＮＤＥＸが付いていないので、ＶＢから指定したＨＥＬＰを表示させる&#13;&lt;br&gt;
&amp;#39;ことができません。&#13;&lt;br&gt;
&amp;#39;次に「ヘルプましん」を利用してＩＮＤＥＸ付きのＨＥＬＰを作成します。&#13;&lt;br&gt;
&amp;#39;そのＩＮＤＥＸをＶＢ内で指定してＨＥＬPを表示します。&#13;&lt;br&gt;
01.ＷＯＲＤでＨＥＬＰ素材を作成する。&#13;&lt;br&gt;
　　ＤＯＣ形式のファイルで、作成し、&#13;&lt;br&gt;
　　処理ごとの「タイトルを」「スタイル」の「見出し1」に設定する。&#13;&lt;br&gt;
　　必要なら、目次を作成する。&#13;&lt;br&gt;
02.「doc2htmlhelp.vbs」を使用してＨＥＬＰファイルを作成する&#13;&lt;br&gt;
　　 cscript.exe doc2htmlhelp.vbs [完全パス付きのＷＯＲDファイル名] /DivDocLevel:2&#13;&lt;br&gt;
&#13;&lt;br&gt;
      詳しくは、「doc2htmlhelp.vbs」のＨＥＬＰを見ること。&#13;&lt;br&gt;
　　ＤＯＣファイルがあるディレクトリに、ＤＯＣ名のフォルダーが作成され、次に必要なファイルが&#13;&lt;br&gt;
　　作成されている。&#13;&lt;br&gt;
03.「ヘルプましん」を使用して、ＨＥＬＰファイルを作成する。&#13;&lt;br&gt;
　　プロジェクトのフォルダー取り込みで、先ほど作成したフォルダーを指定します。&#13;&lt;br&gt;
　　あとは、「ヘルプましん」の説明に従って、ＨＥＬPを作成します。&#13;&lt;br&gt;
04.ＶＢ2005から、ＨＥＬＰの指定。&#13;&lt;br&gt;
　　　　&amp;#39;ＨＥＬＰプロバイダーの設定&#13;&lt;br&gt;
　　    Public HP1 As New HelpProvider&#13;&lt;br&gt;
　　　 &amp;#39;ＨＥＬＰファイルの指定 &#13;&lt;br&gt;
        &amp;#39;各フォーム内で指定します。&#13;&lt;br&gt;
        HP1.HelpNamespace = [完全パスのＨＥＬＰファイル名]&#13;&lt;br&gt;
        HP1.SetShowHelp(Me, True)&#13;&lt;br&gt;
        HP1.SetHelpNavigator(Me, HelpNavigator.KeywordIndex)&#13;&lt;br&gt;
        HP1.SetHelpKeyword(Me, [ＨＥＬＰを作成した時のＩＮＤEX名])&lt;br&gt;
</description>
      <dc:subject>ＰＣ</dc:subject>
      <dc:subject>VB6</dc:subject>
      <dc:subject>VS2005</dc:subject>
      <dc:subject>VS2008</dc:subject>
    </item>
    <item>
      <title>ADODB SqlServer接続文字列の作成時の注意点</title>
      <link>http://vb-oboegaki.asablo.jp/blog/2009/09/16/4581670</link>
      <guid>http://vb-oboegaki.asablo.jp/blog/2009/09/16/4581670</guid>
      <pubDate>Wed, 16 Sep 2009 08:40:49 +0900</pubDate>
      <dcterms:modified>2009-09-16T08:52:49+09:00</dcterms:modified>
      <dcterms:created>2009-09-16T08:52:49+09:00</dcterms:created>
      <description>SQLServeを使用して&#13;&lt;br&gt;
ADODB SqlServer接続文字列の作成時の注意点の覚書&#13;&lt;br&gt;
sa で　ログインする場合&#13;&lt;br&gt;
&amp;#39;=============================&#13;&lt;br&gt;
&amp;#39;Windows2000の(Server)場合、ＳＱＬ2008、ＳＱＬ2005の&#13;&lt;br&gt;
Nativeクライアントをｲﾝｽﾄｰﾙ出来るが、&#13;&lt;br&gt;
実際にはＯＤＢCの設定が出来ないので&#13;&lt;br&gt;
標準のＳＱＬクライアントを使うしかない。&#13;&lt;br&gt;
&#13;&lt;br&gt;
&amp;#39;-----------------------------------------------&#13;&lt;br&gt;
Public xdb As New ADODB.Connection&#13;&lt;br&gt;
dim LoginID as string &#13;&lt;br&gt;
dim PWD_TXT as string  &amp;#39;パスワード文字列&#13;&lt;br&gt;
dim XDB_NM as string  &amp;#39;データベース名&#13;&lt;br&gt;
dim SV_NAME as string &amp;#39;サーバー名&#13;&lt;br&gt;
dim s as string&#13;&lt;br&gt;
    xdb.Mode = adModeReadWrite&#13;&lt;br&gt;
    xdb.CommandTimeout = 15000&#13;&lt;br&gt;
    &amp;#39;ログインＩＤの設定&#13;&lt;br&gt;
    LoginID = &amp;quot;TS00&amp;quot;&#13;&lt;br&gt;
        &amp;#39;SQLNCLI.1&#13;&lt;br&gt;
        &amp;#39;SQLOLEDB.1&#13;&lt;br&gt;
       &amp;#39;SQL2008 Nativeの場合の文字列&#13;&lt;br&gt;
        s = &amp;quot;Provider=SQLNCLI10.1;workstation id=&amp;quot; &amp;amp; LoginID &amp;amp; &amp;quot;;&amp;quot;&#13;&lt;br&gt;
       &amp;#39;SQL2005 Nativeの場合の文字列&#13;&lt;br&gt;
        s = &amp;quot;Provider=SQLNCLI1.1;workstation id=&amp;quot; &amp;amp; LoginID &amp;amp; &amp;quot;;&amp;quot;&#13;&lt;br&gt;
       &amp;#39;SQL2000 または,SQL2005,SQL2008でも使用可&#13;&lt;br&gt;
        s = &amp;quot;Provider=SQLOLEDB.1;workstation id=&amp;quot; &amp;amp; LoginID &amp;amp; &amp;quot;;&amp;quot;&#13;&lt;br&gt;
&#13;&lt;br&gt;
        If PWD_TXT &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&#13;&lt;br&gt;
            s = s &amp;amp; &amp;quot;Persist Security Info=false;User ID=sa;&amp;quot;&#13;&lt;br&gt;
            s = s &amp;amp; &amp;quot;Password=&amp;quot; &amp;amp; PWD_TXT &amp;amp; &amp;quot;;&amp;quot;&#13;&lt;br&gt;
        Else&#13;&lt;br&gt;
            s = s &amp;amp; &amp;quot;Persist Security Info=false;User ID=sa;&amp;quot;&#13;&lt;br&gt;
        End If&#13;&lt;br&gt;
        s = s &amp;amp; &amp;quot;data source=&amp;quot; &amp;amp; SV_NAME &amp;amp; &amp;quot;;&amp;quot;&#13;&lt;br&gt;
        s = s &amp;amp; &amp;quot;initial catalog=&amp;quot; &amp;amp; XDB_NM &amp;amp; &amp;quot;;&amp;quot;&#13;&lt;br&gt;
    &#13;&lt;br&gt;
    xdb.ConnectionString = s&lt;br&gt;
</description>
      <dc:subject>ADODB</dc:subject>
      <dc:subject>ＰＣ</dc:subject>
      <dc:subject>VB6</dc:subject>
      <dc:subject>VS2005</dc:subject>
      <dc:subject>VS2008</dc:subject>
    </item>
    <item>
      <title>CrystalReportでバーコード画像を表示する方法ＶＢ6</title>
      <link>http://vb-oboegaki.asablo.jp/blog/2009/09/15/4580513</link>
      <guid>http://vb-oboegaki.asablo.jp/blog/2009/09/15/4580513</guid>
      <pubDate>Tue, 15 Sep 2009 11:37:46 +0900</pubDate>
      <dcterms:modified>2009-09-15T12:05:57+09:00</dcterms:modified>
      <dcterms:created>2009-09-15T11:42:56+09:00</dcterms:created>
      <description>CrystalReportで画像を表示する方法のＶＢ6版　覚書&#13;&lt;br&gt;
&amp;#39;===========================================&#13;&lt;br&gt;
&amp;#39;ローカルのアクセステーブルに印刷用のファイルを登録し&#13;&lt;br&gt;
&amp;#39;CrystalReportで表示する&#13;&lt;br&gt;
&amp;#39;このバーコードはフリーのMiBarcode.EXEのＤＤＥ機能を利用して&#13;&lt;br&gt;
&amp;#39;印刷している&#13;&lt;br&gt;
&amp;#39;=======================================&#13;&lt;br&gt;
Option Explicit&#13;&lt;br&gt;
&amp;#39;アクセスのＯＬＥオブジェクト型のデータに登録する場合&#13;&lt;br&gt;
&amp;#39;アクセスで表示する場合は、ＢＩＴMAPをそのまま、Ｂｙｔｅ&#13;&lt;br&gt;
&amp;#39;変数に変換して登録すればよいが、クリスタルレポートでは&#13;&lt;br&gt;
&amp;#39;先頭にダミーバイトを挿入する必要がある。&#13;&lt;br&gt;
&amp;#39;そのためのおまじない変数宣言&#13;&lt;br&gt;
Dim CHUNK_B(98) As Byte&#13;&lt;br&gt;
&amp;#39;BITMAPをＢｙｔｅ変数に格納するための宣言&#13;&lt;br&gt;
Dim CH_BG() As Byte&#13;&lt;br&gt;
&#13;&lt;br&gt;
&amp;#39;==============================================&#13;&lt;br&gt;
&amp;#39;データをローカルのアクセスＤＢに登録するルーチン&#13;&lt;br&gt;
&amp;#39;==============================================&#13;&lt;br&gt;
Private Sub OK_B_Click()&#13;&lt;br&gt;
    Dim i%, j%, FH%&#13;&lt;br&gt;
    Dim S, XDIR, strDummy As String&#13;&lt;br&gt;
    Dim xdb As New ADODB.Connection&#13;&lt;br&gt;
    Dim ds As New ADODB.Recordset&#13;&lt;br&gt;
    Dim TEMP As Object&#13;&lt;br&gt;
    XDIR = App.Path&#13;&lt;br&gt;
    &amp;#39;実行環境ディレクトリ以下のＤＡＴＡディレクトリにデータベース&#13;&lt;br&gt;
    &amp;#39;を保存&#13;&lt;br&gt;
    S = &amp;quot;&amp;quot;&#13;&lt;br&gt;
    S = S &amp;amp; &amp;quot;Provider=Microsoft.Jet.OLEDB.4.0;&amp;quot;&#13;&lt;br&gt;
    S = S &amp;amp; &amp;quot;Data Source=&amp;quot; &amp;amp; App.Path &amp;amp; &amp;quot;\data\WORK.mdb;&amp;quot;&#13;&lt;br&gt;
    S = S &amp;amp; &amp;quot;Persist Security Info=False&amp;quot;&#13;&lt;br&gt;
    xdb.ConnectionString = S&#13;&lt;br&gt;
    xdb.Open&#13;&lt;br&gt;
    &#13;&lt;br&gt;
    &amp;#39;クリスタルレポート上では、商品とＰＩＭAGEの２つのテーブルを&#13;&lt;br&gt;
    &amp;#39;使用して表示させる。&#13;&lt;br&gt;
    &amp;#39;商品データの登録&#13;&lt;br&gt;
    S = &amp;quot;select * from 商品&amp;quot;&#13;&lt;br&gt;
    S = S &amp;amp; &amp;quot; where PNO=&amp;quot; &amp;amp; Xtext(SH_PNO.Text)&#13;&lt;br&gt;
    ds.Open S, xdb, adOpenDynamic, adLockPessimistic&#13;&lt;br&gt;
    On Error Resume Next&#13;&lt;br&gt;
    ds.MoveFirst&#13;&lt;br&gt;
    If Err.Number = 0 And Not ds.EOF Then&#13;&lt;br&gt;
    Else&#13;&lt;br&gt;
        ds.AddNew&#13;&lt;br&gt;
    End If&#13;&lt;br&gt;
    On Error GoTo 0&#13;&lt;br&gt;
    ds(&amp;quot;PNO&amp;quot;).Value = SH_PNO.Text&#13;&lt;br&gt;
    ds(&amp;quot;名称&amp;quot;).Value = SH_名称.Text&#13;&lt;br&gt;
    ds(&amp;quot;品番&amp;quot;).Value = SH_品番.Text&#13;&lt;br&gt;
    ds(&amp;quot;型番&amp;quot;).Value = SH_型番.Text&#13;&lt;br&gt;
    ds.Update&#13;&lt;br&gt;
    ds.Close&#13;&lt;br&gt;
    &amp;#39;----&#13;&lt;br&gt;
    &amp;#39;ＤＤＥをサポートしたバーコード表示ルーチンを使用して&#13;&lt;br&gt;
    &amp;#39;フォーム上に張り付けたＰｉｃｔｕｒｅ1にバーコードを表示させる&#13;&lt;br&gt;
    &amp;#39;ルーチン&#13;&lt;br&gt;
    Call OLE_DISP&#13;&lt;br&gt;
    &#13;&lt;br&gt;
    SavePicture Picture1.Image, XDIR &amp;amp; &amp;quot;\QRBAR.BMP&amp;quot;&#13;&lt;br&gt;
    DoEvents&#13;&lt;br&gt;
    &amp;#39;&#13;&lt;br&gt;
    S = &amp;quot;select * from PIMAGE&amp;quot;&#13;&lt;br&gt;
    S = S &amp;amp; &amp;quot; where PNO=&amp;quot; &amp;amp; Xtext(SH_PNO.Text)&#13;&lt;br&gt;
    ds.Open S, xdb, adOpenDynamic, adLockPessimistic&#13;&lt;br&gt;
    On Error Resume Next&#13;&lt;br&gt;
    ds.MoveFirst&#13;&lt;br&gt;
    If Err.Number = 0 And Not ds.EOF Then&#13;&lt;br&gt;
    Else&#13;&lt;br&gt;
        ds.AddNew&#13;&lt;br&gt;
    End If&#13;&lt;br&gt;
    On Error GoTo 0&#13;&lt;br&gt;
    ds(&amp;quot;PNO&amp;quot;).Value = SH_PNO.Text&#13;&lt;br&gt;
    On Error GoTo 0&#13;&lt;br&gt;
    &amp;#39;ビットマップをバイナリでオープンして、Ｂｙｔｅ配列に読み込む&#13;&lt;br&gt;
    FH = FreeFile&#13;&lt;br&gt;
    Open XDIR &amp;amp; &amp;quot;\QRBAR.bmp&amp;quot; For Binary As #FH&#13;&lt;br&gt;
    ReDim CH_BG(LOF(FH))&#13;&lt;br&gt;
    Get #FH, , CH_BG&#13;&lt;br&gt;
    Close #FH&#13;&lt;br&gt;
    &amp;#39;画像データはＯＬＥオブジェクト型で設定&#13;&lt;br&gt;
    &amp;#39;クリスタルレポート用に、ダミー配列を登録&#13;&lt;br&gt;
    ds(&amp;quot;PIMAGE&amp;quot;).AppendChunk (CHUNK_B)&#13;&lt;br&gt;
    &amp;#39;実際のＢＩＴＭＡＰデータを登録&#13;&lt;br&gt;
    ds(&amp;quot;PIMAGE&amp;quot;).AppendChunk (CH_BG)&#13;&lt;br&gt;
    &#13;&lt;br&gt;
    ds.Update&#13;&lt;br&gt;
    ds.Close&#13;&lt;br&gt;
    xdb.Close&#13;&lt;br&gt;
    &#13;&lt;br&gt;
End Sub&#13;&lt;br&gt;
&amp;#39;=======================================================&#13;&lt;br&gt;
&amp;#39;DDE機能を使用して、PicturerにバーコードＢｉｔMapを張り付ける&#13;&lt;br&gt;
&amp;#39;=======================================================&#13;&lt;br&gt;
Sub OLE_DISP()&#13;&lt;br&gt;
    Dim MiBar As New Mibarcd.Auto&#13;&lt;br&gt;
    With MiBar&#13;&lt;br&gt;
        .Show (0)&#13;&lt;br&gt;
        .Code = &amp;quot;&amp;quot; &amp;amp; SH_PNO.Text &amp;amp; &amp;quot;::&amp;quot; &amp;amp; SH_名称.Text &amp;amp; &amp;quot;::&amp;quot; &amp;amp; SH_型番.Text &amp;amp; &amp;quot;::&amp;quot; &amp;amp; SH_品番.Text &amp;amp; &amp;quot;;&amp;quot;&#13;&lt;br&gt;
        .CodeType = 12 &amp;#39;QR2&amp;quot;QR2&amp;quot;&#13;&lt;br&gt;
        .QRVersion = 8&#13;&lt;br&gt;
        .QRErrLevel = 1 &amp;#39;&amp;quot;M&amp;quot;&#13;&lt;br&gt;
        .HMargin = 5&#13;&lt;br&gt;
        .BarScale = 2&#13;&lt;br&gt;
        .CopyType = 1&#13;&lt;br&gt;
        .Execute&#13;&lt;br&gt;
        Picture1.Picture = Clipboard.GetData&#13;&lt;br&gt;
 End With&#13;&lt;br&gt;
End Sub&lt;br&gt;
</description>
      <dc:subject>バーコード</dc:subject>
      <dc:subject>CrystalReport</dc:subject>
      <dc:subject>DDE</dc:subject>
      <dc:subject>ＰＣ</dc:subject>
      <dc:subject>VB6</dc:subject>
    </item>
    <item>
      <title>CrystalReportで画像を表示する方法</title>
      <link>http://vb-oboegaki.asablo.jp/blog/2009/09/15/4580508</link>
      <guid>http://vb-oboegaki.asablo.jp/blog/2009/09/15/4580508</guid>
      <pubDate>Tue, 15 Sep 2009 11:15:53 +0900</pubDate>
      <dcterms:modified>2009-09-15T12:06:08+09:00</dcterms:modified>
      <dcterms:created>2009-09-15T11:34:11+09:00</dcterms:created>
      <description>ＶＳ2008でCrystalReportにバーコード画像を表示する場合の覚書&#13;&lt;br&gt;
&amp;#39;デンソーウェーブのバーコードライブラリを使用している&#13;&lt;br&gt;
&amp;#39;VS2005でも同様に使用できると思われる&#13;&lt;br&gt;
&amp;#39;======================================================&#13;&lt;br&gt;
&amp;#39;印刷用のルーチン&#13;&lt;br&gt;
&amp;#39;======================================================&#13;&lt;br&gt;
    Sub PRLOOP(ByVal S99 As String, ByVal S00 As String, ByVal S11 As String)&#13;&lt;br&gt;
        Dim crExportOptions As CrystalDecisions.Shared.ExportOptions&#13;&lt;br&gt;
        Dim crDiskFileDestinationOptions As CrystalDecisions.Shared.DiskFileDestinationOptions&#13;&lt;br&gt;
        Dim fm As New PrintBase&#13;&lt;br&gt;
        Dim SQLC As New SqlClient.SqlConnection&#13;&lt;br&gt;
        Dim TR, DEF_P, S, S0, S9, PR_PATH, Fname, PPJ, D_NM, NOW_PRT As String&#13;&lt;br&gt;
        Dim i%&#13;&lt;br&gt;
        Dim DsP As New DataSet&#13;&lt;br&gt;
        With fm&#13;&lt;br&gt;
             &amp;#39;レポートファイルの実際の場所の特定&#13;&lt;br&gt;
             &amp;#39;実行時のディレクトリ以下の「ＲＰＴ」ディレクトリに格納&#13;&lt;br&gt;
             &amp;#39;&#13;&lt;br&gt;
            On Error GoTo 0&#13;&lt;br&gt;
            PPJ = AppName&#13;&lt;br&gt;
            i = InStr(AppName, &amp;quot;.&amp;quot;)&#13;&lt;br&gt;
            If i &amp;gt; 0 Then&#13;&lt;br&gt;
                PPJ = Mid(PPJ, 1, i - 1)&#13;&lt;br&gt;
            End If&#13;&lt;br&gt;
            S = AppPath&#13;&lt;br&gt;
            i = InStr(UCase(S), UCase(&amp;quot;\BIN\&amp;quot;))&#13;&lt;br&gt;
            If i &amp;gt; 0 Then&#13;&lt;br&gt;
                &amp;#39;DEBUG&#13;&lt;br&gt;
                S = Mid(AppPath, 1, i - 0) &amp;amp; &amp;quot;RPT\&amp;quot;&#13;&lt;br&gt;
            Else&#13;&lt;br&gt;
                S = AppPath &amp;amp; &amp;quot;\RPT\&amp;quot;&#13;&lt;br&gt;
            End If&#13;&lt;br&gt;
            &amp;#39;i = InStr(UCase(S), UCase(CStr(PPJ)))&#13;&lt;br&gt;
            &amp;#39;If i &amp;gt; 0 Then&#13;&lt;br&gt;
            &amp;#39;S = Mid(S, 1, i - 1) &amp;amp; PPJ &amp;amp; &amp;quot;\RPT\&amp;quot;&#13;&lt;br&gt;
            &amp;#39;End If&#13;&lt;br&gt;
            If Microsoft.VisualBasic.Right(S, 1) &amp;lt;&amp;gt; &amp;quot;\&amp;quot; Then S = S &amp;amp; &amp;quot;\&amp;quot;&#13;&lt;br&gt;
&#13;&lt;br&gt;
            PR_PATH = S&#13;&lt;br&gt;
            Fname = &amp;quot;&amp;quot;&#13;&lt;br&gt;
            D_NM = &amp;quot;&amp;quot;&#13;&lt;br&gt;
            S9 = &amp;quot;&amp;quot;&#13;&lt;br&gt;
            Fname = S &amp;amp; &amp;quot;QRTEST.rpt&amp;quot;&#13;&lt;br&gt;
            D_NM = &amp;quot;TESTDATA&amp;quot;&#13;&lt;br&gt;
&#13;&lt;br&gt;
            fm.Cr1.Load(Fname)&#13;&lt;br&gt;
            &amp;#39;s = Cr1.FilePath&#13;&lt;br&gt;
&#13;&lt;br&gt;
            On Error Resume Next&#13;&lt;br&gt;
            S = &amp;quot;&amp;quot;&#13;&lt;br&gt;
            On Error GoTo 0&#13;&lt;br&gt;
            Dim tb2 As New DataTable&#13;&lt;br&gt;
            DsP.Tables.Add(tb2)&#13;&lt;br&gt;
            clmSet(&amp;quot;PNO&amp;quot;, DsP, &amp;quot;System.String&amp;quot;)&#13;&lt;br&gt;
　　　　　&amp;#39;イメージはＢｙｔｅ配列で格納&#13;&lt;br&gt;
            clmSet(&amp;quot;PIMAGE&amp;quot;, DsP, &amp;quot;System.Byte[]&amp;quot;)&#13;&lt;br&gt;
            clmSet(&amp;quot;HNO&amp;quot;, DsP, &amp;quot;System.String&amp;quot;)&#13;&lt;br&gt;
　　　　　&amp;#39;印刷用テーブルにカラムをセット&#13;&lt;br&gt;
            fm.CR0.ReportSource = fm.Cr1&#13;&lt;br&gt;
            &amp;#39;------&#13;&lt;br&gt;
            For i = 1 To 5&#13;&lt;br&gt;
                Dim rr As DataRow = tb2.NewRow&#13;&lt;br&gt;
                S0 = nFormat(i, &amp;quot;000&amp;quot;)&#13;&lt;br&gt;
                rr(&amp;quot;PNO&amp;quot;) = S0&#13;&lt;br&gt;
　　　　　　　&amp;#39;ＱＲコードは改行も受け付ける&#13;&lt;br&gt;
                S = S0 &amp;amp; &amp;quot;//0900-234&amp;quot; &amp;amp; vbCrLf&#13;&lt;br&gt;
                S = S &amp;amp; &amp;quot;漢字テスト&amp;quot; &amp;amp; vbCrLf&#13;&lt;br&gt;
                S = S &amp;amp; &amp;quot;品名ＯＫ&amp;quot; &amp;amp; Format(Now, &amp;quot;yyyy/MM/dd&amp;quot;) &amp;amp; vbCrLf&#13;&lt;br&gt;
                rr(&amp;quot;HNO&amp;quot;) = S&#13;&lt;br&gt;
                Dim BB As New Bitmap(300, 300)&#13;&lt;br&gt;
&#13;&lt;br&gt;
&#13;&lt;br&gt;
                Dim memstream As MemoryStream = New MemoryStream&#13;&lt;br&gt;
&#13;&lt;br&gt;
                Call QRDISP(S, BB)&#13;&lt;br&gt;
                PictureBox1.Image = BB&#13;&lt;br&gt;
                Dim byteData As Byte()&#13;&lt;br&gt;
                BB.Save(memstream, Imaging.ImageFormat.Bmp)&#13;&lt;br&gt;
                byteData = memstream.ToArray&#13;&lt;br&gt;
&#13;&lt;br&gt;
                rr(&amp;quot;PIMAGE&amp;quot;) = byteData&#13;&lt;br&gt;
                DsP.Tables(0).Rows.Add(rr)&#13;&lt;br&gt;
                memstream.Close()&#13;&lt;br&gt;
            Next&#13;&lt;br&gt;
&#13;&lt;br&gt;
            &amp;#39;   &#13;&lt;br&gt;
            If DsP.Tables(0).Rows.Count &amp;gt; 0 Then&#13;&lt;br&gt;
&#13;&lt;br&gt;
                Dim sds As New DataSet&#13;&lt;br&gt;
&#13;&lt;br&gt;
                Dim clm As New DataColumn&#13;&lt;br&gt;
                &amp;#39;===============================================&#13;&lt;br&gt;
                DsP.Tables(0).TableName = D_NM&#13;&lt;br&gt;
                .Cr1.Database.Tables(D_NM).SetDataSource(DsP.Tables(D_NM))&#13;&lt;br&gt;
                &amp;#39;===============================================&#13;&lt;br&gt;
&#13;&lt;br&gt;
&#13;&lt;br&gt;
                .CR0.Text = &amp;quot;一覧表&amp;quot;&#13;&lt;br&gt;
&#13;&lt;br&gt;
                .CR0.RefreshReport()&#13;&lt;br&gt;
&#13;&lt;br&gt;
                .Width = Me.Width&#13;&lt;br&gt;
                .Height = Me.Height&#13;&lt;br&gt;
                .Top = Me.Top&#13;&lt;br&gt;
                .Left = Me.Left&#13;&lt;br&gt;
                .CR0.DisplayGroupTree = False&#13;&lt;br&gt;
                .CR0.ShowGroupTreeButton = False&#13;&lt;br&gt;
                .CR0.Left = 0&#13;&lt;br&gt;
                .CR0.Top = 0&#13;&lt;br&gt;
                .CR0.DisplayBackgroundEdge = True&#13;&lt;br&gt;
                TR = &amp;quot;&amp;quot;&#13;&lt;br&gt;
                S = Prt_GET_REG(&amp;quot;NO04&amp;quot;, TR)&#13;&lt;br&gt;
                &amp;#39;デフォルトプリンターの確認&#13;&lt;br&gt;
                DEF_P = Get_Def_Printer()&#13;&lt;br&gt;
                If S = &amp;quot;&amp;quot; Then&#13;&lt;br&gt;
                    .Cr1.PrintOptions.PrinterName = DEF_P&#13;&lt;br&gt;
                Else&#13;&lt;br&gt;
                    .Cr1.PrintOptions.PrinterName = S&#13;&lt;br&gt;
                    Call Set_Printer(S)&#13;&lt;br&gt;
                End If&#13;&lt;br&gt;
                NOW_PRT = .Cr1.PrintOptions.PrinterName&#13;&lt;br&gt;
                .Cr1.PrintOptions.PaperSize = CrystalDecisions.[Shared].PaperSize.PaperA4&#13;&lt;br&gt;
                .Cr1.PrintOptions.PaperOrientation = CrystalDecisions.[Shared].PaperOrientation.Landscape &amp;#39;= CrystalDecisions.[Shared].PaperOrientation.Landscape&#13;&lt;br&gt;
                .CR0.Width = fm.Width - 0&#13;&lt;br&gt;
                .CR0.Height = fm.Height &amp;#39;- Me.STAT.Height&#13;&lt;br&gt;
                .CR0.Visible = True&#13;&lt;br&gt;
                .CR0.ShowCloseButton = True&#13;&lt;br&gt;
                .Text = &amp;quot;一覧表表示印刷&amp;quot;&#13;&lt;br&gt;
                .Top = Me.Top&#13;&lt;br&gt;
                .Left = Me.Left&#13;&lt;br&gt;
                .WindowState = FormWindowState.Maximized&#13;&lt;br&gt;
&#13;&lt;br&gt;
                Me.Visible = False&#13;&lt;br&gt;
                .ShowDialog(Me)&#13;&lt;br&gt;
                Me.Visible = True&#13;&lt;br&gt;
                &amp;#39;もしデフォルトプリンターに変更があれば元に戻す。&#13;&lt;br&gt;
                If NOW_PRT &amp;lt;&amp;gt; DEF_P Then&#13;&lt;br&gt;
                    On Error Resume Next&#13;&lt;br&gt;
                    Call Set_Printer(DEF_P)&#13;&lt;br&gt;
                    On Error GoTo 0&#13;&lt;br&gt;
                End If&#13;&lt;br&gt;
            Else&#13;&lt;br&gt;
                MsgBox(&amp;quot;該当するデータはありません。&amp;quot;)&#13;&lt;br&gt;
            End If&#13;&lt;br&gt;
&#13;&lt;br&gt;
        End With&#13;&lt;br&gt;
&#13;&lt;br&gt;
    End Sub&#13;&lt;br&gt;
&amp;#39;==========================================================&#13;&lt;br&gt;
&amp;#39;DataSetにカラムを追加するサブルーチン&#13;&lt;br&gt;
&amp;#39;==========================================================&#13;&lt;br&gt;
    Sub clmSet(ByVal nm As String, ByVal Dsp As DataSet, ByVal Tp As String)&#13;&lt;br&gt;
        Dim clm As New DataColumn&#13;&lt;br&gt;
        clm.ColumnName = nm&#13;&lt;br&gt;
        clm.DataType = Type.GetType(Tp)&#13;&lt;br&gt;
        If InStr(UCase(Tp), &amp;quot;STRING&amp;quot;) &amp;gt; 0 Then&#13;&lt;br&gt;
            clm.DefaultValue = &amp;quot;&amp;quot;&#13;&lt;br&gt;
        Else&#13;&lt;br&gt;
            clm.DefaultValue = DBNull.Value&#13;&lt;br&gt;
        End If&#13;&lt;br&gt;
        Dsp.Tables(0).Columns.Add(clm)&#13;&lt;br&gt;
&#13;&lt;br&gt;
    End Sub&#13;&lt;br&gt;
&amp;#39;=======================================================&#13;&lt;br&gt;
&amp;#39;QRコードをビットマップに表示するルーチン&#13;&lt;br&gt;
&amp;#39;=======================================================&#13;&lt;br&gt;
    Sub QRDISP(ByVal QR_S As String, ByVal PP As Bitmap)&#13;&lt;br&gt;
        Dim bc1 As System.DotNetBarcode = New System.DotNetBarcode&#13;&lt;br&gt;
        Dim g As Graphics = Graphics.FromImage(PP)&#13;&lt;br&gt;
        g.Clear(Color.White)&#13;&lt;br&gt;
&#13;&lt;br&gt;
        bc1.Type = System.DotNetBarcode.Types.QRCode&#13;&lt;br&gt;
        bc1.PrintCheckDigitChar = True&#13;&lt;br&gt;
        bc1.WriteBar(QR_S, 0, 0, PP.Width, PP.Height, g)&#13;&lt;br&gt;
    End Sub&lt;br&gt;
</description>
      <dc:subject>バーコード</dc:subject>
      <dc:subject>CrystalReport</dc:subject>
      <dc:subject>ＰＣ</dc:subject>
      <dc:subject>VS2005</dc:subject>
    </item>
  </channel>
</rss>
