Можно попросить пример (рабочий) для простого Select для элемента Script task?
Нужен выбор всего одного поля из колонки c возможностью использования полученного значения в проекте
Пробую так, но это не рабочий вариант
var userConnection = context.UserConnection as UserConnection; var Supervisor = "Supervisor"; var upd = new Select(userConnection) .Column("Name") .From("Contact") .Where("Surname").IsEqual(Supervisor); //Set("var1", upd); return true;
Нравится
Добрый день. Для получения первого значения из выборки нужно вызвать метод ExecuteScalar<T>().
Код будет выглядеть следующим образом:
var userConnection = Get<UserConnection>("UserConnection"); var Supervisor = "Supervisor"; var value = (new Select(userConnection) .Column("Name") .From("Contact") .Where("Surname").IsEqual(Column.Parameter(Supervisor)) as Select) .ExecuteScalar<string>(); Set("var1", value); return true;
Добрый день. Для получения первого значения из выборки нужно вызвать метод ExecuteScalar<T>().
Код будет выглядеть следующим образом:
var userConnection = Get<UserConnection>("UserConnection"); var Supervisor = "Supervisor"; var value = (new Select(userConnection) .Column("Name") .From("Contact") .Where("Surname").IsEqual(Column.Parameter(Supervisor)) as Select) .ExecuteScalar<string>(); Set("var1", value); return true;
Как я понимаю, "Supervisor" - это просто строковое значение. Константы в запрос нужно передавать с через Column.Const или Column.Parameter
var select = new Select(context.UserConnection) .Top(1) .Column("Name") .From("Contact") .Where("Surname").IsEqual(Column.Const("Supervisor")) var value = select.ExecuteScalar<string>();
OLeg1020,
Нет, в процессе уже есть необходимые using
Замечание Дершеда Д.Н. тоже правильное.
Скорректировал начальный пост.
Также задачу можно решить элементами "Чтение данных" + "Формула", если это не сложный запрос. который нужно реализовывать только скриптом.
OLeg1020,
Покажите код, который у Вас получился в итоге.
Алла Савельева,
namespace Terrasoft.Core.Process { using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Drawing; using System.Globalization; using System.Text; using Terrasoft.Common; using Terrasoft.Configuration; using Terrasoft.Core; using Terrasoft.Core.Configuration; using Terrasoft.Core.DB; using Terrasoft.Core.Entities; using Terrasoft.Core.Process; using Terrasoft.Core.Process.Configuration; #region Class: Process3MethodsWrapper /// <exclude/> public class Process3MethodsWrapper : ProcessModel { public Process3MethodsWrapper(Process process) : base(process) { AddScriptTaskMethod("ScriptTask1Execute", ScriptTask1Execute); } #region Methods: Private private bool ScriptTask1Execute(ProcessExecutingContext context) { var select = new Select(context.UserConnection) .Top(1) .Column("Name") .From("Contact") .Where("Surname").IsEqual(Column.Const("Supervisor")); var value = select.ExecuteScalar<string>(); Set("var1", select); return true; } #endregion } #endregion }
Попробуйте дописать «as Select» так:
var select = new Select(context.UserConnection) .Top(1) .Column("Name") .From("Contact") .Where("Surname").IsEqual(Column.Const("Supervisor")) as Select; var value = select.ExecuteScalar<string>();
Зверев Александр,
Вот в таком виде
var select = new Select(context.UserConnection) .Top(1) .Column("Name") .From("Contact") .Where("Surname").IsEqual(Column.Const("Supervisor")) as Select; var value = select.ExecuteScalar<string>(); Set("var1", value); return true;
сработало.
Всем спасибо за помощь