2010-11-03 4 views
0

Je tire un rapport de SQL Server n'étant pas un fan de curseurs Je traite ce côté du serveur de table dans mon code derrière le fichier. Donc, je tire ce rapport qui est un rapport d'étiquette d'adresse et mon client veut qu'il y ait X nombre d'étiquettes par personne. Donc, cette fonction, je codé:La réplication de lignes de table dans une base de données entraîne la différence entre le type de données d'un rapport de sortie Excel.

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 

la fonction qui fonctionne à merveille et les processus beaucoup plus rapide qu'un curseur dans un sproc. Le problème avec ce rapport particulier est que lorsque je l'exporte vers Excel, il coupe les 0 principaux des codes postaux qui commencent par 0. J'ai également zip + 4 et codes postaux internationaux qui sont retournés dans le même tirage. Normalement, je voudrais juste faire un craquement excel standard sur la façon dont il gère les 0, mais lorsque je ne traite pas le rapport à travers la fonction ci-dessus Excel ne coupe pas mes 0 principaux. J'ai franchi la fonction et le type de données de la colonne en question est le même avant et après le processus et correspond au type de données de la table d'origine. La seule chose que je peux penser est peut-être parce que je passe l'objet datatable ByVal au lieu de ByRef? Je ne sais pas, j'ai essayé presque tout le reste, y compris la copie de chaque élément de la ligne par valeur et recréer la datatable à la main. Rien ne semble changer le résultat.

Répondre

0

J'ai trouvé une solution et je ne suis pas content, mais cela fonctionne. Le rapport en ligne et Excel l'interprètent comme un espace vide et ne dérange pas ma mise en forme. Le rapport en ligne et Excel l'interprètent comme un espace vide.