Скопировать строки таблицы с нужными данными в отдельную таблицу для работы с ней

HellNHeaven

Новичок
Регистрация
12.03.2020
Сообщения
13
Благодарностей
2
Баллы
3
Подскажите, пожалуйста, есть функция в операциях над таблицами "Удалить строки", которые содержат/не содержат определённый текст.
Вот только мне хотелось бы скопировать строки содержащие определённые значения в новую таблицу, чтобы каждый раз не скачивать одну и туже таблицу для фильтрации разных данных.

Спасибо за помощь!
 

HellNHeaven

Новичок
Регистрация
12.03.2020
Сообщения
13
Благодарностей
2
Баллы
3
Нашел вот такое:
C#:
// берем регулярное выражение для парсинга из переменной
var parserRegexPattern = project.Variables["tableSearchRegex"].Value;
var parserRegex = new System.Text.RegularExpressions.Regex(parserRegexPattern);
// получаем таблицу, в которой будем искать
var sourceTable = project.Tables["SourceTable"];
// получаем список, в которую будем класть
var destTable = project.Tables["OutputTable"];
// ищем в каждой строчке в таблице
lock(SyncObjects.TableSyncer)
{
    for(int i=0; i < sourceTable.RowCount; i++)
    {
        // читаем строку из таблицы (это будет массив ячеек)
        var cells = sourceTable.GetRow(i).ToArray();
        // проверяем вторую ячейку регулярным выражением, если есть совпадение кладем результат во вторую таблицу
        if (parserRegex.IsMatch(cells[1]))
            destTable.AddRow(cells);
    }
}
Вот только если я ставлю другие названия в SourceTable и/или OutputTable выдаёт ошибку
55530

:(
 
  • Спасибо
Реакции: Rimen

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
Посмотрите, что у вас там в таблицах через блоки Зенно.
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
Вот только если я ставлю другие названия в SourceTable и/или OutputTable выдаёт ошибку
Это названия таблиц которые должны быть в нижней панели (где подключаете файлы к проекту, списки, таблицы и т.п.). Ну и переменная tableSearchRegex тоже должна быть в проекте (или та, на которую измените это имя)
 
  • Спасибо
Реакции: HellNHeaven

HellNHeaven

Новичок
Регистрация
12.03.2020
Сообщения
13
Благодарностей
2
Баллы
3
Это названия таблиц которые должны быть в нижней панели (где подключаете файлы к проекту, списки, таблицы и т.п.). Ну и переменная tableSearchRegex тоже должна быть в проекте (или та, на которую измените это имя)
Всё это я понимаю, оно есть, не работает если менять название
 

HellNHeaven

Новичок
Регистрация
12.03.2020
Сообщения
13
Благодарностей
2
Баллы
3

HellNHeaven

Новичок
Регистрация
12.03.2020
Сообщения
13
Благодарностей
2
Баллы
3
Так, странно, но ошибка теперь не возникает. Вот только у меня сложности с регулярным вырежением.
Мне нужно ложить строки где в одном из столбцов встречается значение B07VCH8888 И в одном из других столбцов любое значение, кроме Cancelled.
То есть два условия. Даже если я ввожу первое условие в перменную tableSearchRegex в новой таблице пусты ячейки, ничего не переносится :(
 
Последнее редактирование:

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Так, странно, но ошибка теперь не возникает. Вот только у меня сложности с регулярным вырежением.
Мне нужно ложить строки где в одном из столбцов встречается значение B07VCH8888 И в одном из других столбцов любое значение, кроме Cancelled.
То есть два условия. Даже если я ввожу первое условие в перменную tableSearchRegex в новой таблице пусты ячейки, ничего не переносится :(
1) Не ложить - а класть.
2) Значит условия не правильно выставил. Попробуй логику переноса иначе выставить.
 

HellNHeaven

Новичок
Регистрация
12.03.2020
Сообщения
13
Благодарностей
2
Баллы
3
1) Не ложить - а класть.
2) Значит условия не правильно выставил. Попробуй логику переноса иначе выставить.
1) Та хоть наложить
2) Я брал готовый снипет. Если бы я понимал как это корректно сделать, не возникало бы и вопроса. Так что, увы, ты не помог, зато поумничал, и на том спасибо, темку апнул)
 

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
1) Та хоть наложить
2) Я брал готовый снипет. Если бы я понимал как это корректно сделать, не возникало бы и вопроса. Так что, увы, ты не помог, зато поумничал, и на том спасибо, темку апнул)
1) А вот наложить - правильно) накласть только нельзя, а жаль...
2) Я не умничал, а сказал пересмотреть логику. То, что ты хочешь сделать можно воплотить не одним способом. Существуют лямбда выражения (а вот здесь я уже умничать начинаю).

Твою задачу можно интерпретировать по-разному, а так же выполнить по-разному.
Я так понял, что в одной строке в разных столбцах нужно определить два вхождения.

Логика:
Найти строку если есть ТОЧНОЕ вхождение "B07VCH8888" и любое , кроме Cancelled.

СЫ:
var tablein = project.Tables["x"]; // таблица ввода х.
for(int i=0; i<tablein.RowCount; i++) { // всё делается в цикле для всех строк таблицы х.
    var str1 = tablein.GetRow(i).ToArray(); // Хаваем массив
    if(str1.Any(x => x.Contains("B07VCH8888"))) { // Чекаем на обяз вхождение
        if(!str1.Any(x => x.Contains("Cancelled"))) { // Чекаем на нежелательное вхождение
            project.Tables["y"].AddRow(str1);   // добавляем в таблицу у строку которую стянули из икс при удовлетворении вышестоящим ифам. иначе не добавляется ничего.
        }
    }
}
ДО
2020-05-12_00-51-00.png

и ПОСЛЕ
2020-05-12_01-07-11.png

С переменными я вижу ты уже знаешь, как обращаться.
Удачи. Не груби не знакомым людям. И знакомым тоже не груби)) Добра)
 

HellNHeaven

Новичок
Регистрация
12.03.2020
Сообщения
13
Благодарностей
2
Баллы
3
1) А вот наложить - правильно) накласть только нельзя, а жаль...
2) Я не умничал, а сказал пересмотреть логику. То, что ты хочешь сделать можно воплотить не одним способом. Существуют лямбда выражения (а вот здесь я уже умничать начинаю).

Твою задачу можно интерпретировать по-разному, а так же выполнить по-разному.
Я так понял, что в одной строке в разных столбцах нужно определить два вхождения.

Логика:
Найти строку если есть ТОЧНОЕ вхождение "B07VCH8888" и любое , кроме Cancelled.

СЫ:
var tablein = project.Tables["x"]; // таблица ввода х.
for(int i=0; i<tablein.RowCount; i++) { // всё делается в цикле для всех строк таблицы х.
    var str1 = tablein.GetRow(i).ToArray(); // Хаваем массив
    if(str1.Any(x => x.Contains("B07VCH8888"))) { // Чекаем на обяз вхождение
        if(!str1.Any(x => x.Contains("Cancelled"))) { // Чекаем на нежелательное вхождение
            project.Tables["y"].AddRow(str1);   // добавляем в таблицу у строку которую стянули из икс при удовлетворении вышестоящим ифам. иначе не добавляется ничего.
        }
    }
}

С переменными я вижу ты уже знаешь, как обращаться.
Удачи. Не груби не знакомым людям. И знакомым тоже не груби)) Добра)
Спасибо за решение.
Ты не включай учителя, иначе это не воспринимается всерьез, и вот так могут ответить)
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
Ты не включай учителя, иначе это не воспринимается всерьез, и вот так могут ответить)
Вот это можно было не писать, вполне достаточно благодарности, а то надолго останешься в учениках.
 

HellNHeaven

Новичок
Регистрация
12.03.2020
Сообщения
13
Благодарностей
2
Баллы
3
Вот это можно было не писать, вполне достаточно благодарности, а то надолго останешься в учениках.
Дружище, можно было это не писать, а просто пройти мимо, ученик ты наш :D
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
  • Спасибо
Реакции: doc

HellNHeaven

Новичок
Регистрация
12.03.2020
Сообщения
13
Благодарностей
2
Баллы
3
Ну ученик тут ты :-) и с таким отношением к тем, кто тебе помогает, скоро и до режима самообучения дойдешь. :D
Ахаха, адвокат нашелся, откуда вы тут такие, понял уже, что нечего на вас время тратить. Я тут на долго и не заддерживаюсь, просто был ряд вопросов и я их красиво культурно задал, а мне тут какие-то шутники начинаются пытаться рассказывать что писать и как правильно писать. Идите обратно в школу. Вот так и ответил. Я не рассказываю как жить вам, так что не суйте свой нос в то кому и как писать корректно. Возможно, мы ещё знаки препинания будем рассматривать и указывать на ошибки? Фу, не буду тратить своё время, удачки)
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
Ахаха, адвокат нашелся, откуда вы тут такие, понял уже, что нечего на вас время тратить.
Еще один, перешел в режим самообучения. :-) Только потом не жалуйся, что просишь помощи, а никто не отвечает и не помогает.
Идите обратно в школу. Вот так и ответил. Я не рассказываю как жить вам, так что не суйте свой нос в то кому и как писать корректно.
Ну тут некоторые лет на 20 старше тебя будут. И учить жизни тебя никто и не собирался, умный ты наш. :D Дурака учить, только портить.
 

Кто просматривает тему: (Всего: 4, Пользователи: 0, Гости: 4)