ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文
社員マスタメンテ(MySQL) を 商品マスタメンテ(Oracle) へモディファイ
日時: 2013/05/10 11:11
名前: lightbox



↓PHP( MySQL ) 社員マスタメンテ
http://lightbox.on.coocan.jp/r205/2008/syain_mtn_04.lzh

社員マスタ
列名型値型定数型名最大桁精度スケールNULL主キーデフォルト型説明備考
1社員コード129adCharvarchar8N1文字列値
2氏名129adCharvarchar100文字列値
3フリガナ129adCharvarchar100文字列値
4所属129adCharvarchar8文字列値
5性別3adIntegerint114 バイトの符号付き整数
6作成日135adDBTimeStampdatetime日付/時刻スタンプ
7更新日135adDBTimeStampdatetime日付/時刻スタンプ
8給与3adIntegerint114 バイトの符号付き整数
9手当3adIntegerint114 バイトの符号付き整数
10管理者129adCharvarchar8文字列値
11生年月日135adDBTimeStampdatetime日付/時刻スタンプ


Oracle
列名型値型定数型名最大桁精度スケールNULL主キーデフォルト型説明備考
1社員コード129adCharVARCHAR24N1文字列値
2氏名128adBinaryNVARCHAR2100バイナリ値
3フリガナ128adBinaryNVARCHAR2100バイナリ値
4所属129adCharVARCHAR24文字列値
5性別131adNumericNUMBER10固定精度およびスケールの正確な数値
6作成日135adDBTimeStampDATE日付/時刻スタンプ
7更新日135adDBTimeStampDATE日付/時刻スタンプ
8給与131adNumericNUMBER15固定精度およびスケールの正確な数値
9手当131adNumericNUMBER15固定精度およびスケールの正確な数値
10管理者129adCharVARCHAR24文字列値
11生年月日135adDBTimeStampDATE日付/時刻スタンプ
↓Oracle 接続
$conf_db_type = 5;		// Oracle
$conf_db_charset = 'SJIS';
$conf_client_charset = "EUC-JP";
// 接続( Oracle は DSN、最初の lightbox はユーザー、最後の lightbox はパスワード )
$SQL = new DB( "Oracle","","lightbox","lightbox" );
メンテナンス

Oracle 環境で社員マスタメンテを動作させる ( No.1 )
日時: 2008/07/25 09:58
名前: lightbox


日時: 2008/07/25 09:58
名前: lightbox
手順1
control.php の 接続情報を Oracle 用に変更する

↓

エラーが発生する

↓

WEB ページを 右クリックしてソースを表示

ORA-00904: "DATE_FORMAT": 無効な識別子です。
↓ DATE_FORMAT を削除 syain.sql
select
	社員マスタ.社員コード
	,社員マスタ.氏名
	,社員マスタ.フリガナ
	,社員マスタ.所属
	,社員マスタ.性別
	,社員マスタ.作成日
	,社員マスタ.更新日
	,社員マスタ.給与
	,社員マスタ.手当
	,社員マスタ.管理者
	,管理者参照.氏名 as 管理者名
	,DATE_FORMAT(社員マスタ.生年月日,'%Y/%m/%d') as 生年月日 
 from 社員マスタ
 left outer join 社員マスタ 管理者参照
 on 社員マスタ.管理者 = 管理者参照.社員コード
 where 社員マスタ.社員コード = '{$_POST['scode']}'
select
	社員マスタ.社員コード
	,社員マスタ.氏名
	,社員マスタ.フリガナ
	,社員マスタ.所属
	,社員マスタ.性別
	,社員マスタ.作成日
	,社員マスタ.更新日
	,社員マスタ.給与
	,社員マスタ.手当
	,社員マスタ.管理者
	,管理者参照.氏名 as 管理者名
	,社員マスタ.生年月日
 from 社員マスタ
 left outer join 社員マスタ 管理者参照
 on 社員マスタ.管理者 = 管理者参照.社員コード
 where 社員マスタ.社員コード = '{$_POST['scode']}'
手順2
問い合わせの接続情報を変更
conf.php
<?

$conf_client_charset = "euc-jp";
$conf_common_path1 = "http://homepage2.nifty.com/lightbox/geneuc/";
$conf_common_path2 = "http://homepage2.nifty.com/lightbox/gen/";

// 1:MySQL, 2:SQLServer, 3:PostgreSQL, 4:MDB(COM), 5:Oracle(COM/ADO), 6:Oracle(COM/OO4O)
$conf_db_type = 5;

// Host Name( or Instance )
$conf_db_host = "Oracle";

// Database Name
#$conf_db_db = "lightbox";

// User Name
$conf_db_user = "lightbox"; 

// Password
$conf_db_pass = "lightbox"; 

$conf_db_charset = 'SJIS';
$conf_client_charset = "EUC-JP";

?>
このアーティクルの参照用URLをクリップボードにコピー メンテナンス
商品マスタの作成 ( No.2 )
日時: 2008/07/25 10:07
名前: lightbox
列名型値型定数型名最大桁精度スケールNULL主キーデフォルト型説明備考
1商品コード129adCharVARCHAR24N1文字列値
2商品名129adCharVARCHAR275文字列値
3在庫評価単価131adNumericNUMBER15固定精度およびスケールの正確な数値
4販売単価131adNumericNUMBER15固定精度およびスケールの正確な数値
5商品分類129adCharVARCHAR23文字列値
6商品区分129adCharVARCHAR21文字列値
7作成日135adDBTimeStampDATE日付/時刻スタンプ
8更新日135adDBTimeStampDATE日付/時刻スタンプ
9備考129adCharVARCHAR22000文字列値
10削除フラグ129adCharVARCHAR21文字列値
手順
SQL の窓で作成
( または CREATE 文を作成して実行 )
このアーティクルの参照用URLをクリップボードにコピー メンテナンス
画面の変更 ( No.3 )
日時: 2008/07/25 10:39
名前: lightbox
手順1
テーブル項目を比較して、使える既存のものを利用する
それぞれのテーブルの列の内容を整理
	A) 性別 => 商品区分
	B) 管理者 => 商品分類
	C) 氏名 => 商品名
	D) 給与、手当 => 単価
手順2
固定部分の表現を変更

社員コード => 商品コード
氏名 => 商品名
性別 => 商品区分
給与 => 在庫評価単価
手当 => 販売単価
管理者 => 商品分類

いらない項目のタイトルを空白にする
	A) フリガナ
	B) 所属
	C) 生年月日
手順3
追加項目の実装

※ INPUT 要素の name 属性を追加するのに、既存と重複しないようにする
※ 既存の TR、TD を使って、テーブルの最後に行要素として追加するようにする

<TR>
<TD class="column">備考</TD>
<TD class="column">
	<TEXTAREA
		name="In29"
	><?= $_POST['In29']?></TEXTAREA>
</TD>
</TR>
※ 会話のプロテクト処理を追加
	<TEXTAREA
		<?= $READONLY ?>
		name="In29"
	><?= $_POST['In29']?></TEXTAREA>
※ テキストエリアは、開始タグ、終了タグを必ず同じ行に書く
このアーティクルの参照用URLをクリップボードにコピー メンテナンス
データの表示処理 ( No.4 )
日時: 2008/07/25 10:58
名前: lightbox
手順1
商品分類の結合を考慮した、SQL を作成する

select
	商品マスタ.商品コード
	,商品マスタ.商品名
	,商品マスタ.在庫評価単価
	,商品マスタ.販売単価
	,商品マスタ.商品分類
	,商品マスタ.商品区分
	,商品マスタ.備考
	,商品分類マスタ.名称
 from 商品マスタ
 left outer join 商品分類マスタ
 on 商品マスタ.商品分類 = 商品分類マスタ.商品分類
 where 
	削除フラグ is NULL
手順2
順番に、画面フィールドへデータをセットする

	if ( $Column ) {
		$_POST['sname'] = $Column['商品名'];
#		$_POST['In22'] = $Column['フリガナ'];
#		$_POST['In23'] = $Column['所属'];
		$_POST['In24'] = $Column['商品区分'];
		$_POST['In25'] = $Column['在庫評価単価'];
		$_POST['In26'] = $Column['販売単価'];
		$_POST['In27'] = $Column['商品分類'];
		$_POST['In27ref'] = $Column['名称'];
#		$_POST['In28'] = $Column['生年月日'];
		$_POST['In29'] = $Column['備考'];
	}
このアーティクルの参照用URLをクリップボードにコピー メンテナンス
更新処理の変更 ( No.5 )
日時: 2008/07/25 11:45
名前: lightbox
手順1
※ 更新用の SQL を作成している部分の変更
※ 更新前に存在チェックしている SELECT 文に、削除フラグの処理を追加する

A) 修正
$upd->set( 'update 商品マスタ' );
$upd->set( 'set' );
$upd->set( '商品名', $_POST['sname'], 1 );
$upd->add( '商品区分', $_POST['In24'], 1 );
$upd->add( '更新日', 'sysdate', 3 );
$upd->add( '在庫評価単価', $_POST['In25'], 2 );
$upd->add( '販売単価', $_POST['In26'], 2 );
$upd->add( '商品分類', $_POST['In27'], 1 );
$upd->add( '備考', $_POST['In29'], 1 );
$upd->set( 'where 商品コード',$_POST['scode'], 1 );
※ 管理者と商品分類では参照時の仕様が違うので、余計なイベントをとりあえず外して処理する
<INPUT
	<?= $READONLY ?>
	type=text
	name=In27
	value="<?= $_POST['In27'] ?>"
	maxlength="3"
	size="5"
	onKeydown='nextField("In28");'
> <SPAN style='color:silver'>(In27)</SPAN>
B) 新規
$upd->set('insert into 商品マスタ');
$upd->set('(商品コード');
$upd->add( '商品名' );
$upd->add( '商品区分' );
$upd->add( '作成日' );
$upd->add( '更新日' );
$upd->add( '在庫評価単価' );
$upd->add( '販売単価' );
$upd->add( '商品分類' );
$upd->add( '備考' );
$upd->set( ')' );
$upd->set( ' values(' );
$upd->set( $_POST['scode'], 1 );
$upd->add( $_POST['sname'], 1 );
$upd->add( $_POST['In24'], 1 );
$upd->add( 'sysdate', 3 );
$upd->add( 'sysdate', 3 );
$upd->add( $_POST['In25'], 2 );
$upd->add( $_POST['In26'], 2 );
$upd->add( $_POST['In27'], 1 );
$upd->add( $_POST['In29'], 1 );
$upd->set( ')' );
C) 削除
$upd->set( 'update 商品マスタ' );
$upd->set( 'set' );
$upd->set( "削除フラグ = 'D'");
$upd->set( 'where 商品コード',$_POST['scode'], 1 );
このアーティクルの参照用URLをクリップボードにコピー メンテナンス