Как получить данные в текстовом поле в SSRS, если набор данных не содержит значения?

#sql #reporting-services

#sql #отчеты-службы

Вопрос:

У меня есть четыре набора данных в SSRS. Они ниже-

Отправитель- компания, ПОНом подзаголовок- Компания, ПОНом, ПОЛина Порель- компания, количество заданий, POLine, PONum, ProjectID JobHead- Компания, JobCOde, JobNum, PersonID, ProjectID

В POHeader есть текстовое поле (руководитель проекта), в котором я хочу показать идентификатор пользователя (название руководителя проекта). Однако POHeader не содержит никакого поля PersonID. Я думаю, что один из способов сделать это — связать таблицы POHeader и PORel, которые будут соответствовать PONum и возвращать JobNum, а возвращаемое JobNUm будет сопоставлено с JobHead.Количество заданий.

Если они совпадают, то будет возвращен идентификатор пользователя, который будет показан в текстовом поле (Project Lead) в POHeader.

Однако у меня мало опыта в SQL. Было бы здорово, если бы кто-нибудь мог мне помочь в этом отношении.

Решением здесь может быть функция поиска, но сравнение одного возвращаемого значения с существующим значением других данных кажется мне сложным.

ОБНОВЛЕНИЕ кода SQL-

 ="SELECT
    [PlannerID].[JobHead_PersonID] as [JobHead_PersonID]
from  (select 
    [POHeader].[PONum] as [POHeader_PONum],
     [JobHead].[PersonID] as [JobHead_PersonID],
    [JobHead].[JobNum] as [JobHead_JobNum]
from Erp.POHeader as POHeader
 inner join Erp.PODetail as PODetail on 
    POHeader.Company = PODetail.Company
    and POHeader.PONum = PODetail.PONUM
inner join Erp.PORel as PORel on 
    PODetail.Company = PORel.Company
    and PODetail.PONUM = PORel.PONum
    and PODetail.POLine = PORel.POLine
inner join Erp.JobHead as JobHead on 
    PORel.Company = JobHead.Company
    and PORel.JobNum = JobHead.JobNum)  as PlannerID
  right outer join Erp.POHeader as POHeader1 on 
    POHeader1.PONum = PlannerID.POHeader_PONum 
    POHeader.Company = PODetail.Company
     and POHeader.PONum = PODetail.PONUM
inner join Erp.PORel as PORel on 
   PODetail.Company = PORel.Company
    and PODetail.PONUM = PORel.PONum
   and PODetail.POLine = PORel.POLine
 inner join Erp.JobHead as JobHead on 
    PORel.Company = JobHead.Company
    and PORel.JobNum = JobHead.JobNum)  as PlannerID
right outer join Erp.POHeader as POHeader1 on 
    POHeader1.PONum = PlannerID.POHeader_PONum"
  

SQL-код, который я написал, чтобы вернуть PersonID, но мне нужно знать две вещи-

  1. Куда поместить этот подзапрос?
  2. Как вернуть значение из подзапроса в текстовом поле заголовка проекта, используя выражение?

Буду признателен, если смогу получить несколько предложений. Спасибо

Комментарии:

1. Лучший способ получить справку по stackoverflow — показать, что вы что-то пробовали. Вы пробовали писать SQL-запрос или какие-либо инструкции в SSRS? Вероятно, вы можете сделать то, о чем просите, проще в SQL, но логика возможна и в SSRS.

2. Привет, Стив, это запрос, который я написал 1. = Поиск (поля! ПОНум.Значение, поля! ПОНум.Значение, поля! JobNum.Value, «POHeader») Этот запрос возвращает номер задания (JobNum) после того, как он соответствует понуму, который сохранен в текстовом поле 2. =Поиск (ReportItems! Textbox14.Значение, поля! JobNum.value, Поля! PersonID.value, «POHeader») Этот запрос соответствует номеру задания и должен возвращать PersonID (руководитель проекта). Однако это не так. Возможно, я делаю здесь что-то не так.

3. Это не SQL-запрос.

4. Извините, это выражение, которое я ввел в текстовом поле, соответствует двум полям dataset 1 и dataset2 и возвращает третье значение и снова сопоставляет третье значение с полем i dataset 3. Теперь я определил проблему. Значение, которое я пытаюсь получить из набора данных 3, на самом деле не находится в наборе данных 3

5. У вас есть доступ для изменения SQL. Хотя вы можете объединить несколько наборов данных в SSRS, намного проще написать хороший оператор SQL, чем выполнять логику такого типа в SSRS? Если у вас есть SQL, опубликуйте его вместе с образцами данных.

Ответ №1:

SSRS использует наборы данных для получения данных из базы данных, и каждое поле в наборе данных может быть отображено в отчете. Чтобы добавить поле в набор данных, оно должно быть возвращено базовым запросом набора данных. Просмотрите свойства набора данных и посмотрите на запрос. Если оно имеет вид «выберите a, b, c из таблицы», добавьте нужное поле в список столбцов (a, b, c и т.д.). Если это хранимая процедура, найдите кого-нибудь, кто может отредактировать эту процедуру, чтобы включить ваше отсутствующее поле. Когда вы это сделаете, обновите список полей для набора данных. Теперь ваше новое поле должно быть доступно для использования в отчете. Конечно, если вы нарушили sql для набора данных, вам нужно будет найти кого-то, кто знает базовую базу данных, чтобы помочь вам.

Комментарии:

1. Привет, приятель, Это запрос, который я написал 1. = Поиск (поля! ПОНум.Значение, поля! ПОНум.Значение, поля! JobNum.Value, «POHeader») Этот запрос возвращает номер задания (JobNum) после того, как он соответствует понуму, который сохранен в текстовом поле 2. =Поиск (ReportItems! Textbox14.Значение, поля! JobNum.value, Поля! PersonID.value, «POHeader») Этот запрос соответствует номеру задания и должен возвращать PersonID (руководитель проекта). Однако это не так. Возможно, я делаю здесь что-то не так.

2. Привет @Programnik Я добавил SQL-запрос. Если вы можете взглянуть, это было бы для меня большой помощью. Спасибо, приятель

3. Привет @Programnik, я думаю, что ваше предложение правильное. Итак, я добавил подзапрос в базовый запрос к набору данных. Однако, я, вероятно, допустил там какую-то ошибку. Я не могу получить представление отчета сейчас.