最新画像一覧   /    おもしろブログが満載! シャッフル ブログ  /     無料登録  
容量2GB!アクセス解析&動画ファイルも可能な無料ブログ。アフィリエイト完全対応。

数量や金額のデータ項目定義について思う事

  1. 2012/04/01(日) 23:30:10|
  2. 技術情報展開|
  3. トラックバック:0|
  4. コメント:0
数量や金額といった数字を扱うデータ項目をどのような型で定義すべきか、たいしたポリシーも無く設計すると後で痛い目に会います。
数字の項目を文字列型のデータ項目で定義してしまい、
後から修正する羽目になってしまって悲しいので記事にします。

僕が数年前に所属していたプロジェクトでは数字の項目も全て
文字列型を用いていました。
これはプログラムを作成する側としてはとても作りやすかった。
なんせどの項目も文字列なので型を意識せずに変数の定義ができるからなんだけど。

だから、全データ項目を文字列型で定義して在庫管理システムを作ったんです。

しかし、ユーザーサイドとの接点や設計と製造を組み合わせた
モノづくりを考慮すると数量や金額は数値項目で定義すべきであるということに最近気づかされました。

文字列型データをDataGridViewに展開すると、
ソートがうまくいかなくなるんですよね。

例えば、文字列型の数量という項目に(1,2,10,20)という値をセットして
ソートした場合

1
10
2
20

という順序で並んでしまい、ユーザが確認したい数字の昇順のソートとは
異なった結果が返されてしまいます。
この現象を回避するにはデータの頭をゼロ埋めにすればいいんだけど

01
02
10
20

みたいに表示されるので見にくいし、項目の桁数が増えてくると

00000000001
00000000002
00000000010
00000000020

もう何がなんだか、見づらくて仕方が無い。

エンドユーザーは必ず数字項目をソートしてデータを確認する習性があるので
ソートが失敗していると必ずつっこまれます。
数字を扱うときは必ず数値型で定義すべし。明日のために。
しくしくしく

C#でXML解析でXPathでつまづいたこと

  1. 2012/03/25(日) 23:11:07|
  2. 技術情報展開|
  3. トラックバック:0|
  4. コメント:0
C#にてAmazonMWSのプログラムを作成中だが
AmazonからのレスポンスのXML解析についてちょっと躓いたので
記録を残します。

XMLの解析はまったくの素人なんで、いろいろ調べ物をしつつやってました。
XPathという手法を用いてXML解析をするのが比較的簡単そうなのですが、
NameSpaceの指定を行わないとXML解析に失敗します。

下記のサイトを参考にしました。
XML解析に躓いている人は一度参考にしてみては。

「Visual C#の XPathで XMLを分解するには XmlNamespaceManagerがいるみたい」
http://type-y.com/2011/11/visual-c-sharp-xpath-xml-xmlnamespacemanager.html

OLEDBを使用したプログラムで「抽出条件でデータ型が一致しません。」が表示された場合の対応

  1. 2011/12/17(土) 18:56:00|
  2. 技術情報展開|
  3. トラックバック:0|
  4. コメント:0


【発生原因】
REPLACE時にDBへ値をセットする変数の型と
変数にセットされた値の型が不整合を起こした場合に発生します。
たとえば、数値型の変数に文字列型のデータが流し込まれたら
発生します。

【対応方法】
入ってくるデータとDBの型を一致させる。

VBA 引数の開始数字の違いでハマった

  1. 2011/11/26(土) 22:54:01|
  2. 技術情報展開|
  3. トラックバック:0|
  4. コメント:0
今日は本業の業務で使うデータコンペアのツールを作成しておりました。
プログラムを組む仕事がめっきり少なくなり、ファイルリードしたりDB書き込みしたり
マッチングしたりするプログラム作成はとてもひさしぶり、数年前はこんなことやってたよな
となつかしさに浸りつつ、プログラムを組んでおりました。

プログラムはどの環境でもお手軽に修正でき、使っている人が多いという理由でVBAを選択。
データの抽出処理の組みやすさを考慮してAccessのDBを使用する方式とした。

普段、VBAなんて触ってないので、まずは「マクロってどうやってうごかすんだっけ?」
とか「ボタンからマクロを呼び出すのってどうやるんだっけ」という素人のレベルからの
開始、当然なんでもないことでいちいち詰まるので13時間ぐらいプログラムと格闘しておりました。

そんななか、DBへのデータインサートでどハマりしたのでその内容と対処方法を記載します。

VBAのセルへの値セットのプログラムを組んでいると気がつくのが、セルのアドレス指定の添字が1から始まる
ということ。

CとかJAVAとかの世界では、添字といったら0スタートなので、1スタートのVBAのプログラムは
なんとなくとっつきにくいのである。

で、VBA=添字は1スタートという固定観念を持ってプログラムを組んでいると、DBインサート処理で
ハマってしまった。

' レコードセット取得処理
Set dbRes = New ADODB.Recordset

' MDBにレコードを追加
dbRes.AddNew

' 各フィールドにインプットファイルから値をセット
dbRes.Fields(1).Value = Mid(strREC, 1, 2) '会社コード
         ↑ここの添字は0から開始!
dbRes.Fields(2).Value = Mid(strREC, 3, 2) '年
dbRes.Fields(3).Value = Mid(strREC, 5, 2) '月
dbRes.Fields(4).Value = Mid(strREC, 7, 2) '日
dbRes.Fields(5).Value = Mid(strREC, 9, 2) '支社コード
dbRes.Fields(6).Value = Mid(strREC, 11, 8) '箇所コード

' レコードを更新
dbRes.Update

上記ソースの様に、dbRes.Fields(1)の添字を1から開始したところ、テーブルセット項目にずれが生じ
パラメータのセットが出来なくなる障害が発生した。

添字の開始位置となる数字が何になるのかは添字を求める関数に依存するので
事前に調べてからプログラムは組まないといけないな、と反省しました。

ハードウエアの安全な取り外しがタスクバーに表示されないとき

  1. 2011/11/23(水) 22:02:58|
  2. 技術情報展開|
  3. トラックバック:0|
  4. コメント:0
WindowsXPの場合の対応策です

[スタート] ボタンをクリックし、[ファイル名を指定して実行]の名前欄に次のコマンドをコピペして実行する。
rundll32 shell32.dll,Control_RunDLL hotplug.dll

するとハードウエアの安全な取り外しが表示されます。
これにて一件落着。

出典元:「カレンダーブログ」
http://douyou.blog.so-net.ne.jp/2008-10-22

DTIブログって?

次のページ