2015-12-15 6 views
0

Я пытаюсь добавить 1 день все даты, которые находятся в определенном DataColumn [ «RecordAddedDate»]CSV для SQL - Добавление 1 день до даты в DataColumn

csvData.Columns.AddRange(new DataColumn[3] {      
new DataColumn("Manufacturer", typeof(string)), 
new DataColumn("SupplierCode", typeof(string)), 
new DataColumn("RecordAddedDate", typeof(DateTime))}); 

На данный момент момент I иметь эту работу:

for (int rowIndex = 0; rowIndex < csvData.Rows.Count; rowIndex++) 
{ 
DateTime dt2 = DateTime.Parse(fieldData[2]); 
var newDate = dt2.AddDays(1); 
csvData.Rows[rowIndex][2] = newDate;          
} 

Но это только добавляет 1 день до первой строки, считанной из CSV и не добавляет для отдыха.

Любая помощь?

Вот цикл, а который считывает данные из CSV и добавляет данные

while (!csvReader.EndOfData) 
       { 
        string[] fieldData = csvReader.ReadFields(); 
        //Making empty value as null 
        for (int i = 0; i < fieldData.Length; i++) 
        { 
         Console.WriteLine(fieldData[i]); 
         if (fieldData[i] == "") 
         { 
          fieldData[i] = null; 
         } 

         for (int rowIndex = 0; rowIndex < csvData.Rows.Count; rowIndex++) 
         { 
          DateTime dt2 = csvData.Rows[rowIndex].Field<DateTime>(2); 
          DateTime newDate = dt2.AddDays(1); 
          csvData.Rows[rowIndex][2] = newDate; 
         }        

        } 
        csvData.Rows.Add(fieldData); 
        Console.WriteLine("Rows count:" + csvData.Rows.Count); 
       } 
      } 
     return csvData; 
+0

Что такое 'fieldData' здесь? Разве вы не должны начинать с 'csvData.Rows [rowIndex] [2]'? –

+0

csvData - это DataTable. Я отредактировал индекс строки теперь до меньшего int как своей большой таблицы, и я не хотел добавлять все это в этот пост. – TeaAnyOne

+0

Почему бы не использовать SSIS для перемещения данных из CSV в Excel? Он поддерживает импорт из Excel и пользовательских действий, если это необходимо. – Alex

ответ

0

Что такое fieldData[2]? Вы всегда используете это в цикле, поэтому неудивительно, что вы всегда получаете то же самое DateTime. Если таблица уже заполнена и вы хотите обновить значение, используйте csvData.Rows[rowIndex][2] = csvData.Rows[rowIndex].Field<DateTime>(2).AddDays(1);

for (int rowIndex = 0; rowIndex < csvData.Rows.Count; rowIndex++) 
{ 
    DateTime dt2 = csvData.Rows[rowIndex].Field<DateTime>(2); 
    DateTime newDate = dt2.AddDays(1); 
    csvData.Rows[rowIndex][2] = newDate;          
} 
+0

Привет, Тим, спасибо за ответ. К сожалению, он до сих пор добавляет 1 день к «RecordAddedDate» только к 1-й строке, а не к остальным. Должно ли это быть в замкнутом цикле, вы думаете? – TeaAnyOne

+0

@TeaAnyOne: это может быть только в том случае, если таблица содержит только одну строку. Для этой цели идеально подходит для цикла. –

+0

Im 100% есть 2 ряда. поскольку я получаю 2 из 'Console.WriteLine (« Количество строк: »+ csvData.Rows.Count);' ------ Это проблема? 'DateTime dt2 = DateTime.Parse (fieldData [2]);' Я считаю, что 'fieldData [2]' ссылается только на значение первой строки, а не на значение второй строки. Нужно ли вообще ссылаться и анализировать столбец данных? – TeaAnyOne

 Смежные вопросы

  • Нет связанных вопросов^_^