System.SObjectException: строка SObject была получена через SOQL без запроса запрошенного поля:

У меня есть настраиваемый объект с именем Technology__c и объект соединения с именем AccountTechnologies, который является объектом соединения между Account и Technology__c. Таким образом, AccountTechnologies имеет отношение основных деталей с обеих сторон. Я добавил сводное поле count__c в Technology__c, чтобы получить подсчет. Но когда я обращаюсь к нему на странице визуальной силы, я получаю следующую ошибку.

      System.SObjectException: SObject row was retrieved via SOQL without querying the requested field: Technology__c.count__c 

Ниже приведен код страницы visualforce.

      <apex:pageBlockTable title="Technologies" value="{!AllTechnologies}"
                var="t">
                <apex:column value="{!t.Name}" headerValue="Technologies" />
                <apex:column value="{!t.count__c}" headerValue="Count" width="20%">

                </apex:column>        
            </apex:pageBlockTable>

person yatish mehta    schedule 25.01.2012    source источник
comment
Используете ли вы стандартный контроллер для страницы Visualforce или настраиваемый контроллер (или расширение)?   -  person Matt K    schedule 25.01.2012


Ответы (1)


Вам нужно будет добавить поле Count__c к вашему запросу в вашем пользовательском контроллере.

-- Редактировать --

Если вы запрашиваете технологии, запрос будет выглядеть следующим образом:
[Select Id, Name, Count__c From Technology__c];

Если вы запрашиваете объект соединения, вам нужно будет запросить связь с помощью подзапроса. Вы можете проверить определение объекта Technology или AccountTechnologies (Настройка приложения > Создать > Объекты) и щелкнуть поле Master-Detail, чтобы найти имя дочерней связи. Добавьте __r к имени этой связи, чтобы определить, из какого объекта следует выполнять подзапрос.

Чтобы получить значения Technology__r в другой объект, вы должны использовать метод getSObjects() для учетной записи. В этой документации есть отличный пример внизу .

Кроме того, ознакомьтесь с документацией по пользовательскому контроллеру. Информация.

person Matt K    schedule 25.01.2012
comment
но это колонка, и технология постоянно меняется. как передать это пользовательскому контроллеру, чтобы его можно было увидеть в VF - person yatish mehta; 25.01.2012
comment
Переменную t необходимо передать методу в контроллере, а затем вернуть в VF для отображения счетчика. я не знаю, как передать параметр t в контроллер и обработать его так, чтобы значение отображалось в столбце - person yatish mehta; 25.01.2012
comment
как мне передать var t контроллеру .. извините, я новичок в продажах - person yatish mehta; 25.01.2012
comment
Я отредактировал ответ выше, добавив описание того, как подзапросить объект технологии из учетной записи. Между документацией Custom Controller и динамической документацией SOQL у вас должно быть все готово. - person Matt K; 25.01.2012
comment
Переменная t задается <apex:pageblocktable>, ее не нужно передавать. Это единственный экземпляр (или одна запись из) Technologies. - person Matt K; 25.01.2012
comment
Но сводное сводное поле count__c хранит количество дочерних элементов, которые оно имеет в таблице соединения, поэтому y не работает technology__c.count__c. - person yatish mehta; 25.01.2012
comment
как мне получить доступ к Var t в моем контроллере? - person yatish mehta; 25.01.2012
comment
Count__c относится к аккаунту или технологии__c? Вы пытаетесь подсчитать количество записей о технологиях? Вар t недоступен в контроллере; вам нужно будет посмотреть список технологий (или Technology__r). - person Matt K; 25.01.2012
comment
Кажется, я наконец понял ваш вопрос. Я неправильно понял часть о наличии объекта между учетной записью и технологией. Должны ли несколько учетных записей быть связаны с несколькими технологиями? - person Matt K; 25.01.2012
comment
count__C в технологии__c. а AccountsTechnologiesAssociation — это таблица соединений со столбцами ChildofAccount и ChildofTechnology {основная информация с обеих сторон} - person yatish mehta; 25.01.2012
comment
отношение многие ко многим, которое хранится в AccountsTechnologiesAssociation__c - person yatish mehta; 25.01.2012
comment
И на странице Visualforce вы хотите отобразить все технологии для конкретной учетной записи или все учетные записи и все технологии? - person Matt K; 25.01.2012
comment
давайте продолжим это обсуждение в чате - person Matt K; 25.01.2012