コード例 #1
0
        protected override async ValueTask <IQsiAnalysisResult> ExecuteDataDeleteAction(IAnalyzerContext context, IQsiDataDeleteActionNode action)
        {
            var tableAnalyzer = context.Engine.GetAnalyzer <QsiTableAnalyzer>();

            using var tableContext = new TableCompileContext(context);

            var table     = (await tableAnalyzer.BuildTableStructure(tableContext, action.Target)).References[0];
            var tempTable = CreateTemporaryTable(table.Identifier);

            var commonTableNode = ReassembleCommonTableNode(action.Target);
            var dataTable       = await GetDataTableByCommonTableNode(context, commonTableNode);

            var deleteRows = new QsiDataRowCollection(1);

            foreach (var row in dataTable.Rows)
            {
                var targetRow = deleteRows.NewRow();
                targetRow.Items[0] = row.Items[0];
            }

            var dataAction = new QsiDataAction
            {
                Table      = tempTable,
                DeleteRows = deleteRows.ToNullIfEmpty()
            };

            return((new[] { dataAction }).ToResult());
        }
コード例 #2
0
        public static QsiDataRowCollection ToNullIfEmpty(this QsiDataRowCollection collection)
        {
            if (collection is null || collection.Count == 0)
            {
                return(null);
            }

            return(collection);
        }
コード例 #3
0
        protected override async ValueTask <IQsiAnalysisResult> ExecuteDataUpdateAction(IAnalyzerContext context, IQsiDataUpdateActionNode action)
        {
            var tableAnalyzer = context.Engine.GetAnalyzer <QsiTableAnalyzer>();

            using var tableContext = new TableCompileContext(context);

            var table     = (await tableAnalyzer.BuildTableStructure(tableContext, action.Target)).References[0];
            var tempTable = CreateTemporaryTable(table.Identifier);

            var commonTableNode = ReassembleCommonTableNode(action.Target);
            var dataTable       = await GetDataTableByCommonTableNode(context, commonTableNode);

            var updateBeforeRows = new QsiDataRowCollection(1);
            var updateAfterRows  = new QsiDataRowCollection(1);

            (object[], QsiExpressionNode, bool)[] setValues = action.SetValues