Я извлекаю отчет из SQL Server, не являясь поклонником курсоров, я обрабатываю эту табличную серверную часть в своем коде позади файла.Поэтому я извлекаю этот отчет, который представляет собой отчет с адресной меткой, и мой клиент хочет, чтобы количество человек было на X.Поэтому я кодировал эту функцию:
Private Function ProcessX(ByVal dt As DataTable, ByVal X As Integer) As DataTable
Dim dtProcessed As DataTable = dt.Copy
dtProcessed.Clear()
For Each dr As DataRow In dt.Rows
For i As Integer = 0 To X - 1
Dim drHolder As DataRow = dtProcessed.NewRow
drHolder.ItemArray = dr.ItemArray
dtProcessed.Rows.Add(drHolder)
Next
Next
Return dtProcessed
End Function
Какая функция работает прекрасно, и она обрабатывается намного быстрее, чем курсор в sproc.Проблема с этим конкретным отчетом состоит в том, что когда я экспортирую его в Excel, он отсекает первые 0 почтовых индексов, которые начинаются с 0. У меня также есть почтовые индексы + 4 и международные почтовые индексы, которые возвращаются в том же режиме.Обычно я просто записываю это в стандартный глюк Excel о том, как он обрабатывает первые 0, но когда я не обрабатываю отчет с помощью вышеуказанной функции, Excel не отсекает мои первые 0.
Я прошел через функцию, и тип данных для рассматриваемого столбца до и после процесса одинаков и соответствует типу данных исходной таблицы.Единственное, о чем я могу думать, это, может быть, потому, что я передаю объект данных ByVal вместо ByRef?Я не знаю, я пробовал почти все остальное, включая копирование каждого элемента строки по значению и воссоздание данных вручную.Ничто, кажется, не меняет результат.