SQLCE2.0 Windows Mobile 6 でエラー

VB.NET 2003で作成したスマートデバイスアプリケーションを、
HP iPAQ 112 Classic Handheld にインストールして、使用したところ、
SQL Server CE 2.0 のデータベースにインサートしようとしたところ、
エラーになってしまいました。

HP iPAQ 112 Classic Handheld のOSはMicrosoftR Windows MobileR 6 Classic 日本語版 です。
OSがWindows Mobile 5.0 for Pocket PCでは
大丈夫だったので大丈夫なのかと思ったら、なぜかエラーになってしまいます。
.NET Compact Frameworkのバージョンが違うためダメなのだと思われます。
VS.NET 2003 でデバッグすることも出来ず、悩んでいましたが問題点がわかりました。

インサートするためのSQL文で、
INSERT INTO TableName(数値, 文字列) VALUES (1, 'あ')
というように、文字列はアポストロフィで挟みますが、
INSERT INTO TableName(数値, 文字列) VALUES ('1', 'あ')
このように数値のフィールドもアポストロフィで挟んでいたのがいけなかったようです。
以前は間違えていても、問題にならなかったところがバージョンが変わると
引っかかってしまうことがあるので注意が必要です。

正確にプログラミングが出来ているのなら、たいていのソフトはWindows MobileR 6 でも動作しそうです。

SQL Server CE 2.0 テーブルを作成するときに、文字列のフィールドは、ntextというデータ形式にしますが、SQL Server Mobile Edition ではnvarcharにしなければならないそうです。
しかし、Windows Mobile 5.0で試してみたところ、SQL Server CE 2.0 でも、
ntextではなくて、nvarcharにしても動作します。
以前はエラーになったような気がしますが、細かいところが知らない間に変わるので、
苦労します。
posted by VB.NET+MSDE+ActiveReports at 18:05 | Comment(0) | TrackBack(0) | .NET CF

VS.NET2008でモバイル開発

VS.NET2003で、スマートデバイスアプリケーション開発をしているので、
そのうち新しい、VS.NETに乗り換えなければなりません。
VS.NET2002とVS.NET2003はWindows Vistaで使うことが出来ないので、
いずれ乗り換える必要があるのですが、現時点ではVS.NET2005とVS.NET2008があり、
どちらにしようか悩みます。
モバイル開発を行わないのなら、Express Editionで良いような気がします。
やはり、新しいものの方が興味があるので、VS.NET2008にしたいのですが、
モバイル開発のためには、Professional Editionが必要です。
VS.NET2005だったら、Standard Editionでよかったのに、
Visual Studio 2008 Professional Editionを買うと10万円くらい高くなってしまいます。
モバイルデバイスでも、.Net Framework2.0が入っていて、普通のWindowsアプリケーションでも動くものもあるらしいので、今後、.Net Compact Frameworkがなくなることを期待して、しばらく様子を見ます。
今のところ、VS.NET2003で開発したソフトがたいていのデバイスで動きます。
posted by VB.NET+MSDE+ActiveReports at 16:57 | Comment(0) | TrackBack(0) | .NET CF

PocketPCでSDカードを挿入したら自動実行する


コンピュータのCD-RドライブにCDを挿入したときに、
自動実行させるためには、autorun.infという名前のファイルを作成し、
中に、
[Autorun]
open=実行したいファイル名
と書いておけば自動実行されます。

PocketPC 2002やPocketPC 2003の場合は、
SDカードの中に、2577というフォルダをつくり、
そのフォルダの中に、autorun.exeを入れておくと
SDカードを挿入したときに、autorun.exeが自動実行されます。

2577は、ARMプロセッサの場合です。
ARMプロセッサ以外の場合は、違う番号になります。
PocketPC 2002やPocketPC 2003の場合は、
たいてい、ARMプロセッサだそうです。

SDカードを挿入したときだけでなく、SDカードを抜いたときや、
サスペンドから復帰したときにも、autorun.exeが実行されてしまうことがありますが、
その場合の対処方法はわかりません。

ソフトの自動インストールに使用する場合は、
起動してしまっても、既にソフトがインストールされていたら
終了されるようにしておけば使えます。
SDカードを挿入するたびに、毎回、ソフトを起動させようとするのは、
あまりうまくいかないです。

posted by VB.NET+MSDE+ActiveReports at 19:40 | Comment(0) | TrackBack(0) | .NET CF

VS 2003でも.NET Compact FrameWorkでボタンの色を変える

VS 2003でも.NET Compact FrameWorkでボタンの色を変える
VS 2005では、.NET Compact FrameWorkのアプリケーションで、
ボタンの色を変更できますが、VS 2003では変更できません。
カスタムコントロールを作るのも良いですが、
面倒な場合は、無料で利用可能なDLLが存在します。

こちらからダウンロードできます。
↓↓↓↓↓
http://www.codeproject.com/cs/miscctrl/PocketPCColourBtn.asp
海外のサイトで、ダウンロードするためには、メールアドレスを登録する必要があります。
メールアドレスを登録しても、めったにメールは来ません。
ColourControls.zipをダウンロードしたら、
Build_and_copy.batを実行します。
デフォルトでは、debugモードでビルドするので、
releaseモードでビルドしたい場合は、Build_and_copy.batのdebugをreleaseに置換します。
colourcontrols.dllとcolourcontrols.design.dllが作成されて、
colourcontrols.dllは、C:\Program Files\Microsoft Visual Studio .NET 2003\CompactFrameworkSDK\v1.0.5000\Windows CEに、
colourcontrols.design.dllは、C:\Program Files\Microsoft Visual Studio .NET 2003\CompactFrameworkSDK\v1.0.5000\Windows CE\designer にコピーされます。
ColorButtonというコントロールができるので、ツールボックスに追加します。
ツール→ツールボックス アイテムの追加と削除で参照ボタンを押して、
.NET FrameWorkコンポーネントにcolourcontrols.dllとcolourcontrols.design.dllを追加します。
dllのパスは上記の通りです。
そして、ColourButtonという項目が2つ増えるのでチェックボックスにチェックを入れて、OKボタンを押します。
これで、VS 2003でも、スマートデバイスアプリケーションで、ボタンの色を変えることができます。

dllのソースコードはC#ですが、VB.NETでも使用できます。

posted by VB.NET+MSDE+ActiveReports at 13:48 | Comment(0) | TrackBack(0) | .NET CF