Member 14760154 Ответов: 1

Условие false, когда одно из данных является ложным


У меня проблема с моим проектом


Я хочу проверить и проверить свои данные excel перед вставкой в базу данных sql server,

Я хочу,чтобы, когда одно из данных ложно, а другое истинно, условие возвращало бы false ,
и он возвращает true только тогда, когда все данные истинны

как я могу решить эту проблему?

Что я уже пробовал:

это мой код.


 protected void check(object sender, EventArgs e)
        {
            if (FileUpload1.HasFile)
            {
                string[] arr = new String[15];
                string filename = "Hr_Report_" + DateTime.Now.ToString("dddd_dd_MMMM_yyyy") + ".xls";
 label1.Text = filename;
FileUpload1.SaveAs(temp_file + filename);
string tempfile = temp_file + filename;
string finalfile = final + "final.xls";
string c = @tempfile;
string b = @finalfile;
DataTable table = new DataTable();
                FileInfo existingFile = new FileInfo(tempfile); //+ FileUpload1.FileName);
                using (ExcelPackage package = new ExcelPackage(existingFile))
                {
                    ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
                    int colCount = worksheet.Dimension.End.Column;
                    int rowCount = worksheet.Dimension.End.Row;
                    table.Columns.Add("emp_fullname", typeof(DateTime));
                    table.Columns.Add("emp_nik", typeof(string));
                    table.Columns.Add("Timer_Finger", typeof(string));
                    for (int i = 1; i < rowCount; i++)
                    {
                        DateTime d;
                        bool chValidity = DateTime.TryParseExact(
                        worksheet.Cells[i + 1, 1].Value.ToString(),
                         "MM/dd/yyyy h:mm:ss",
                         CultureInfo.InvariantCulture,
                         DateTimeStyles.None,
                         out d);
                            TableRow row = new TableRow();
                            TableCell cell1 = new TableCell();
                            if (chValidity == true){  // the problem on this line,i have 5 row data in excel ,4 true ,1 false ,and its return true first the false 
                                label1.Text="Suskses";
                            }
                            else{
                            cell1.Text = worksheet.Cells[i + 1, 1].Value.ToString() + "  " + worksheet.Cells[i + 1, 2].Value.ToString() + " " + worksheet.Cells[i + 1, 2].Value.ToString() + " Baris ke " + i;
                            row.Cells.Add(cell1);
                            myTable.Rows.Add(row);
                            File.AppendAllText("E:\\test.txt", label1.Text);
                            }
                        }
                    }
                }
            else
            {
                Response.Write("<script>window.alert('File Belum diupload')</script>");
            }
        }

1 Ответов

Рейтинг:
11

Richard MacCutchan

Вам нужно переместить тест валидности за пределы цикла, чтобы сообщение об успехе появлялось только в том случае, если все строки истинны.

bool chValidity = true; // assume all checks will succeed
for (int i = 1; i < rowCount; i++) // iterate all rows
{
    DateTime d;
    chValidity = DateTime.TryParseExact(
    worksheet.Cells[i + 1, 1].Value.ToString(),
    "MM/dd/yyyy h:mm:ss",
    
    if (chValidity == false)
    {
        cell1.Text = worksheet.Cells[i + 1, 1].Value.ToString() + "  " + worksheet.Cells[i + 1, 2].Value.ToString() + " " + worksheet.Cells[i + 1, 2].Value.ToString() + " Baris ke " + i;
        row.Cells.Add(cell1);
        myTable.Rows.Add(row);
        File.AppendAllText("E:\\test.txt", label1.Text);
    }
} // end of for loop

if (chValidity == true){  // all 5 rows are valid 
    label1.Text="Suskses";
}


[редактировать]
Удален дополнительный тест состояния в for заявление.
[/редактировать]


Member 14760154

теперь проблема в том ,что его разрывают и вставляют только первую ложную строку , следующая строка, которая была ложной, не вставляется в таблицу ,

Вы можете помочь мне ,решить эту проблему ?

Я хочу вот так
15/10/2020 ошибка в строке 2
16/10/2020 ошибка в строке 3
16/10/2020 ошибка в строке 6

и моя программа показывает это
15/10/2020 ошибка в строке 2

Richard MacCutchan

Затем просто удалите лишний тест в for заявление.

Member 14760154

я попробовал это,это тоже правда ,

когда я удаляю "ch_validity==true" в операторе "for"

Richard MacCutchan

Значит ли это, что он работает или нет? Если нет, то вам нужно отредактировать свой вопрос и показать нам измененный код.

Member 14760154

для какой-то проблемы это работает ,но это вызывает другую проблему ,

защищенной проверки недействительным(объект отправителя, EventArgs в электронной)
{
если (FileUpload1.HasFile)
{
string[] arr = новая строка[15];
string filename = "Hr_Report_" + DateTime.Now.ToString("dddd_dd_mmmmm_yyyy") + ". xls";
FileUpload1.Сохранить как(temp_file + именем);
строка tempfile = temp_file + filename;
строка finalfile = final + "final.xls";
строка c = @tempfile;
строка b = @finalfile;
DataTable table = новая таблица данных();
FileInfo existingFile = new FileInfo(tempfile); //+ FileUpload1.FileName);
using (ExcelPackage package = new ExcelPackage(existingFile))
{
ExcelWorksheet worksheet = пакет.Рабочая тетрадь.Рабочие листы[1];
int colCount = рабочий лист.Размер.Конец.Колонки;
интервал количество строк = таблица.Размер.Конец.Строка;
стол.Столбцы.Добавить("emp_fullname", typeof(DateTime));
стол.Столбцы.Add("emp_nik", typeof(string));
стол.Столбцы.Add("Timer_Finger", typeof(string));
боол chValidity =истина;
для (тип int я = 1; я &л; Количество строк &амп;&амп; chValidity==правда; я++)
{
Датавремя д;
chValidity = Дата-Время.Метод tryparseexact(
рабочий лист.Ячейки[i + 1, 1].Значение.Метод toString(),
"ММ/ДД/гггг ч:мм:СС",
CultureInfo.Языка и региона существует,
DateTimeStyles.Никто,
из Д);
if (chValidity == false)
{
TableRow row = новый TableRow();
Tablecell в cell1 = новый tablecell в();
cell1.Текст = рабочий лист.Ячейки[i + 1, 1].Значение.ToString() + "" + рабочий лист.Ячейки[i + 1, 2].Значение.ToString() + "" + рабочий лист.Ячейки[i + 1, 2].Значение.ToString() + "Baris ke" + i;
ряд.Ячейки.Добавить(ячейка1);
myTable.Rows.Add(строка);
Файл.AppendAllText("E:\\test.txt", label1.Text);
}
}
if (chValidity == true)
{
этикетка 1.Текст = "сусксес";
}
}
}
еще
{
Ответ.Напишите("окно.alert('File Belum diupload')");
}
}

Richard MacCutchan

Вы не изменили оператор for, теперь он должен быть:

for (int i = 1; i < rowCount; i++) // iterate all the rows

Кроме того, вы не объяснили, какая еще проблема у вас есть.

Member 14760154

На самом деле моя проблема заключается в том ,что я хочу вставить расписание в свою базу данных с помощью excel ,потому что это займет много времени, если я использую форму для его вставки ,

но иногда я пишу неправильный формат datetime , и это делает ошибку ,

теперь я попытаюсь решить эту проблему , я проверю свои данные перед вставкой в базу данных,

Я хочу ,чтобы, когда у меня есть 1 строка ошибки и 4 не ошибка, все строки не вставлялись бы в базу данных ,

но мое текущее состояние после изменения таково ,что когда я строю ошибку ,ее не удалось вставить в базу данных, но еще 4 строки успешно вставлены в базу данных

Richard MacCutchan

У вас есть следующее:

if (chValidity == false)
{
TableRow row = new TableRow();
TableCell cell1 = new TableCell();
cell1.Text = worksheet.Cells[i + 1, 1].Value.ToString() + " " + worksheet.Cells[i + 1, 2].Value.ToString() + " " + worksheet.Cells[i + 1, 2].Value.ToString() + " Baris ke " + i;
row.Cells.Add(cell1);
myTable.Rows.Add(row);
File.AppendAllText("E:\\test.txt", label1.Text);
}

Таким образом, если проверка валидности ложна, вы добавляете строку. Правильно это или нет?

Member 14760154

Мне очень жаль ,но на самом деле я просто скопировал не тот код ,
я изменил код на (для int i=1;i

BillWoodruff

+5 за бесконечное терпение !

Richard MacCutchan

Спасибо, Билл. Иногда я просто хочу найти реальное рабочее решение для собственного удовлетворения.

BillWoodruff

и это, сэр, подарок "остальным из нас" !

Richard MacCutchan

Может быть, иногда ...