カテゴリー: ブログ

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

    (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へのアップサイジング機能が無いのです

    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は無くさずに
    に大切に扱う使うこととします。

  • 『Googleニュース用RSSジェネレータ』と『単眼RSS』を使って労働運動に関る最新ニュースのコンテンツを作る

     今回は自分が興味のあるニュースを拾って、Webサイトに時系列で一覧表示する方法の紹介です。

     特定のニュースを収集する方法は、例えばニュースを配信するサイトが提供するRSSフィード情報をRSS対応ブラウザの「RSSリーダー」とか、「フィード」と呼ばれる機能を使って自動収集しておく、なんてやり方がありますね。でもこの方法だと、ブラウザのRSSリーダーで読む事しかできないので、何とかWebサイトに表示してニュースタイトルをクリックするとリンク先に飛べるようにしたいと思います。。。まずは、

    1.『Googleニュース用RSSジェネレータ』で、気になるキーワードが含まれるニュースのRSSフィードを生成する
      例えば、[雇用]というキーワードでRSSフィードを生成します。パラメータを選択して最後に「RSS生成」ボタンを押します。

     [Googleニュース用RSSジェネレータ  例)]

    ブログ画像4

     

     

     

     

     

     

     

     

     

    次に、

    2.ブログパーツ『単眼RSS』で、1で生成したRSSフィードによって自動取得した「ニュースタイトル」をリスト化するブログパーツを作成する
      『単眼RSS』のサイトで、いろいろパラメータ(簡単なもの)を設定します。1で生成したRSSフィードURLを入力します。最後に「貼付けコード生成」ボタンを押します。
      今回は、[雇用][労働]の2つのキーワードでニュースを選別してリスト化できるようにしました。

      [RSSフィード登録画面 例]

    ブログ画像5

     

     

     

     

     

     

     

     

     

    そして、

    3.2で生成したブログパーツをWebサイトにはめ込んでみる
      こんな感じになります。 如何でしょうか。こんな風にニュースが選別されて表示されていると、世の中の動きも把握しやすくなるのではないでしょうか。

    労働運動関連ニュース

     

    (2017/1/31) 「単眼RSS」を利用するとad広告が出てしまうため、削除しました。代替案は、2017/1/31の投稿“「Googleニュース用RSSジェネレータ」で収集したニュースをPHPで編集・成形してWebサイトに表示する”を参照してください。

  • 『Xmedia Recode』を使ってスマフォやデジカメで撮った動画をmp4形式に変換する

     前回のブログで紹介したメディアプレイヤー(Strobe Media Playback)が再生できる動画ファイルの形式は、mp4かflvの2択になるのですが、スマフォやデジカメで撮った動画ファイルの形式が、3gpp、m2tsだったりしたら困ってしまいますね。こんな時は、変換ソフトを使って変換してしまいます。今回はいろいろある変換ソフトの中からフリーソフトの『Xmedia Recode』(※1)を紹介します。

     このソフトは多数の形式に対応していて、大概の機器で撮った動画は網羅しているのではないでしょうか。変換時のパラメータも豊富で、分からない設定も多々あるのですが、動画再生に専門的な知識が無くてもデフォルトの設定で大体うまくいきます。この辺の詳細についてはいろいろなブログで紹介されているのでここでは省略します。m(..)m

      さて、このソフトを選んだ外せない理由がひとつあります。それは変換時の設定で、「ストリーミング Fast-Start」という設定がある、ということです。

    [Xmedia Recode 画面抜粋]

     この設定をして変換した動画ファイルは、ダウンロードしながら動画を再生できるようになります。(※2) 数十分の動画ファイルを全部ダウンロードしてから再生が始まるようでは、待つのが面倒になりますからこの設定は必要でした。では実際にどうなるか試してみましょう。

     桜のある風景(再生 00:07) 「ストリーミング Fast-Start」設定無し

     桜のある風景(再生 00:07) 「ストリーミング Fast-Start」設定有り

     どうでしょうか。7秒と短い動画ですが、「ストリーミング Fast-Start」設定無しの動画は、スタートボタンを押してから少し待ってから再生が始まることが感じられますね。youtube等では当たり前のように感じている再生ですが、自分で用意する場合はこんな設定が必要になりました。

  • Webサイトに組み込むメディアプレイヤー(Strobe Media Playback)の見せ方を一工夫


     動画をWebサイトで再生する方法の一つにメディアプレイヤーを利用する方法があります。
    メディアプレイヤーにもいろいろありますが、今回はオープンソースの有名どころでFlashで再生するStrobe Media Playback(※1)を利用します。
    インストール、動作パラメータの設定等の細かい説明は、いろいろなブログ等で公開されているのでここでは省きます。m(..)m
      さて、”見せ方を一工夫”ですが、タイトルにまでして実は大したことではありません。
    (本当に) 普通は、そのまま貼り付けるとこんな感じです。

     一工夫は、タイトルをクリックすると展開するようにしました。こうすることで、動画の一覧から見たい動画を選択できるようにした際、ちょっとすっきりします。

    桜のある風景(再生 00:07)

     方法は、aタグをクリックしたしたら、aタグ要素の下にメディアプレイヤー用のオブジェクトを追加する、です。コーディング例は以下の通り。

    [aタグの例]

    <p><a onclick="fOpenMovie(this, '動画ファイル名');return false;" href="javascript:void(0);">桜のある風景(再生 00:07) </a></p>

    [メディアプレイヤー用のオブジェクトを追加するjavascript 関数の例  fOpenMovie()]

    function fOpenMovie(oPara,strURL){
        // aタグのテキストを取得
        var n=oPara.firstChild;
        var aTagText ="";
        while(n){
            if(n.nodeName=="#text") aTagText = n.nodeValue;
            n=n.nextSibling;
        }
        // objectタグの生成
        var strValue = "src=" + encodeURIComponent(strURL);
       
        var strObjectTag = String();
        strObjectTag = "<span>" + aTagText + "</span><br />";
        strObjectTag = strObjectTag
                     + "<object width='470' height='320'>"
                     + "<param name='movie' value='(swfのURL) StrobeMediaPlayback.swf'></param>"
                     + "<param name='flashvars' value='" + strValue + "'></param>"
                     + "<param name='allowFullScreen' value='true'></param><param name='allowscriptaccess' value='always'></param>"
                     + "<param name='wmode' value='direct'></param>"
                     + "<embed src=~(swfのURL)StrobeMediaPlayback.swf' type='application/x-shockwave-flash' allowscriptaccess='always' allowfullscreen='true' wmode='direct' width='470' height='320 flashvars="
                     + "'" + strValue + "'></embed>"
                     + "</object>";

        // オブジェクトを追加する。
        var oElements = oPara.parentNode;
        oElements.innerHTML = strObjectTag;
        return false;
    }

    ※1 Strobe Media Playback ダウンロードサイト
    http://sourceforge.net/projects/smp.adobe/files/
     

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

     今の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

     

  • 問い合わせフォーム 「CreamForm 1.0 」を使用してみた。

     今やCMS(content management system)といえば、WordPressが代名詞的な存在になっていますね。けれども、個人的に管理しているサイトではMTOS(Movable Type Open Source)を使用しています。

     そのサイトでお問い合わせの機能を組み込みたくて、「CreamForm1.0」(※1)を見つけました。
    組み込んでみたところ、こんなエラーが!

     ”テンプレートファイルの読み込みが出来ませんでした: 許可されない場所からテンプレートファイルを読み込もうとしました。”
    ”plugins/CreamForm/tmpl/list.tmpl”

     原因は、Template.pm内、load_file()においてlist.tmplが見つからずにエラーになっていました。MTOSのバージョンアップに伴い、セキュリティ強化対策でプラグインのテンプレートをチェックする際、フルパスで一致しないとダメにしているようです。(ディレクトリートラバーサルに関係した対策か・・・・な?)
    対応として、CreamForm/View.pmのテンプレート定義パスをフルパスに変更して、アップロードしました。

    変更前
    sub _list_tmpl_path { 'plugins/CreamForm/tmpl/list.tmpl'; } # list template path
    sub _delete_tmpl_path { 'plugins/CreamForm/tmpl/delete.tmpl'; } # delete template path
    sub _detail_tmpl_path { 'plugins/CreamForm/tmpl/detail.tmpl'; } # detail template path

     

    変更後
    sub _list_tmpl_path { '(フルパス)/plugins/CreamForm/tmpl/list.tmpl'; } # list template path
    sub _delete_tmpl_path { '(フルパス)/plugins/CreamForm/tmpl/delete.tmpl'; } # delete template path
    sub _detail_tmpl_path { '(フルパス)/plugins/CreamForm/tmpl/detail.tmpl'; } # detail template path

    バージョンアップによって、他が動作しなくなることってよくあるんですよね。
    今はいい感じに収まっています。
    組合関係のサイトに構築に限らずいろんなところで活用できるプラグインだと思います。

    ※1 CreamForm1.0
        http://marooon.com/web/2011/10/movabletype-creamform.html

     

     

  • メモ書きツール:ライプ

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

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

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

    なかなか便利そうです。

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

    記事紹介はこちら

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

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

  • 組合主催のアンケートにありがちなダメな設問

    「消費税は低所得者の生活が苦しくなる税法です。あなたは消費税増税に反対しますか?」
    これはアンケートの中に主張を盛り込んでしまう、組合主催のアンケートにありがちなダメな設問例です。
     
    これを読んだ人は「ああなるほど、消費税はよくない」などとは思いません。
    むしろ、このような誘導的な文章に腹を立て不愉快になるでしょう。
     
    実際、消費税には安定した税収を確保できるといった利点もあり、誰しもが絶対的に反対しているとは限らないのです。
    それでは実態としてはどれぐらいが賛成あるいは反対しているのか、どんな意見があるのか。それを調べるのが本来のアンケートです。
    そのためにはアンケート項目自体が啓蒙的にならないように注意しなければなりません。
     
    フェアな態度のアンケート調査こそが信頼をよび、ひいてはアンケートを主催する組合の信頼につながります。