これはAPEXコードに関連する質問であり、VisualForceコントローラークラスに固有のものです。VisualForce(APEX):既知のIDを持つレコードを更新する
質問
既知のAccountIdでレコードを更新しようとしています。しかし、私がsObject宣言でIDを設定すると、SalesForceはIDの最後に文字列 "IAR"を追加しています!
誰かが私に何をしているのかを教えてもらえますか?私が間違った方法でこれを行うのであれば、quicksave()やupdateの外でカスタムメソッドからレコードを更新する正しい方法()。
説明
だから、基本的に、ユーザーは、エンコードされたIDで、このページに来ると、それは、IDまたはレベルを持つことになりますどちらか。これは文字列を取る関数decode()によって処理されます。 "id"/"level"次に、アカウント変数「acc」を作成します。この変数は、「insert acc;」というステートメントで挿入または更新する前に、すべてのアカウント情報を保存するために使用されます。 「acc.id = salesForceID」で「acc」のIDを設定できないため、「acc」が作成されたときに設定することにしました。次のAPEXコードは、 "acc"変数を宣言するときにコンストラクタで発生します。 ?001Q000000OognA
アカウントID:
URL変数は
/アプリケーションID = 001Q000000OognA
APEXコントローラクラス(要約版)
salesForceID = decode('id');
debug1 = 'salesForceID: ' + salesForceID;
acc = new Account(id = salesForceID);
debug2 = 'Account ID: ' + acc.id;
デバッグ出力
salesForceID合格します:0 01Q000000OognAIAR
コメント
私は与えられたコードの簡略化のために謝罪 が、これはセキュリティ上の理由からです。私は基本的にaccのIDを挿入/ upsert /それを更新する前に設定しようとしています。私はなぜそれが "IAR"を追加するか、または入力AccountIdを与えられたレコードを更新するための代替方法を追加することができるかどうかの説明に感謝します。私はURL変数としてidを渡すとSalesForceが自動的にこれを行うことを理解しています。しかし、私は3つの別々のユースケースがあるので、ページに複数の変数を渡しています。
ありがとうございました。
感謝:) – TristamJ