有没有人为Salesforce.com对象的SOQL转换做过SQL?
在我的应用程序中,我显示当前用户的列表.我这样要求:
List<User> Following = [SELECT Id, Name, SmallPhotoUrl
FROM User
WHERE Id IN (
SELECT ParentId
FROM EntitySubscription
WHERE SubscriberId = :UserInfo.getUserId())
AND Id != :UserInfo.getUserId()
LIMIT 96];
Run Code Online (Sandbox Code Playgroud)
这完全符合以管理员身份登录的情况,但我发现非管理员收到错误:
实施限制:EntitySubscription仅允许在指定LIMIT时对非管理员用户进行安全评估,最多为1000
好吧,没什么大不了的,我会像这样打一个极限:
List<User> Following = [SELECT Id, Name, SmallPhotoUrl
FROM User
WHERE Id IN (
SELECT ParentId
FROM EntitySubscription
WHERE SubscriberId = :UserInfo.getUserId()
LIMIT 1000)
AND Id != :UserInfo.getUserId()
LIMIT 96];
Run Code Online (Sandbox Code Playgroud)
容易,对吗?错误.这给出了以下内容:
期待一个正确的括号,发现'LIMIT'
好...
然后我试着把它分解出来:
List<EntitySubscription> sub = [SELECT ParentId
FROM EntitySubscription
WHERE SubscriberId = :UserInfo.getUserId()
LIMIT 1000]; …Run Code Online (Sandbox Code Playgroud) 当我在开发者控制台中执行此代码时
PushTopic pushTopic = new PushTopic();
pushTopic.ApiVersion = 23.0;
pushTopic.Name = 'Test';
pushTopic.Description = 'test';
pushtopic.Query = 'SELECT Id, Account.Name FROM Case';
insert pushTopic;
System.debug('Created new PushTopic: '+ pushTopic.Id);
Run Code Online (Sandbox Code Playgroud)
我收到此消息:
致命错误System.DmlException:插入失败.第0行的第一个例外; 第一个错误:INVALID_FIELD,不支持关系:[QUERY]
相同的查询在查询编辑器上运行正常,但是当我将其分配给推送主题时,我得到了INVALID_FIELD异常.
如果底线是异常消息所说的内容,Push Topic对象不支持这种关系,那么如何创建一个Push Topic对象来返回我正在寻找的数据?
我想知道字段的所有现有值是什么.
在SQL中,它将是这样的:
SELECT DISTINCT foo
FROM bar
Run Code Online (Sandbox Code Playgroud)
我如何使用salesforce的SOQL执行此操作?
使用Salesforce SOQL我可以使用以下内容获取所有者的ID:
SELECT Case.OwnerId
FROM Case
WHERE Case.CaseNumber = '00001234'
Run Code Online (Sandbox Code Playgroud)
然后,我可以在此查询中获取拥有该案例的用户的用户详细信息:
SELECT User.Id, User.Name, User.Custom_Field__c
FROM User
WHERE User.Id = '001A0000001abc1DEF'
Run Code Online (Sandbox Code Playgroud)
但我不能让它在一个声明中工作,我认为这是因为所有者!=用户,即使在这种情况下所有者实际上是用户.我试过了:
SELECT Owner.Custom_Field__c
FROM Case
WHERE Case.CaseNumber = '00001234'
Run Code Online (Sandbox Code Playgroud)
但是我得到一个错误,即Custom_Field__c不是有效字段.
我有SOQL查询,它根据where条件查询一些记录.
select id, name,account.name ... <other fields> from opportunity where eventname__c='Test Event'
Run Code Online (Sandbox Code Playgroud)
我还需要在机会中获取该帐户的相关联系详细信息.即我需要添加联系人的电子邮件ID,这些联系人都是机会中帐户的一部分.
对于每个机会,我需要获得与机会中的帐户关联的所有联系人电子邮件.
我真的无法弄清楚如何处理这个问题.参考文档我可以使用查询获取帐户的联系信息
SELECT Name,
(
SELECT LastName
FROM Contacts
)
FROM Account
Run Code Online (Sandbox Code Playgroud)
我怎样才能将这与机会一起使用?
谢谢
我为生日做了一个Apex Scheduler Class.当生日为2天时,该课程可以成功发送电子邮件给我们的导演.
但是,两天后生日时发送的电子邮件模板需要包含联系人的姓氏和生日.(电子邮件模板看起来是这样的:这是一个调度程序生成的电子邮件通知您名字的生日:{!Contact.FirstName},姓氏:{!Contact.LastName}是的{!Contact.Next_Birthday__c}.
在我的调度程序中,我使用SOQl语句在数据库中查询联系人的id和名字.
在我调用查询后,如何将我刚查询的信息转换为在电子邮件模板中使用的字符串/方法?
我的猜测是将查询结果作为字符串返回?任何建议表示赞赏!
这是我的代码:
global class BirthdayName implements Schedulable
{
global void execute (SchedulableContext ctx)
{
sendBirthdayEmail();
}
public void sendBirthdayEmail()
{
for(Contact con : [SELECT Contact.name, Id FROM Contact WHERE Next_Birthday__c = : system.Today().addDays(2)])
{
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
mail.setTemplateId('00XJ0000000M31w');
mail.setTargetObjectId('005J0000000JWYx');
mail.setSaveAsActivity(false);
Messaging.sendEmail(new Messaging.SingleEmailMessage[] {mail});
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个简单的SOQL查询,该查询返回与Contact和CampaignMember有关的信息。我正在尝试使用SOQL查询的结果填充自定义对象。但是,加载Visualforce页面时出现以下错误:
CampaignMember的字段Campaign.name无效
列出campaignMembers = [从CampaignMember中选择campaign.name,contact.id,contact.firstname,contact.lastname,status,campaignId,其中contactId ='003U000000U0eNq'和:campaigns中的campaignId];
for(Integer i = 0; i <campaignMembers.size(); i ++){
results.add(new CampaignMemberResult(
(String)campaignMembers [i] .get('CampaignId'),
(String)campaignMembers [i] .get('campaign.name'),
真正
));
}
我已经在开发人员控制台中单独运行了SOQL查询,并且查询成功。为什么不能在for循环中从SOQL查询中提取campaign.name?
这是我用APEX编写的第一段代码,所以我正在学习...知道一点Java(到研究生水平),但我不知道为什么这不起作用.
我知道它不会像之前告诉我那样给salesforce一个错误(因此最后注释掉了调试.我更改了联系人电子邮件,它只是这样做,但我没有收到任何电子邮件!这是代码,谢谢你有任何帮助!
trigger Test1 on Contact (after update) {
//IF Email has changed (look at the old email and compare to new)
if(trigger.old[0].Email != trigger.new[0].Email){
//Commit current transaction, reserver email capacity
Messaging.reserveSingleEmailCapacity(1);
//Create an email message object
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
//List<Messaging.SendEmailResult> results = new list<Messaging.SendEmailResult>();
//hold email address
String[] toAddresses = new String[] {trigger.new[0].Email};
//Assign new address string
mail.setToAddresses(toAddresses);
//specify return ad (assuming as being sent from server)
mail.setReplyTo('XXX@example.com');
//sender name
mail.setSenderDisplayName('Mr Apex Tester');
//Subject Specification
mail.setSubject('Subjected to …Run Code Online (Sandbox Code Playgroud)