2008年10月15日水曜日

.NetFramework2.0のMailMessageクラスの仕様(IFAX編)

System.Net.MailのMailMessageクラスを利用したメール送信アプリケーション作成時に問題が発生した。
簡単に言えばこのクラスは日本規格対応されていない為発生した現象だ。

対象相手はNTTのiFAXだ。

通常このクラスはUTF-8を前提に作られており、Shift-jis対応を行おうとした際には各パートでエンコードを変更しなければならない。
エンコード自体はできるのだが、メールヘッダーの記述順序が存在し、それが原因でこのクラスの利用が見送られた。

  内容:
* 解説書上の以下の記述とSystem.Net.Mailクラスから生成される現象について記します。
*
* 解説書:メールヘッダーのbody部のContent-Type第一句に次の定義が必要
*   Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit
*
* System.Net.Mailで作成した場合の第一句:
* Content-Type: multipart/alternative
*
* これはSystem.Net.Mailクラスで作成されるメールヘッダーはjis・shift-jis規格に完全対応していない為発生する。(UTF-8対応)
* このクラスにあるMailMessageクラスのHeaderメソッドはメールヘッダーを独自に生成する機能では無く、HTMLとテキストを混在して生成できるクラス
* AlternateViewクラスを利用してshift-jisにエンコードしたbody部を作成する必要がある。
* ただ、このクラスを利用すると必ずContent-Type: multipart/alternativeがセットされる為、
* 今回の要求には全く合わない。
*
* これを回避する方法はSocketプログラム(TCP/IPプログラム)を別途手組みで作成する必要がある。

納期との噛み合いもあり無償のツールを利用する事で回避できたが、この問題は各国の仕様に振り回されている感が大きい。

2008年8月8日金曜日

app.configからconnectionStringを取得

app.configファイルからデータベースへのコネクションストリングを取得する方法:

使用するクラス
ConfigurationManager
namespace:System.Configuration

注意:
1.System.Configuration.dll への参照を追加する事で使用可能になります。
2.staticな ConnectionStringSettings クラスを使う事でスレッドセーフなコネクションストリングを生成できます。

例:

using System.Configuration;
...

ConnectionStringSettings conStrings =
ConfigurationManager.ConnectionStrings[SendMail
Biz.Properties.Settings.SendMailConnectionString;
//コネクションストリングの取得

Console.WriteLine(conStrings .ConnectionString);
Console.WriteLine(conStrings .ProviderName);

2008年7月15日火曜日

Access2007でのフォームの移動可能プロパティ

ある事をきっかけにAccess2007の作成したフォームが、タグとして組み込まれてしまっているので、ウィンドウ化できないかとのご質問。

初めて作ったら確かにそのように表示されてしまう。

Access2007のテンプレートアプリケーションと比較したところあるプロパティが違っていた。

『移動可能』プロパティだ!!

ここが初期値として『いいえ』になっているので、最大化・最小化ボタンの表示が『はい』になってもウィンドウで表示されず、タグで表示されてしまう。

以外なトラップだ。。。

2008年6月10日火曜日

ProgressBarコントロールの使い方

ふとProgressBarが使いたくなったので、検索したところ参考サイトを発見!!

良く出来ている。

DoEventsやマルチスレッドについても載っているので大いに参考

http://dobon.net/

2008年6月4日水曜日

Accessで『多数のトランザクション処理中にエラー メッセージ "ファイルの共有ロック数が制限を超えています" が表示される』が出たら!!

Access上で大量のトランザクションが発生したらよく出ます。

この値を変更すれば問題ないかと思います。

それにしてもAccessでは大量トランザクションを走らせる事を前提にしていないことが良くわかる。

確かに大量データであればServerとして稼動目的としているDBを使ったほうが良いという事なのだが。。。

たぶん最適な方法!!
『SetOption メソッドを使用して MaxLocksPerFile の値を一時的に変更する 』
DAOを使います。

DAO.DBEngine.SetOption dbmaxlocksperfile,15000


参考:
http://support.microsoft.com/kb/815281/ja

2008年5月30日金曜日

フリーなログツール

少し前に試したログ管理のツールです。

お手製を考えたり、同僚が作ったりしているのですが、
ソースレベルでコピーしてこなければならないのと、
メッセージが思ったようにならない事を考えると、やはりツールを使った方が。。。

との考えから発掘しました。

結構有名なツールだそうです。

ツール名:Log4net

面白そうです。




2008年5月28日水曜日

C#の情報

結構載っているサイト!!

考えるにはベストかと・・・

2008年5月26日月曜日

CSVファイルの取込

Accessでは簡単に出来るCSVファイルのC#(.NET Framework 2.0)でのインポート

TextFieldParserクラスで簡単に出来る。
ただし、TextFieldParserクラスはMicrosoft.VisualBasic.dllに存在する為、参照設定をする事。

名前空間:Microsoft.VisualBasic.FileIO;

参考記事


2008年5月24日土曜日

モーダルダイアログの表示

どうやらモーダルダイアログをWeb上で表示させるにはメンテナンス上リスキーらしい。

とりあえず以下の方法
  • JavaScript の showModalDialog() を使用
  • JavaScript の window.open() を使用してフォーカスを常に取得
  • Ajax Control Toolkit の ModalPopupExtender コントロールを使用
Ajax Control ToolKitの使用方法は以下のとおりに・・・

Microsoftのサイト

2008年4月18日金曜日

仮想ドライブでisoファイルを取り込む

isoファイルを仮想ドライブで開く方法:

1.仮想ドライブで検索
2.フリーソフトをダウンロード
 検索で引っかかったソフト
 Virtual CloneDrive :http://www.slysoft.com/ja/virtual-clonedrive.html

これでOK
 

2007年10月5日金曜日

マインドマップについて

密かに面白そうだと思うマインドマップ!!

日ごろお客様との会話でどのようにすれば相互理解可能な図が書けるかな?
と思ってUMLへ手を出してみたものの、表記の説明に手間がかかる。

そこでマインドマップ!!

これならお客様にも理解できそうだ。

少し学んで見るか??

http://mindmap.jp/

物流について

担当しているお客様のシステムで物流関連が多いため、
基礎理論で確認のためのサイト

今後とも気づいた時点で追加します。

東北物流効率化推進サイト
http://www.tohoku-logi.jp/index.htm

簡単にまとめてあり、概念的なところで参考になります。

2007年9月25日火曜日

VBScriptで行ってみよう!!

仕事で仕様を満たす為にVBScriptを一部使う事になった。

そこで勉強になったページです。

今回の目標は外部からAccessアプリケーションをキックしてAccessの表示をせずにプログラムを終了させます。
ついでにテキストに履かれたエラーメッセージを表示もしますし、起動時にもテキストファイルがあれば削除するようにしました。
別にAccessでなくてもいいアプリケーションなのだが。。。

参考: 
  http://www.happy2-island.com/vbs/
  http://www.mhl.janis.or.jp/~winarrow/vbscript/htm/vbstoc.htm

2007年8月28日火曜日

久々ですが募金です。

技術とはまったく関係ないのですが、1円クリック募金です。

自分は恵まれていないと思うかも知れませんが、
世の中もっと恵まれていない人も多いです。
食える、家ある、少なくとも安全。

1クリックで誰かすくえるのなら!!

http://www.dff.jp/

2007年7月25日水曜日

正規表現の使い方

Access VBAで正規表現を使う場合以下の方法で可能です。
ただしライブラリが必要です。

ライブラリ名:
 Microsoft VBScript Regular Expressions 5.5

参考URL:
 http://arrow3.way-nifty.com/shige/2006/07/vba__fc44.html

2007年7月24日火曜日

インジケータの表示

インジケータを表示するには2種類あります。

1.Office Developerに添付されているActiveXコントロールを使用する方法
 Windows コモン コントロール(Mscomctl.ocx/Mscomct2.ocx)
 ProgressBarコントロール
 参考URL:
 http://www.tsware.jp/study/vol10/comctl_17.htm

 この場合Accessでも本格的なインジケータを作ることができるが、Office Developerにしかないようなので使用するには別途購入が必要!!

2.SysCmdを使用する方法
 参考URL:
 http://www.moug.net/tech/acvba/0110003.htm

 ステータスバーに表示される方法です。