You need to sign in to do that
Don't have an account?
NDS.ENDO
PDF出力と同時にレコード更新(PDF出力済フラグ)の可否について
リストビューよりPDF出力したいレコードを選択し、
VisualForceページのrenderas機能を使い、PDF出力(単票形式:複数ページ)し、
且つ、PDFに出力したレコードに対し、レコード更新(PDF出力済フラグをtrue)したい
と思っております。
update処理で、DML currently not allowedのエラーが発生し、異常終了してしまいます。
updateの処理をコメントアウトすると、正常にPDF出力(複数ページ)されます。
PDF出力とレコード更新は同時に出来ないのでしょうか。
あるいは、上記エラーが発生する原因としてどのような事が考えられるでしょうか。
PDFを表示するVisualforceコントローラーのコンストラクタでupdateしていませんか?
コンストラクタでDMLを実行することは出来ません。
代わりにpageタグのactionからinit処理みたいのを呼び出して、そこで更新すればいけると思います。
All Answers
PDFを表示するVisualforceコントローラーのコンストラクタでupdateしていませんか?
コンストラクタでDMLを実行することは出来ません。
代わりにpageタグのactionからinit処理みたいのを呼び出して、そこで更新すればいけると思います。
最初に、情報ありがとうございます。
ご指摘の通り、コンスラクタの中で更新しておりました。
(その後、Update処理の部分のみ、別[子]クラスで処理するように分離しましたが、結果は同じでした。)
拡張コントローラーにUpdate処理のメソッドを追加しましたが、
VisualforceのActionにUpdate処理のメソッド名を指定しても、不明なメソッドとして受け付けてくれませんでした。
メソッドの指定が悪いのでしょうか?
-- 拡張コントローラー --
public with sharing class ChangeCourse_ExCtl {
/* コンストラクタ */
public ChangeCourse_ExCtl(ApexPages.StandardSetController controller) {
matterList = Database.query(soql);
}
/* メソッド */
public void RecordUpdate(List<カスタムオブジェクト> matterList) {
for(カスタムオブジェクト m : matterList){
m.フラグ = true;
}
update matterList;
}
08-27-2010 06:20 PMに当ボード記載後(メソッドを認識出来ない件)、
色々と試してみたところ、メソッドの認識とメソッドでのデータ更新は対応は解決する事が出来ました。
ありがとうございました。
参考までに記載すると、
Visualforceページからメソッドを認識させるために、以下の対応をしました。
・ PageReferenceにてメソッドを定義する事。
・引数なしで定義する事。
-追伸-
Visualforceページにaction(メソッドの使用)を定義する事で、以下の問題(限界)が判明しました。
・PDF出力が正常に処理されない。(罫線が出力されない。改ページ処理がされない。)
よって、PDF出力を諦め、HTML出力に切り替える事になりそうです。
(HTML出力時の問題として、ブラウザ[Google Chrome]によっては、網掛けがプリンター出力時に印字されない弊害はあります)