Hur gör man för att spara en rad ur ett DataSet i en text sträng med en TAB mellan varje "kolumn". Jag vet hur jag ska göra genom att ta kolumn för kolumn men efterhand som antalet kolumner ökar måste man in och ändra i koden. Det skulle vara mycket enklare om man kunde spara en rad, oberoende av antalet kolumner. Vet inte om det finns någon färdig funktion för detta. Jag har löst det genom en funktion som loopar igenom alla kolumner och lägger innehållet i en sträng. Jag tror dessvärre att det kan bli svårt att få raka kolumner med tab, om fälten (kolumnerna i posten/raden) är av diffrentierand längd. T. ex. kan fältet "Borås" innebära att TAB:en blir 1 tkn <b>Det enda raka är nog att bygga strängen fält för fält och justera med mellanslag.</b> Nej Marcus, Roligt att se att ni är så intresserade att hjälpa till. DataSet - spara rad
Någon som vet hur man gör?
//OlaSv: DataSet - spara rad
/JohanSv: DataSet - spara rad
långt, samt att nästa rad's "Rågsved" tvingar fram TAB:en till nästa stop.
Det enda raka är nog att bygga strängen fält för fält och justera med mellanslag.Sv:DataSet - spara rad
Varför kulle man vilja göra det? Som jag tolkar första inlägget så står det inget att det skall läsas av någon person, utan det skulle tex kunna gälla export till fil för inläsning av ett annat system. Skall man börja justera det man exporterar med längd så måste man ju skriva ut så många tecken om varje cell kan innehålla. Värdet från en cell som innehåller en sträng skulle således bli ~2 miljarder tecken lång, varav de första fem innehåller "Borås" och resten blanksteg.
Ett sätt att lösa det är att loopa igenom alla värden i en kolumn och se hur många tecken den innehåller som max innan man skrivet ut det, men inte heller det är bra eftersom "MMMMMM" och "iiiiii" tar upp olika mycket plats beroende på vad filen visas i (i word tex så tar "iiiiii" upp lika mycket plats som "MM" vilket gör att allt förskjuts).
Vill man istället skriva ut det till en sträng så kan man använda detta (snott från nätet, lämnar ingen garanti för attd et fubngerar rakt av ;-)):
<code>
string rowString = ""
foreach(DataRow x in Datatable.Rows)
{
string tab = "";
for(int y = 0; y < Datatable.Columns.Count; y++)
{
rowString += tab + x[y].ToString();
tab = "\t";
}
rowString += Enviroment.Newline;
}
</code>
För att läsa in en fil sedan
<code>
FileStream fil = File.OpenRead("c:\\temp.txt");
using (StreamReader strReader = new StreamReader(fil))
{
while (true)
{
string aLine = strReader.ReadLine();
if (aLine != null)
{
string[] temp = aLine.Split('\t');
//temp innehåller varje kolumn
}
else
break;
}
}
</code>
Notera gärna att detta kommer att misslyckas ifall värdet i en cell innehåller ett tabtecken... Sv: DataSet - spara rad
jag vet inte heller vad Ola ska göra med sin sträng!
Min tolkning var att den ska användas i nån typ av rad-baserad presentation.
Vi kanske ska kolla med Ola?
till Ola:
fråga 1, menar du inte att raderna i datasetet ökar efterhand?
fråga 2, vad ska du göra med strängen, och innehåller den data från mer än 1 rad?
tjosan systrar!Sv:DataSet - spara rad
Det är så att mitt DataSet innehåller flera hundra rader och innehållet förändras hela tiden. För att jag i efterhand ska kunna analysera dessa förändringar vill jag i vissa lägen spara ner en hel rad till en textfil. Har man då en TAB mellan varje info. kan man ju t ex öppna denna fil i Excel. Så ligger det till. Har för mig att jag någon gång sett en lösning på detta men vet inte var och är inte säker på det i och för sig….
Att loopa igenom blir ju en fungerande lösning som borde vara helt OK, så tack för hjälpen.
//Ola