株式会社テクナレッジ

製品技術情報 (最終更新日:2018/10/11)




リバースツールが動作しない

ER-Builderの最初のセットアップではVC++ 8.0ランタイムDLLが含まれていませんでした。 VC++ 8.0ランタイムDLLが無いPCではリバースツールが起動でませんでした。 2007/5/16以降のER-BuilderパッケージにはVC++ 8.0ランタイムも インストールパッケージに含めました。追加されたファイルはmsvcr80.dllとmsvcm80.dllの2ファイルです。


Oracle Instant Clientでの動作について

Oracle Instant Client を利用する場合には接続文字列として以下のように入力します。
	//server_name:1521/ORCL
server_nameの部分はIPアドレスを指定することが出来ます。1521はデフォルトポート番号です。


Windows Mobile 5.0対応について

Windows Mobile 5.0は.NET compact framework 2.0および1.0が動作します。(以下CFと略) CF 1.0をご利用の場合はVBMan Components for RS-232C/CF 5.1をご利用いただけます。 CF 2.0をご利用の場合はVBMan Components for RS-232C/CF 6.0をご利用いただけます。 以下はマイクロソフトの参考ページです。
マイクロソフト参考ページ


Windows Mobile 2003対応について

Windows Mobile 2003は.NET Compact Framework 2.0が動作しますのでVBMan Components for RS-232C/CF 6.0をご利用いただけます。


ファックス通信速度設定について

特定の送り先への送信が失敗するような場合、ファックスモデムと送信先のファックス機の相性や 通信回線のノイズが影響していると思われます。ファックスモデムの通信能力に依存している場合も多く、 ファックスモデムのサポートには以下のような記載があり通信速度を下げることを試すことを記載していることもあります。
オムロン様のモデムサポートページ
NetMan Fax側での通信速度は初期値14400bps固定ですが以下のような設定をポートオープン後、 SendFax/ReceiveFax実行前に記述していただくことで9600bps通信が可能です。
  NmFax1.BitRate = 3


イメージの解像度について

固定した相手先とのファックス通信であれば一度安定して通信できる環境を構築出来れば問題になる ことは無いですが、不特定多数の相手先とのファックス通信を行う場合には、相手先のファックス機の 能力や回線へのデータ量を減らすために低解像度イメージにてファックス通信をおこなうことをお勧め いたします。実際にファックス機に低解像度イメージと高解像度イメージを出力して比較していただく と分かると思いますが、ファックスされたイメージの品質の差はデータ量の差ほどには無いと判断出来ます。


ModemInitStringについて

通常ModemInitStringプロパティには"ATZ"の文字列でも動作しますがデータ量の多い画像ですと PCとファックスモデムの間でフローコントロールが利かなくなり、ファックス通信が中断するこ とがあります。Conxiant系のチップセットを使ったファックスモデムをお使いの場合には、 ModemInitStringに"AT&K3"の設定をすることで、ハードウェアフローコントロールが有効に なり、正常に通信が実行できるようになります。


COM10以上の対応について

シリアルポートCOM10以上をご利用になりたいお客様はサポートにて対応モジュールのご用意が 御座いますのでご連絡いただければと思います。対応修正モジュールはfxeinge.dllとなります。 システムディレクトリに同ファイルを入れ替えていだだくことでCOM10ポート以上でファックス通信が 可能となります。


IIS 6.0でのアップロードファイル上限値設定について

IIS6でアップロードファイルの上限値を変更するには、IISのMetaBase.xmlファイルの設定値を 編集する必要があります。 C:\WINDOWS\system32\inetsrv\MetaBase.xmlファイルのAspMaxRequestEntityAllowedパラメータを変更します。 デフォルト設定ですと以下のように200KBにセットされています。IIS動作中はロックされていて編集できません ので、IISを停止してから編集します。
AspMaxRequestEntityAllowed="204800"


Extendedクラスの検索条件について

ExtendedクラスのSearchCondプロパティには複数の条件を&または|で連結して指定することが 出来ます。またスペースを含むデータはシングルクォート、ダブルクォート、スラッシュで囲んで 指定することができます。以下はサンプルです。
ex.SearchCond = "@Name = 'John Scofield' & @Age > 40";


VcInBufferCountにイメージ全体サイズが受信できない。

バーコードリーダーからイメージを受信する際にVcInBufferCountにイメージ全体サイズを最初から受信することは通常はありません。 RS-232Cの通信バッファサイズがイメージサイズより小さいのでバーコードリーダーはイメージを複数に分割して送信します。 VcInBufferCountで通信バッファにあるデータをバイナリ受信し複数回繰り返しイメージ全体を受信します。 通常バーコードリーダーのプロトコルはイメージデータ送信前にイメージデータ全体サイズを送る仕様になっていますのでそれを先に得ることでイメージ全体受信完了の判断ができます。


受信イベント内でのVcInBufferCountの参照について。

VcInBufferCountプロパティは参照した時点での受信データバイト数を返します。 受信イベント発生中でも新たにデータを受信する可能性がある場合はVcInBufferCountを受信イベントの先頭で一度だけ参照してそのサイズだけデータを受信して処理するようなコードを描いてください。 複数回受信データサイズが必要なプログラムロジックとなる場合はVcInBufferCountをローカル変数に一旦保持していただくコードで対応をお願いします。


Excelから使いたい

ExcelのVisual Basicからコンポーネントを参照設定してご利用いただくことができます。 サンプルコードと利用方法ドキュメントをご確認ください。


GAC登録時のエラーについて

Global Assembly CashにCommLib.DLLを gacutil /I コマンドで登録しても「ファイル 'commlib' の DLL 初期化ルーチンが失敗しました」のような エラーが発生することがあります。解決方法としては gacutil /cdl コマンドを実行してキャッシュを一度クリアしてから、再度gacutil /iにて CommLib.DLLを登録しなおすことです。gacutil /Iコマンド登録後、パソコンの再起動で正常に動作するようになる場合にも一度 gacutil /cdlを実行 することでパソコンの再起動が必要なくなることも確認できました。


Windows10ビルド1803のエラー106について

ポート出力系のメソッドでエラー106が発生することがあります。 indows 95から20年動作していたコードがWindows10ビルド1803ではエラーが発生するようになりました。 最新版について対応パッチがありますのでサポートまでお問い合わせください。


Microsoft Exchange Server 2003のPOPサーバー接続について

Microsoft Exchange Server 2003のPOPサーバー接続でRetrieveMailメソッドが動作しない場合があります。 サポートでは動作しないExchange POP3サーバーのバージョンは6.5.6499と確認しています。 対応版をサポートにて配布しておりますので該当のお客様はサポートまでご連絡ください。 新しいMailLib.DLLのバージョンは5.0.0.5となります。


開発PCでは動作するがサーバーで動作しない

VS 2005開発環境がインストールされている環境では問題なく動作しても、.NET framework 2.0 のみインストールされたサーバー環境では「このアプリケーションの構成が正しくないため、 アプリケーションを開始できませんでした。」などのエラーが発生することがあります。
メールコンポーネント(MailLib.DLL)はManaged C++で記述されMicorosft Visual C++ 8.0 SP1で ビルドされているため、VC++8.0のランタイムをあらかじめインストールしていただく必要があります。
お手数ですがMicrosoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86)を ダウンロードし、インストールしていただきますようお願いいたします。


VB6用サンプルについて

VB6用のサンプルはインストール後のメニューには登録されませんが、以下の フォルダーに保存されています。
c:\program files\techknowledge\Net Man Controls for Mail\samples\vb
また、SmtpSmp.exeを実行して接続すると例外が発生することがありますが、 原因はVB6のサービスパックレベルの違いが原因と思われます。以下に回避 方法を示します。(コントロールの張りなおしと再コンパイルです)
  1. SmtpSmp.vbpをプロジェクトをVB6で開く
  2. frmConnectを開く。
  3. SMTPコントロールをクリックして削除キーを押しSMTPコントロールを削除。
  4. ツールボックスから再度SMTPコントロールをフォームに配置。
  5. SMTPコントロールのオブジェクト名をSMTP1に変更。
  6. 再コンパイルおよび実行。


VC++ラップクラスについて

Visual C++のMFCアプリケーションからNetMan Controls for Mailをご利用になる場合に はVisual C++がラップクラスを自動生成しますが、hidden属性を持つプロパティについて はアクセサーが生成されないことや、全メソッド/プロパティについて生成されないことが あります。(VC++のバージョンによります)Smtp/Popについてはすべてのプロパティ、メソッド について記述したラップクラスをダウンロードページにご用意しましたのでご利用ください。


XP SP2のWindowsファイアウォールについて

Winodws XP SP2のWindowsファイアウォールでSMTPポートを許可し、NetMan SMTP コントロールを利用している実行ファイルを登録してもSMTPの接続に10秒以上時間が 掛かる場合があります。この現象はLAN経由でSMTPサーバーに接続する場合には問題 なく、VPN接続やリモート接続時経由時のみ認められる現象のようです。またPOP3/IMAP4 ではこのような現象は発生しませんでした。現状の対策方法は接続時間がかかるのを 我慢していただくかWindowsファイアウォールを無効にすることになります。 マイクロソフト社より対策情報等得ることが出来ましたら再度掲載いたします。

インストールに失敗する

Visual Studio 2005はインストールされていてもVC++を除外してインストールされている開発環境へ インストールする場合にインストールに失敗することがあります。
メールコンポーネント(nmMail.DLL)はMicorosft Visual C++ 8.0 SP1でビルドされているため、VC++8.0の ランタイムをあらかじめインストールしていただく必要があります。
お手数ですがMicrosoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86)を ダウンロードし、インストールしていただきますようお願いいたします。


VB.NETサンプルの参照について

VB.NETやC#サンプルをVisual Studio.NETで開くとコントロールへの参照が出来ない環境があるようです。
多少面倒ですが以下の手順で参照を復帰できます。
  • サンプルファイルのバックアップを取ります。(別フォルダにコピーしてください)
  • VB.NETのサンプルVS.NETで開きます。
  • ソリューション・エクスプローラの参照からAxcVBMBTRLib,VBMBTRLibを削除します。
  • frmDeptEntryフォームを開き、VBMBtrコントロールをフォームに張ります。  (この状態でAxVBMBTRLib,VBMBTRLibへの参照が正常であることを確認してください)
  • プロジェクトを保存してVS.NETを終了させます。
  • 手順1で保存しておいたファイルからfrmDeptEntry.vbとfrmDeptEntry.resxファイルを  リストアします。(samples\vb.net\DeptSampleフォルダーへの上書き)
  • 再度VB.NETでサンプルプロジェクトを開きます。参照出来ていることを確認します。


DDFビルダーのインデックス数の上限について

DDFに定義できるインデックス数119はBtrieve APIの仕様に由来した上限値です。 DDFビルダーで上限を設定している訳ではなくActian ZEN (PSQL V13)でも変更はありません。 Actian ZENのマニュアル記載をご確認ください。


グリッド幅の設定方法

VBMan ActiveX Controls for OracleのグリッドのプロパティはMS Gridコンパチです。 以下のようなコードでグリッドの幅やFixエリアに表示文字列を設定することができます。
Private Sub Form_Load()
'カラムの幅を設定
VBMOraGrid1.ColWidth(1) = 1200
VBMOraGrid1.ColWidth(2) = 800

'カラムのヘッダーを設定
VBMOraGrid1.Col = 1
VBMOraGrid1.Row = 0		' Fixグリッドを指定
VBMOraGrid1.Text = "商品名"	' カラムヘッダー指定
End Sub

インストール時の障害について

VBMan ActiveX Controls for Oracle 1.0等,Microsoft Foundation Class 4.2の実行時ライブラリを必要とする製品のインストールが正常に終了しない場合があります。 多くの場合、OLEAUT32.DLLのバージョンが古いことが原因です。MFC 4.2のDLLはOLEAUT32.DLLバージョン2.20.4049以降がインストールされていることが必要となります。 バージョンの確認方法はマイクロソフトシステム情報(msinfo32.exe)でシステムDLLを選択すると表示されます。このバージョン以降のDLLは、 Visual Basic 5.0,Visual C++ 5.0,インターネット・エクスプローラー 3.02J等をインストールするとシステムにインストールされます。 NT 3.51をお使いの場合はService Pack5をインストールすることで解決できます。V BMan ActiveX Control for Oracle 2.0はATLで作成されておりMFC42への依存はありませんので上記は該当しません。


DATE型のカラムで時間が表示されない

デフォルトのDATE型のカラムに対するフォーマットを変更してください。VBManで変更する場合は以下のようなコードになります。
Dim rc As Integer
rc = VBMOraCon1.ExecSQL("ALTER SESSION SET NLS_DATE_FORMAT='YYYY/MM/DD HH24:MI'")
If rc <> 0 Then
  MsgBox VBMOraCon1.ErrorText
End If


NT 4.0でプロパティ・ページが開かない

NT4.0環境でVBMan ActiveX Controls for Oracleのプロパティ・ページでカラー・ストック・プロパティ・ページを参照するものが開かない場合があります。 理由はmfc40.dllがレジストリに登録されていない場合がある為です。VBMan ActiveX Controls for Oracleはmfc42.dllをランタイムとして動作しますが、 カラー・プロパティ・ページはmfc42.dllではなくmfc40.dllに存在することが原因のようです。(マイクロソフトの不具合と思います) 弊社ではインストール直後のNT 4.0にService Pack3,Visual Basic 5.0にService Pack2を入れた状態で上記に不具合が確認できました。 以下のコマンドでmfc40.dllをレジストリに登録したら解決できました。
regsvr32 c:\winnt\system32\mfc40.dll


vb5セットアップ・ウィザードのvb5dep.ini追加項目

vb5セット・アップ・ウィザードでVBMan ActiveX Control for Oracle 1.0の依存情報は以下となります。 vb5インストール・ディレクトリの下のsetupkit/kitfil32/vb5dep.iniファイルに追加してください。 MFC42,MSVCRT,MFC42LOCについてすでに情報が追加されている場合はVBMORA32.OCX,DIBAPI32.DLLに関する部分のみ追加してください。 この状態で作成したセットアップ・ファイルはOracleクライアント環境が別途整備されているパソコンでセットアップ可能となります。 VBMan ActiveX Control for Oracle 2.0はMFC42への依存はありません。vb5dep.iniの記載方法はマニュアル183ページをご参照ください。
[VBMORA32.OCX]
Register=$(DLLSelfRegister)
Dest=$(WINSYSPATH)
Uses1=DIBAPI32.DLL
Uses2=MFC42.DLL
Uses3=MSVCRT.DLL

[DIBAPI32.DLL]
Dest=$(WinSysPath)

[MFC42.DLL]
Register=$(DLLSelfRegister)
Dest=$(WinSysPath)
Uses1=MFC42LOC.DLL

[MSVCRT.DLL]
Dest=$(WinSysPath)

[MFC42LOC.DLL]
Dest=$(WinSysPath)


テーブル・ロックについて

コネクト・コントロールのExecSQLメソッドを使って lock table コマンドを実行する場合、 AutoCommitプロパティをFalseに設定しないと実際はテーブルにロックがかからないのでご注意ください。


サーバーに接続できない

OCIW32.DLLが複数のディレクトリに存在するような場合、サーバーに接続できない状況になることがあります。 Oracleインストール・ディレクトリのbinにのみOCIW32.DLLが存在するようにファイルを整理してください。 Oracleを再インストールする場合にWindows NTではMS DTCがOCIW32.DLLを利用している場合もありますので、 そのような場合はMS DTCサービスを一旦止めてOracleの再インストールを実行してください。


エラー・コード訂正

VBMan ActiveX Controls for Oracle 2.0のマニュアル202ページに訂正があります。

シンボル
ERR_ALREADY_IN_QUERY207208
ERR_NOT_IN_QUERY 208209


DelphiからGetDataEx

以下はDelphiでGetDataExメソッドのコード例です。
procedure TForm1.Button2Click(Sender: TObject);
var
  rc:    smallint;
  sql:   Widestring;
  v:     OleVariant;
  vData: OleVariant;
  i:     smallint;
  numOfRecords: LongInt;
begin
  numOfRecords := 20;
  v := numOfRecords;
  sql := 'select empno,ename from Emp';
  rc := db.QueryEx(sql,v);
  if rc <> 0 then
    Application.MessageBox('error','sample',MB_OK);
  rc := db.FetchEx(v);
  if (rc = 0) or (rc = 100) then
  begin
    vData := VarArrayCreate([0,1,0,20],varOleStr);
    rc := db.GetRowDataEx(vData);
    if rc <> 0 then
      Writeln(rc)
    else
    begin
      for i := 0 to v - 1 do
      begin
        write(vData[0,i]); write('-'); writeln(vData[1,i]);
      end;
    end;
  end;
  rc := db.EndQueryEx();
end;


コネクトコントロールは一つで複数のリストボックス

フォームにはコネクトコントロールを一つだけ設定して複数のリスト・ボックスにマスター参照データを表示したい場合があります。 コネクト・コントロールを複数置かないでもForm_Load等に以下のようなコードを記載することで対象テーブルを切り替えてデータを表示することが出来ます。
Private Sub Form_Load()
db.TableName = "EMP"
With VBMOraList1
  .ListConnect = "db"
  .ListFields = "empno,ename"
  .Refresh
End With

db.TableName = "DEPT"
With VBMOraList2
  .ListConnect = "db"
  .ListFields = "deptno,dname"
  .Refresh
End With
End Sub


中国で開発します。該否判定書はありますか。

該否判定書ございます。システム・ラボ (tel:03-5809-0893)にて発行しますのでお手数ですがご連絡をお願いします。 (1〜15項非該当,16項のみ該当)


VE051メッセージのマニュアル記載について

VBMan ActiveX Controls for Btrieve 3.0のマニュアル198ページのVE051メッセージの解説にあるsswin.dllはsp32w.dllの間違いです。


Pervasive.SQL 4のDDF形式対応について

Pervasive.SQL 4ではDDFの形式が変更になりましたので対応いたしました。(99/01/30)
対応モジュールはこちらからダウンロード可能です。 対応モジュールの配布はVBMan ActiveX Control for Btrieve 3.00用のみとなりますのであらかじめご了承ください。


Pervasive.SQL 2000 Service Pack sp1/sp2b対応について

Pervasive.SQL 2000 Service Pack1以降ではBtrieve APIのチェック仕様が変更になっているので対応いたしました。(2000/11/08) 対応モジュールはこちらからダウンロード可能です。変更モジュールはvbmbt300.ocxとddfio300.dllになります。 対応モジュールの配布はVBMan ActiveX Control for Btrieve 3.0x用のみとなりますのであらかじめご了承ください。


Pervasive.SQL 2000 Service Pack sp3対応について

Pervasive.SQL 2000 SP3にて問題なくVBMan ActiveX Controls for Btrieve 3.02が動作することを確認済みです。 (pervaisve software/agtech社のご厚意によりsp3出荷前からテストさせていただいきました)


リモート・アクセスとの関係について

NetMan Mail/OCX32でRAS接続はサポートされないかとのご質問が多いですが残念ながらRASとwinsockは別のプロトコル層にありNetMan Mail/OCX32が制御すべきものではありません。 NetMan Mail/OCX32はwinsock APIを利用するtcp/ipプロトコル・レベルのアプリケーションです。 ダイアル・アップ・ネットワークを制御するActiveXコントロールとしては弊社のNetMan ActiveX Control for RASをご利用ください。


pop3コントロールが本文をファイルする場合の拡張子

pop3コントロールがメール本文をファイルに保存する場合にはメール・ヘダーのContent-type指定をレジストリから検索してファイルの拡張子を決定します。 HKEY_CLASSES_ROOT直下のドットから始まる拡張子レジストリからContent Typeを検索して合致するものをファイル拡張子としています。


RetrieveMessageのパラメータについて

NetMan for Mail/OCX32のマニュアル42ページ記載の上記メソッドの第2パラメータのデータ型Integerは誤りでVariant型になります。 43ページの同サンプルでは同様にMimeという変数はBooleanではなくVariantで宣言する必要があります。


分割送信したメールとMicrosoft OutLook97/98について

SmtpコントロールにおいてMessagePartialプロパティを1に設定して分割送信したメールをMicrosoft OutLook97/98で受信すると、 画像ファイル等を送った場合にも拡張子.txtのファイルが複数受信した状態になります。Microsoft OutLook97/98が分割された メールに対応していないことが原因です。Microsoft OutLook2000では分割したメールに対応しているのでこの問題は発生しません。


文字配列を返すメソッドのパラメータ変更について

NetMan ActiveX Controls for Mail ver 2.0のPop3コントロールではASPサポートのために従来のバージョンではBSTR型の配列を 返していたメソッドにつきましてはVARIANT型の配列を返すように変更になりました。 この変更はVisual Basicをホスト言語としてアプリケーションを開発されている場合にはコードの変更は必要ありませんが Visual C++をお使いの場合には若干のコード変更が必要になります。 サンプル・コードはこちらからダウンロードできますのでご参照ください。


OutLook2000におけるhtmlメールのcid

本文にイメージを指定する場合cid(content-id)の指定が必須となりますが、OutLook2000の場合、 タグ中のcidを小文字で記述しないと、イメージが表示できないようです。
<img src="CID:1234"> 駄目です。
<img src="cid:1234"> 大丈夫です。


APOP対応について

マイナーバージョン・アップ(version 2.04)でAPOPに対応いたしました。こちらからダウンロード可能です。 APOPと通常のPOPは自動的に判断して接続いたします。


SMTP AUTH対応について

マイナーバージョン・アップ(version 2.04)でSMTP AUTHに対応いたしました。こちらからダウンロード可能です。 SmtpコントロールにはUserID/Passwordプロパティが新たに追加になりました。詳細はpdfマニュアルをご参照ください。


Visual C++におけるSMTP AUTH Password

Visual C++ではhidden属性を持つプロパティについてはラッパークラスが作成されませんのでVisual C++でSMTP AUTHを使う場合には デフォルトで生成されるsmtp.h, smtp.cppに以下のコードを追加してPasswordプロパティを設定する必要があります。
// add to smtp.h
CString GetPassword();
void SetPassword(LPCTSTR lpszNewValue);

// add to smtp.cpp
CString CSmtp::GetPassword()
{
  CString result;
  InvokeHelper(0x2c, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
  return result;
}

void CSmtp::SetPassword(LPCTSTR lpszNewValue)
{
 static BYTE parms[] = VTS_BSTR;
 InvokeHelper(0x2c, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,lpzNewValue);
}


IIS利用時のShowErrorMessage設定

IISでNetMan ActiveX Controls for Mailを利用する場合はIISがMesageBoxの表示を禁止しているため、 ShowErrorMessageプロパティは常に値0を設定しなければなりません。この値を設定しない場合はたとえば Connect時等にはハングしたように見える場合があります。(実際はクライアントのブラウザーのタイムアウトで終了になります)