• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 466
  • Last Modified:

Format and write a .net dataset to fixed length file format.

I have a result set in a C# console app. I want to write each row to a fixed length file. ie: each resultset element will take x amount of spaces that I define. How do you do this in C#?
0
claghorn
Asked:
claghorn
1 Solution
 
ozymandiasCommented:
first create an array of int with each int representing the length of each field in your fixed width field.

<pseudo-code>

int[] fieldLength = new int[]{5,10,25};
foreach (row in dataset){
    foreach(field in row){
        string s = field.ToString();
        s = s.PadRight(fieldLength[fieldnumber], ' '); // pads the string out to the specified length with spaces
        add s to your fixed width record
    }
    add fixed width record to fixed width file
}

</pseudo-code>
0
 
claghornAuthor Commented:
close, but it does not terminate each line in the resulting file. ie: the line continues infinitem. btw putting "\n" puts a space between each line and does not terminate each line either. Can you suggest the rest for a full soultion?
0
 
Expert1701Commented:
The string, "\r\n", should terminate the line.
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
claghornAuthor Commented:
Thanks, but no luck. It does not terminate the line. ie: if you cursor (right arrow) over the line it continues beyond.
Also, the lines are spaced now.
I always did get the return to next line when not specifying the "\r\n", but again, the line continues beyond the end.
The file does not behave like a main frame generated file that, when you cursor through it, it returns you to the next line.

0
 
ozymandiasCommented:
Lines cannot possibly continue beyond the end.
The end is, by definition, the point beyond which the line does not continue.
The most likely explanation is that the lines does not end where you expect them to, i.e. you have padded the last field of the record out with spaces.
0
 
ozymandiasCommented:
Did you have any luck with this ?
0
 
claghornAuthor Commented:
If I try to put a \r or \n, I get a space separating each line. This is unwanted. I want to be able to scroll through each line and where the data ends, find myself at the beginning of the next line.  
0
 
ozymandiasCommented:
OK. Is it possible that you are creating the record adding a \n or a \r (or both) to the end of it and then using the WriteLine() method of some stream/file/text writer that is appending another \r\n to the end of the line ?

It would be useful if you showed your code but to be honest for a 20 point question you can't expect miracles.
The best you can hope for for 20 points is to be pointed in the right direction and if you are lucky some pseudo-code.
It's a bit much to then go and give a B grade because you can't get the linefeeds to work.
0
 
baldrickCommented:
Use System.Environment.NewLine, not "\r\n"
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now