スタッフの日記

SQLSERVERのViewをACCESSのMDBでODBC接続したが、ACCESSで表示する値が違う。

2015年9月11日(staff)

(mdbでリンクする際、[固有レコード識別子の選択]は正確に行いましょう)


■事象
ACCESSのMDBで、SQLSERVERで定義しているViewをODBC接続でリンクした。
ACCESSで表示したところ、SQLSERVERのVIEWの表示が一部の列で値が違って表示されている。

例)

以下のようなView_TEST をMDBでリンクしたところ、表示した"単価"、"個数"列がSQLSERVERのViewと違って表示されている。

View_TEST:

select 店舗,販売日,品物,単価,count(*) as 個数 from TEST group by 店舗,販売日,品物,単価 order by A.

[SQLSERVERの表示]

店舗 販売日 品物 単価 個数
支店A 2015/8/31 みかん 250 3
支店A 2015/8/31 バナナ 100 25
支店A 2015/8/31 バナナ 198 13

[ACCESS MDBの表示]

店舗 販売日 品物 単価 個数
支店A 2015/8/31 みかん 250 3
支店A 2015/8/31 バナナ 100 25
支店A 2015/8/31 バナナ 100 25

  ※ 3行目の単価、個数が198、13のはずが、2行目の値になっている。

■原因と対応
mdbでリンク指定する時に、[固有レコード識別子の選択]という操作があり、そのテーブルの主キーとなる項目を設定するのですが、この項目の選択が誤っていました。今回の場合、group byで集計していたら集計した列を全て指定しないと一意になりません。結果、おかしな表示になってます。(なぜ上記のような表示になるのかは疑問が残るが、そこは追及する意味がないと判断。)

以前から、[固有レコード識別子の選択]は結構いい加減に考えていて、適当に設定していても問題なかったのですが、今回の不具合で改めて重要であることを認識しました。というか、ちゃんと理解して設定しろよ!正しく理解する為の時間を惜しんで、結局遠回りして痛い目に遭う。
(こんな事、結構繰り返してます……OTL)
 

 

一覧表示 ▶︎ スタッフの日記

Access2013にはSQLServerへのアップサイジング機能が無いのです

2015年6月23日(staff)

Access2010まで提供されていたSQL Serverへのアップサイジング機能
(アップサイジングウィザード)が、Access2013では削除されてしまいました。

 ※Office 2013 での変更点
  https://technet.microsoft.com/ja-jp/library/cc178954.aspx

処理速度改善の案件で、システムはLAN環境でAccessデータベース(mdb)をサーバに配置して
クライアントPCのGUI画面から読み書きをしていたのだけど、Jet Database Engineの処理の
仕方でどうしても処理速度が上がらないため、SQL Serverに移行してしまおう
(無償のExpress Editionバージョン)となりました。

 そこで出番となったAccessの素晴らしい機能であるアップサイジングウィザードです。
これを使えば、テーブルとそのデータだけでなく、インデックス、入力規則、テーブルの
リレーション等も一緒にSQLServerのデータベースに移行してくれます。
大変便利です。ところが。。。。表題のとおり。仕方がないのでAccess2010がインストール
されている別のマシンで処理しました。

 移行の代替案としてSQLServerのインポート機能を利用しようと思いましたが、
これだどテーブルとそのデータだけなんですよね。

なぜ、MicrosoftはAccess2013で削除してしまったのか理由は分かりません。
今後のAccessバージョンで復活してくれることを願いつつ、Access2010は無くさずに
に大切に扱う使うこととします。

一覧表示 ▶︎ スタッフの日記

Windows オフライン ファイルの機能にハマッてしまいました。

2014年9月22日(staff)

 今のWindows OS(※1)には、オフライン ファイル(※2)と呼ばれるファイルの編集機能が備わっています。これは、ネットワーク上のサーバ等の共有フォルダのファイルをクライアントパソコンからアクセスする際、ネットワークが切断していても、パソコン上にあらかじめ共有フォルダのファイルがコピーされていて編集等ができて、その後、ネットワークが繋がった時にパソコン側で操作してファイルの同期をとる。という仕組みのようです。

 さて、こんな機能を知らずにシステムを運用していると、次のような不具合が発生します。

『あるパソコンで共用フォルダのファイルを更新したが、別のパソコンでそのファイルをみると
内容が反映されていない。』

 今回のケースは、Microsoft Accessで作成したシステムで起きました。DBをサーバの共有フォルダに置いて入力フォームはパソコン上に置いてデータの入出力を行うシステムです。

半日悩みに悩んで、上記の内容にたどりついて解決。とりあえず各パソコンで、"オフライン ファイルを無効にする"設定をしました。


・[コントロールパネル]を開く
・[同期センター]を選択
・同期センター画面で[オフライン ファイルの管理]を選択
・オフラインファイル ダイアログで[オフライン ファイルを無効にする]

ブログ画像1ブログ画像1ブログ画像2ブログ画像1

 

 

 

 

 

 

 


 後で調べると、以下の共有フォルダ側のプロパティで、オフラインの利用をできない設定にできることが分かりました。これをしておけば、台数の多いクライアント側パソコンで設定は不要になりますね。


・[共有フォルダ]のプロパティを開く
・[共有]タブ選択
・[詳細な共有]ボタンを押す
・[詳細な共有]ダイアログの[キャッシュ]ボタンを押す
・[オフラインの設定]ダイアログの"共有フォルダーにあるファイルやプログラムはオフラインで利用可能にしない"
  を選択する。
ブログ画像2ブログ画像2

 

 

 

 

 

 

 

 ここまできて、当然「そもそも同期がとれれば問題ないんじゃないか?」という疑問もでてきます。ためしに同期センター(※3)の機能を使って同期をとる操作をしてみましたが、RDBの中身の同期を取ることはさすがに無理なようです。(そんな事ができたらすごいことですね)

以上、備忘録もかねて。


※1 利用可能なWindows OS
   古くはWindows2000の頃から備わっていた機能らしいですが、現時点では、Windows7 Pro,  Windows 8 Proが利用可能。
   (各OSバージョンのProffesional Editionが利用可能か?)

※2 オフライン ファイルとは
http://windows.microsoft.com/ja-jp/windows/understanding-offline-files#1TC=windows-7

※3 同期センター
http://windows.microsoft.com/ja-jp/windows7/what-is-sync-center

 

一覧表示 ▶︎ スタッフの日記

メモ書きツール:ライプ

2014年4月22日(関)

ちょっとしたメモ、を取る時のお役立ちアプリを紹介します。

手帳感覚でツールにメモる。

保存先がクラウドなので、PCで仕事中にメモしたものを出先でモバイルからチェック、なんてことができちゃう。

なかなか便利そうです。

wri.pe = ライプ って、write(書く)とtype(タイプ)の複合語でしょうか。

記事紹介はこちら

 Webブラウザだけで利用できるシンプルで軽快なメモ帳アプリ

ライプサイトはこちら  https://wri.pe/

一覧表示 ▶︎ Webノウハウ

「組合」という言葉に思う

2014年1月27日(平石)

コンピュータユニオンは、「企業組合」です。「企業」であってかつ「組合」でもあります。この「組合」という言葉について、昔、ある組合員がうまいことを言っていたのを思い出しました。

「組合」のメンバーを「組合員」と言います。この言葉の真ん中の「合」という字を除くと「組員」となりますが、彼によると、この「組員」という言葉は、暴力団のメンバーを表す言葉だそうです。そして、われわれの組織と彼らの組織との違いは、まさに「合=愛」の有無なのだそうです。

改めて私たちのコンピュータユニオンを見ると、そこには確かに愛があふれています。私はこの、愛にあふれた組織を大切にしていきたいと思っています。

一覧表示 ▶︎ スタッフの日記