2014年6月9日月曜日

Access 2010 / Access 2013 (SQL Server を使用時)のメモ

Access 2013 で ADP がなくなり、 SQL Server からどのようにデータを取得するか困る。
クライアントに ODBC を登録してリンクテーブルする方法にしようとするも、台数が多く面倒なので、
以下 Access から ODBC に登録せずに SQL Server からデータを読み込む方法を検討中。

a) パススルークエリを使用する
Microsoft の以下「パススルー クエリを使用してデータベース サーバーで SQL を処理する」を参照 Access 2010, 2013 でもほぼ同じ
http://office.microsoft.com/ja-jp/access-help/HA010206488.aspx


b) クエリでテーブルを以下のように指定する(DAO、クエリ で使用)
例: データベース名: TESTDB,  ユーザー: test_user パスワード: test_pwd テーブル名: samples の場合
SELECT s.* FROM [ODBC;DSN=TESTDB;DATABASE=TESTDB;UID=test_user;PWD=test_pwd].samples s 

c) VBA から ADO を使って直接取得する


フォームの Recordset に直接 c) で設定した Recordset を入れたところエラーになるので、
b) の方法で設定した DAO の Recordset をフォームに設定するようにした。

普通にリンクテーブルを使うよりも若干表示等が早くなった気がするものの、この方法が良いかどうかは検証および検討中。

なおフォーム以外のコントローラーの Recordsource に対しては ADO は従来通り使える模様。

2014年5月5日月曜日

CM やらどこかでよく聴くクラシック曲


リンク先は Youtube :リンク切れてたらごめんなさい。

2013年3月12日火曜日

スマホ:画面サイズを合わせる(回転、Android、iphone 対応)


以下の bwidth = 640 は作成しているサイトの幅を指定する。
幅が 960px だったら、 bwidth = 960 とする。

<meta name="viewport" content="width=device-width">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>
<script>
$(window).bind('resize load', function(){
    var rw = $(window).width();

    var swidth = 320;  // 小さい機種などの解像度
    var bwidth = 640; // 自分のサイトのサイズ

    if(rw <= swidth) {
        $("html").css("zoom" , bwidth / swidth);
    }
    else {
        $("html").css("zoom" , rw / bwidth );
    }
    $("body").css("-webkit-text-size-adjust" , "100%");
});
</script>

一応要テスト。

2012年8月27日月曜日

IIS 7 (Windows 2008 r2 64ビット) + PHP 5.3 に OCI8 をインストールする

手順自体は、

1) Oracle の HP から Oracle Client Instant をダウンロードする
* ユーザー登録が必要
* OS が 64bit でも PHP の OCI8 を使う場合は 32bit 版のOracle Client Instant (basic) をダウンロードする事!!

2) 適当な所に解凍 (c:/oracle 等)


3) 以下の環境変数に上記 2) の値を追加
Path, NLS_LANG, LD_LIBRARY_PATH
詳しくは PHP のマニュアル参照 http://php.net/manual/ja/oci8.installation.php 


4) php.ini の extension のコメントを外す

extension=php_oci8.dll      ; Use with Oracle 10gR2 Instant Client
extension=php_oci8_11g.dll  ; Use with Oracle 11gR2 Instant Client

5) Windows を再起動して上記 3) の環境変数を反映させる



6) phpinfo 関数などで OCI8 が利用できるか確認。「OCI8」の記述があれば使用できる


[注意]
上記 1) にもあるように PHP で OCI8 関数を使用する場合には Oracle Client Instant は 32bit 版をDLすること!これに気づかず長い事試行錯誤してしまった‥。



2012年5月14日月曜日

PHP 5.3 で CakePHP 1.3 でエラー: DEPRECATED が表示される


cake/libs/configure.php ファイルで error_reporting(E_ALL) 関数の後ろに追加

  error_reporting(E_ALL);

  // 追加
  if (error_reporting() > 6143) {
  error_reporting(E_ALL & ~(E_DEPRECATED|E_STRICT|E_NOTICE));
  }
  // 追加

大体 290~300行目くらい?

2012年4月23日月曜日

ECCUBE 2.11.5 (MySQL) で管理ページにログインできない場合


ECCUBE を開発環境から本番環境にアップした際に、管理ページにログインできなくなってしまった。
ID、PWD は間違っていないのにログインができず非常に困った。

原因は、DB を dump した際の dtb_member テーブルのパスワードと Salt の値が開発環境と異なるためらしい。
以下はその場しのぎ的な処理。
dtb_member の login_id, password, salt を更新する SQL を生成する関数。

function sfGetAuthInfo ($loginid, $password) {
$sql = "";
$result = "";
if ( AUTH_TYPE == 'PLAIN') {
$result = $password;
}
else {
$_tmp = sprintf("%s:%s", $password, AUTH_MAGIC);
$result = hash_hmac(PASSWORD_HASH_ALGOS, $_tmp, AUTH_MAGIC);
}
$sql = sprintf("UPDATE dtb_member SET login_id='%s', password='%s', salt='%s' WHERE id=2", $loginid, $result, AUTH_MAGIC);
return $sql;
}
実行は以下のように実行する。

$loginid = "ログイン名";
$password = "パスワード";
$sql = sfGetAuthInfo ( $loginid, $password )
echo $sql;

上記を ECCUBE 内のどこかのファイル( html/index.php など)で実行し、結果に出力される SQL をMySQL上で実行して、本番環境用のパスワードに書き換える。




2012年4月5日木曜日

Apache の access_log に PHP の情報を表示する

■目的:
自前会員システムの会員毎のアクセスログを収集したい。

■やりたいこと:
Apache の access_log に PHP で取得される一部の変数/セッションを書き出しできるようにしたい。

■ PHP の Apache 関数を使う。
http://jp.php.net/manual/ja/function.apache-note.php


PHP の変数が出力できれば、
acces_log -> シェルで会員ID(上記 apache_note で登録する変数 )毎に集計(cron) -> 集計結果を HTML or DB に出力という流れを試してみる。