バージョン選択

フォーラム

メニュー

オンライン状況

47 人のユーザが現在オンラインです。 (41 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 47
もっと...

サイト内検索

質問 > フロント機能 > 受注管理画面-CSVダウンロードで検索した注文の情報のみを出力する方法(出力項目のカスタマイズ後)を教えてください。

フロント機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
tsurtua
投稿日時: 2017/10/20 10:57
対応状況: −−−
常連
登録日: 2017/3/31
居住地:
投稿: 57
Re: 受注管理画面-CSVダウンロードで検索した注文の情報のみを出力する方法(出力項目のカスタマイズ後)を教えてください。
それは知りませんでした。

では、EXじゃない方に書いた処理が動かなければ、EXの方にちゅうもくするようにします。
ご丁寧にありがとうございます。

それでは本件は解決済にしておきます。
本当にありがとうございました。
yuh
投稿日時: 2017/10/19 18:58
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 受注管理画面-CSVダウンロードで検索した注文の情報のみを出力する方法(出力項目のカスタマイズ後)を教えてください。
Exに処理が書いてあればclassの方は無視されてExの処理がはしります。

好みの問題とはおもいますが、カスタマイズする場合はすべてExに書いた方が後で見た時にどの部分をカスタマイズしたかわかりやすいので、自分は全部Exに書くようにしています。


----------------


http://ec-lab.net/

tsurtua
投稿日時: 2017/10/19 17:16
対応状況: −−−
常連
登録日: 2017/3/31
居住地:
投稿: 57
Re: 受注管理画面-CSVダウンロードで検索した注文の情報のみを出力する方法(出力項目のカスタマイズ後)を教えてください。
できました!!!!
確かに、LC_Page_Admin_Order_Ex.phpでした。
ありがとうございます!
本当に助かりました。

後学のために質問させて頂きますが、
EXとそうじゃないファイルのどちらの処理を通っているかの判断はどうすればいいかご存知でしょうか?
これからもいろいろとカスタマイズをおこなう機会は出てくると思うので、ご存知であれば教えて頂きたいです。
yuh
投稿日時: 2017/10/19 17:07
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 受注管理画面-CSVダウンロードで検索した注文の情報のみを出力する方法(出力項目のカスタマイズ後)を教えてください。
LC_Page_Admin_Order_Ex.phpも確認してみてください。


----------------


http://ec-lab.net/

tsurtua
投稿日時: 2017/10/19 16:41
対応状況: −−−
常連
登録日: 2017/3/31
居住地:
投稿: 57
Re: 受注管理画面-CSVダウンロードで検索した注文の情報のみを出力する方法(出力項目のカスタマイズ後)を教えてください。
buildQueryの
search_order_id1、2のところに「dtb_order.」をつけて、
おっしゃる通りにやってみましたが、うまくいきません。。

試しに、
LC_Page_Admin_Order.phpのactionの
$this->buildQuery($key, $where, $arrWhereVal, $objFormParam);

の一行下で、
デバッグで$whereの中身を確認したところ、
「dtb_order.」
がついておりませんでした。
デバッグ自体はできているのでここを通っているはずではあると思うのですが。。

どういうことか分かりますでしょうか?


追記、
buildQueryの中、
$dbFactory = SC_DB_DBFactory_Ex::getInstance();

の1行上でデバッグしたところ、ログになにも出ていませんでした。
buildQueryの中は通っていないということなんでしょうか???
yuh
投稿日時: 2017/10/19 15:31
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 受注管理画面-CSVダウンロードで検索した注文の情報のみを出力する方法(出力項目のカスタマイズ後)を教えてください。
すいません、勘違いしてました。
ORDER BY order_id DESC


order_idがdtb_order_detailとdtb_orderにあるので、その部分も指定しないとダメです。
ORDER BY dtb_order.order_id DESC

こんな感じに変更してみてください

あと、buildQueryのカラム部分すべてに
dtb_order.
とつけてみてください。

                break;
            case 'search_order_id1':
                $where .= ' AND dtb_order.order_id >= ?';
                $arrValues[] = sprintf('%d', $objFormParam->getValue($key));
                break;
            case 'search_order_id2':
                $where .= ' AND dtb_order.order_id <= ?';

こんな感じで他のカラムすべてにも

多分それで解決するかとは思います。


----------------


http://ec-lab.net/

tsurtua
投稿日時: 2017/10/19 14:33
対応状況: −−−
常連
登録日: 2017/3/31
居住地:
投稿: 57
Re: 受注管理画面-CSVダウンロードで検索した注文の情報のみを出力する方法(出力項目のカスタマイズ後)を教えてください。
$whereに入っているのは、デバッグで確認したところ、
del_flg = 0 AND order_id >= ? AND order_id <= ?
だったので、

$sql = "SELECT dtb_order.order_id, dtb_order_detail.product_code, dtb_order_detail.product_name, dtb_order_detail.quantity 
        	FROM dtb_order 
        	INNER JOIN dtb_order_detail ON dtb_order.order_id = dtb_order_detail.order_id 
        	WHERE ".$where."
        	ORDER BY order_id DESC";

としています。
間違っていますでしょうか?

dtb_order INNER JOIN dtb_order_detail ON dtb_order.order_id = dtb_order_detail.order_id

の部分は何も変えておりません。


追記、
エラーメッセージに
[Native message: Column 'order_id' in where clause is ambiguous]
というのがあり、
where句のorder_idは、dtb_orderとtb_order_detailのどっちのorder_idなのか分からないよ!
と怒られているみたいですね。。

これ、どうしたらカラム名付きでwhere句を指定できるのでしょうか?
注文番号で検索する場合とそうじゃない場合でも対応できるようにしておきたいので、何かここで使える関数とかあればいいなと思います。
yuh
投稿日時: 2017/10/19 13:53
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 受注管理画面-CSVダウンロードで検索した注文の情報のみを出力する方法(出力項目のカスタマイズ後)を教えてください。
del_flg = 0を削除すると$whereに入っているのが AND ~~~
から始まる為にクエリのエラーが起こります。
もし、del_flg=0を削除したいのであれば、del_flg = del_flgと書き換えれば対応できます
ただ、del_flg = 1のデータはクレジット画面に行き戻るを押した場合にも発生するので、del_flg = 0はつけておいた方がいいかと思います。


よく見ると
dtb_order INNER JOIN dtb_order_detail ON dtb_order.order_id = dtb_order_detail.order_id

この部分ってなにか別に変更って行ってますか?


----------------


http://ec-lab.net/

tsurtua
投稿日時: 2017/10/19 13:45
対応状況: −−−
常連
登録日: 2017/3/31
居住地:
投稿: 57
Re: 受注管理画面-CSVダウンロードで検索した注文の情報のみを出力する方法(出力項目のカスタマイズ後)を教えてください。
yuh様ご返信ありがとうございます。

buildQueryは見落としていました。

まず、$whereには、[del_flg = 0 AND order_id >= ? AND order_id <= ?]が入っていたため、
教えて頂いた記述から[ del_flg = 0]を削除して修正してみました。

そののち、受注日で範囲指定して、検索を行うと無事範囲の分のみの情報を出力できたのですが、
注文番号で範囲指定して、検索をおこなったところ、
DB処理でエラーが発生しました。とのことで、以下のようなエラーが出ていました。

Fatal error(E_USER_ERROR): DB処理でエラーが発生しました。
SQL: [SELECT dtb_order.order_id, dtb_order_detail.product_code, dtb_order_detail.product_name, dtb_order_detail.quantity FROM dtb_order INNER JOIN dtb_order_detail ON dtb_order.order_id = dtb_order_detail.order_id WHERE del_flg = 0 AND order_id >= ? AND order_id <= ? ORDER BY order_id DESC]
MDB2 Error: unknown error
_doQuery: [Error message: Could not execute statement]
[Last executed query: PREPARE mdb2_statement_mysql_1149765bd7ce4298f8a082834e4ee62d5a240a480b FROM 'SELECT dtb_order.order_id, dtb_order_detail.product_code, dtb_order_detail.product_name, dtb_order_detail.quantity FROM dtb_order INNER JOIN dtb_order_detail ON dtb_order.order_id = dtb_order_detail.order_id WHERE del_flg = 0 AND order_id >= ? AND order_id <= ? ORDER BY order_id DESC']
[Native code: 1052]
[Native message: Column 'order_id' in where clause is ambiguous]

order_id >= ? AND order_id <= ?のところの
「?」に検索した注文番号が来ないといけないのでしょうか?

受注日で範囲指定したときは、
SELECT dtb_order.order_id, dtb_order_detail.product_code, dtb_order_detail.product_name, dtb_order_detail.quantity
FROM dtb_order
INNER JOIN dtb_order_detail ON dtb_order.order_id = dtb_order_detail.order_id
WHERE del_flg = 0 AND create_date >= ? AND create_date <= ?
ORDER BY order_id DESC
というように?でも動いているのですが違いがよくわかりません。。

ちなみに実業務では注文番号で範囲指定してCSVダウンロードをおこなうので、注文番号でできるのは必須という状況です。

何か分かりますでしょうか?
yuh
投稿日時: 2017/10/19 12:14
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 受注管理画面-CSVダウンロードで検索した注文の情報のみを出力する方法(出力項目のカスタマイズ後)を教えてください。
LC_Page_Admin_OrderのbuildQueryで組み立てたwhere句が$whereに入るはずです。
条件を付けて検索して試してください。
WHERE del_flg = 0


$sql = "SELECT dtb_order.order_id, dtb_order_detail.product_code, dtb_order_detail.product_name, dtb_order_detail.quantity 
        	FROM dtb_order 
        	INNER JOIN dtb_order_detail ON dtb_order.order_id = dtb_order_detail.order_id 
        	WHERE del_flg = 0 ".$where."
        	ORDER BY order_id DESC";

のような形でやればできるかと思います。


----------------


http://ec-lab.net/

(1) 2 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,885名です
総投稿数は110,000件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1295
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.