- Регистрация
- 17.09.2011
- Сообщения
- 273
- Благодарностей
- 28
- Баллы
- 28
Здравствуйте. Подскажите пожалуйста. Что не так с кодом?
Баг или я что-то делаю не так?
1. Очищаю предварительно таблицу на случай если в ней что-то было.
2. Заношу путь к файлу в переменную.
(тут ещё определяю путь к файлу бэкапа, на скриншоте не отмечено).
3. Привязываю таблицу к файлу (через переменную п.2).
4. Переношу из локального файла (таблицы) в другой локальный файл (таблицы).
![122641](/discussion/data/attachments/121/121944-9313462624ba3a7589bf42a315f42bab.jpg)
Код по логу отрабатывает нормально:
Пишет что перенеслось ровно столько строк сколько в файле исходнике.
Однако открываю файл-бэкап, а там 2000 строк вместо 3553. Иногда меньше иногда больше.
Почему так? И как можно поправить? Спасибо.
Код ниже:
Баг или я что-то делаю не так?
1. Очищаю предварительно таблицу на случай если в ней что-то было.
2. Заношу путь к файлу в переменную.
(тут ещё определяю путь к файлу бэкапа, на скриншоте не отмечено).
3. Привязываю таблицу к файлу (через переменную п.2).
4. Переношу из локального файла (таблицы) в другой локальный файл (таблицы).
![122641](/discussion/data/attachments/121/121944-9313462624ba3a7589bf42a315f42bab.jpg)
Код по логу отрабатывает нормально:
Пишет что перенеслось ровно столько строк сколько в файле исходнике.
Однако открываю файл-бэкап, а там 2000 строк вместо 3553. Иногда меньше иногда больше.
Почему так? И как можно поправить? Спасибо.
Код ниже:
C#:
var table1 = project.Tables["DBBT - База площадок Tier1shop (LOCAL)"];
var table2 = project.Tables["DBBT - База площадок Tier1shop (LOCAL)_backup"];
string backupFilePath = project.Variables["name_for_backupfile"].Value;
string localFilePath = project.Variables["way_to_bind_dbbts_table"].Value;
try {
// Привязка table2 к файлу
table1.Bind(localFilePath);
table2.Bind(backupFilePath);
project.SendInfoToLog("Привязка к файлу выполнена: " + backupFilePath);
// Очистка table2
table2.Clear();
project.SendInfoToLog("Таблица table2 очищена.");
// Проверка данных в table1 перед переносом
project.SendInfoToLog("Количество строк в table1 перед переносом: " + table1.RowCount);
// Перенос данных из table1 в table2
for (int i = 0; i < table1.RowCount; i++) {
var row = table1.GetRow(i)?.ToArray();
if (row != null) {
table2.AddRow(row);
} else {
project.SendInfoToLog($"Строка {i} в table1 является null");
}
}
project.SendInfoToLog("Данные перенесены из table1 в table2.");
// Отладка: проверка количества строк в table2
project.SendInfoToLog("Количество строк в table2_backup после переноса: " + table2.RowCount);
// Сохранение данных вручную
using (StreamWriter writer = new StreamWriter(backupFilePath, false, Encoding.UTF8)) {
for (int i = 0; i < table2.RowCount; i++) {
var row = table2.GetRow(i);
writer.WriteLine(string.Join(";", row));
}
}
project.SendInfoToLog("Данные успешно сохранены в файл: " + backupFilePath);
}
catch (Exception ex) {
project.SendErrorToLog(ex.ToString());
}