2011-07-14 13 views
2

これは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つの別々のユースケースがあるので、ページに複数の変数を渡しています。

ありがとうございました。

答えて

4

001Q000000OognAは、標準15文字のSalesforce IDです。 15文字のIDは大文字と小文字が区別されます。

001Q000000OognAIARは、そのIDの大文字と小文字を区別しない18文字のバージョンです。

いずれかが問題ありません。あなたはその違いについて心配する必要はありません。何らかの理由でパラメータなどで15文字のバージョンを使用する必要がある場合は、最後の3桁を安全に切り捨てることができます。ここ

詳細情報:jkraybillあなたの迅速な対応のためのhttp://www.salesforce.com/us/developer/docs/api/Content/field_types.htm

+0

感謝:) – TristamJ

関連する問題