Поиск по ячейкам в таблице.

  • Автор темы Автор темы one
  • Дата начала Дата начала

one

Client
Регистрация
22.09.2015
Сообщения
7 002
Реакции
1 308
Баллы
113
С самого утра бьюсь и никак. Может кто подскажет решение. Есть две таблицы, исходная (source) и целевая (destionation). Надо взять из исходной ID (колонка А) найти его в целевом (колонка А) и в целевой таблице, в колонку B вставить соответствующее значение из колонки B исходной таблицы. Для поиска использую данный сниппет, но не получается привязаться к строке таблицы в которой находится нужный ID что бы записать нужное значение в нужную строку. Пример таблиц прилагаю в архиве. Форум не разрешает XLS добавлять.

Код:
Развернуть Свернуть Копировать
// берем из переменной текст, который надо искать
var textContains = project.Variables["USER_ID"].Value;
// получаем таблицу, в которой будем искать
var sourceTable = project.Tables["source"];
// ищем в каждой строчке в таблице
lock(SyncObjects.TableSyncer)
{
    for(int i=0; i < sourceTable.RowCount; i++)
    {
        // читаем строку из таблицы (это будет массив ячеек)
        var cells = sourceTable.GetRow(i).ToArray();
        // пройдем в цикле по всем ячейкам
        for (int j=0; j < cells.Length; j++)
        {
            // проверяем содержание текста в ячейке, если есть совпадение возвращаем "yes"
            if (cells[j].Contains(textContains))
                return String.Join(":", sourceTable.GetRow(i));
        }
    }
}
// если ничего не нашли возвращаем "no"
return "no";
 

Вложения

  • tmp.rar
    tmp.rar
    11,3 KB · Просмотры: 6
Да, но это по моему не решит задачу. Как получить номер строки в которой найден совпадение.
 
C#:
Развернуть Свернуть Копировать
IZennoTable sourceTable = project.Tables["Source"];
IZennoTable destTable = project.Tables["Destionation"];
lock (SyncObjects.TableSyncer) {
    for (int i = 0; i < sourceTable.RowCount; i++) {
        for (int j = 0; j < destTable.RowCount; j++) {
            if (sourceTable.GetCell(0, i) == destTable.GetCell(0, j))
                destTable.SetCell(1, j, sourceTable.GetCell(1, i));
        }
    }
}
 
  • Спасибо
Реакции: one и doc
Любишь ты Док загадками говорить. :D Dimionix, спасибо!
я люблю задавать направление. Кто его реализует - черпает для себя больше, чем если бы просто получил решение. Весом, к тому же, тот факт, что мне лень писать готовые решения)
 
я люблю задавать направление. Кто его реализует - черпает для себя больше, чем если бы просто получил решение. Весом, к тому же, тот факт, что мне лень писать готовые решения)
Я шучу... Я знаю что ты наводку даешь. :)
 
C#:
Развернуть Свернуть Копировать
IZennoTable sourceTable = project.Tables["Source"];
IZennoTable destTable = project.Tables["Destionation"];
lock (SyncObjects.TableSyncer) {
    for (int i = 0; i < sourceTable.RowCount; i++) {
        for (int j = 0; j < destTable.RowCount; j++) {
            if (sourceTable.GetCell(0, i) == destTable.GetCell(0, j))
                destTable.SetCell(1, j, sourceTable.GetCell(1, i));
        }
    }
}
Почему код работает если таблицы привязаны с изменениями к файлам. Если отвязать от файлов - то не работает.
 
Почему код работает если таблицы привязаны с изменениями к файлам. Если отвязать от файлов - то не работает.
Если отвязаны - то просто не сохраняет автоматически.
А в самих таблицах (если открыть в PM) изменения будут.
 
А в самих таблицах (если открыть в PM) изменения будут.
В том то и дело, что смотрю в PM и код не работает в таблицах сформированных, но не привязанных к файлам.
Делаю тестовые таблицы с привязками и изменениями к файлам, код отрабатывает свой функционал.
 
Ребята, помогите разобраться в коде. Можно пошагово объяснить что делать?
С С# только начинаю разбираться, сложновато мне.
У меня стоит подобная задача как у автора.

Есть сайт, с которого еженедельно достаётся информация в таблицу, это ТАБЛИЦА ОБЩАЯ.
Работа происходит в 2 этапа, сначала достаём все ссылки, затем по каждой ссылке заходим и забираем информацию

ТАБЛИЦА ОБЩАЯ вида:
url/price1/price2/price3/price4

Раз в неделю нужно сравнивать новые добавленные на сайте значения с этой таблицей. всё происходит по кругу и значения просто дописываются в эту таблицу. Но собираем значения в таблицу 2 (затем просто руками добавляем нужное в ТАБЛИЦУ ОБЩУЮ)

Задача: когда на втором шаге я достаю инфу в таблицу 2, нужно каждый раз сравнивать по url с ТАБЛИЦЕЙ ОБЩЕЙ и если совпадение найдено, добавлять всю строку в таблицу 2 c добавлением комментария в следующую ячейку (просто пометка что-то типа "Внимание изменилась цена"):

url/price1/price2/price3/price4/comments

А если одинаковые значения не найдены, то просто записываем в таблицу 2 как есть:
url/price1/price2/price3/price4
 

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