2011年09月14日

DataTable.Selectのバグ

DataTable.Select() メソッドは非常に便利なものだが、気をつけるべき点があることを今日知った。

DBから取得したデータ tblに
DENPYO_NO  GYO_NO
"1234"              "1"
"1234"              "2"
"1235"              "1"
というデータがあるとき(型はstring)
tbl.Select("DENPYO_NO = 1234").Count() で、通常 2 が返ってくる。
だが、このtblに新規行
"001236"          "1"
を追加したあと、tbl.Select("DENPYO_NO = 1234").Count() を実行するとなぜか 1 が返ってくる。

"1234"という伝票と関係ない伝票番号"001236"を追加しただけなのにである。

ググってみたら
DataTable.Select の条件式での型推論による弊害

DataTable.Select()メソッドにはやはりバグがある!?

というのがあった。
形が文字列の場合に検索条件が数値だときちんと動作しないらしい。

対処方法としては
1:LINQを使用する
2:検索条件を"CONVERT(DENPYO_NO, 'System.decimal') = 1234"のように数値に変換して検索する
3:引用符で囲む"DENPYO_NO = '1234'"
などがあるようだ。





posted by 丸刈り〜太 at 00:28| Comment(0) | TrackBack(0) | プログラム

2011年05月27日

SQLServer Compact Editionのインストール

SQLSERVER Compact Editionはプロセスベースで動作させることが出来るため、関連するDLLを実行するEXEと同じフォルダに置くだけで動作させることができる。

それについては
方法 : SQL Server Compact 3.5 データベースをアプリケーションと共に配置する
http://msdn.microsoft.com/ja-jp/library/aa983326.aspx
に書いてあるが、これだけではおそらく動作させることはできないだろう。

自分がやったところ DbProviderFactories.GetFactory() の箇所で
System.ArgumentException: 要求された .Net Framework データ プロバイダが見つかりません。これは、インストールされていない可能性があります。
というエラーが発生してDBに接続できなかった。

machine.configを調べてみると<DbProviderFactories>エントリに
System.Data.SqlServerCe.3.5
が存在しなかった。

解決方法としてはプロジェクトにApp.configを追加し、自前でデータプロバイダを記述すること。
こんな感じ
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.data>
    <DbProviderFactories>
      <clear />
      <add name="SqlClient Data Provider" invariant="System.Data.SqlClient" description=".Net Framework Data Provider for SqlServer" type="System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
      <add name="SQL Server Compact Edition Data Provider" invariant="System.Data.SqlServerCe" description=".NET Framework Data Provider for Microsoft SQL Server Compact Edition" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
      <add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
    </DbProviderFactories>
  </system.data>
</configuration>

タグ:C# SQLServer
posted by 丸刈り〜太 at 18:30| Comment(0) | TrackBack(0) | プログラム

2008年11月22日

便利なショートカットキー

「今年最もお世話になったショートカットキーは「Ctrl+C」 〜「Ctrl+W」って使ってる? 」
 
でショートカットキーのランキングが発表されているけど、
Ctrl+C(コピー)とかよく使うのから、え?こんなのあったというものまであって意外に勉強になりました。

Windowsキーにもショートカットキーが割り当てられてるなんて知りませんでした。
しかもベリーベンリなものばかり。

Windows+D (デスクトップを表示)
Windows+E (マイコンピュータをひらく)
Windows+R (「ファイル名を指定して実行」ダイアログを開く)
Windows+Tab(タスクバー上の各プログラムを3Dフリップで巡回)
なんかは便利そう。
 
Ctrl+X(カット)とかよく使うんですけど、ランキングに入ってないや。
ランキングに無いショートカットキーで私がよく使うもの
Ctrl+X (カット)
F2 (ファイル名変更)
Shift (CD 挿入時に押し続けることでCDが自動再生しないようにする)
posted by 丸刈り〜太 at 03:51| Comment(0) | TrackBack(0) | プログラム

2008年11月21日

テスト


#include<stdio.h>
void main()
{
printf("Hello World.\n");
}


最初に書くっていったらこれでしょうww

Windowsになってからは画面(Window)に
文字表示させるだけでも面倒ですよね。
posted by 丸刈り〜太 at 23:55| Comment(0) | TrackBack(0) | プログラム