Простой Select в элементе процессов Script task
Можно попросить пример (рабочий) для простого 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;сработало.
Всем спасибо за помощь
