Avatar billede chrhoegh Nybegynder
16. november 2006 - 22:10 Der er 6 kommentarer

Hvordan indlæses en kolonne med tal som string? fx 010.000 osv?

Jeg har et Excel hvor kollonne A består af tekstværdier som til forveksling kan ligne typen double ellt int.

Jeg indlæser mine data med følgende kode:

OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\;Extended Properties=\"text;HDR=NO;FMT=Delimited\"";
conn.Open();

OleDbCommand objCmdSelect = new OleDbCommand("select string * from temp.csv", conn);

OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
objAdapter1.SelectCommand = objCmdSelect;

DataSet ds = new DataSet();
objAdapter1.Fill(ds);

foreach (DataRow dr in ds.Tables[0].Rows)
{
  //Programkode her...!
}



Eksempel på data i min kollone:
099.000 bliver til 99000 men jeg ønsker 099.000 som string.

Hvordan definerer jeg at de data jeg indlæser er af typen string og ikke int eller double?
Avatar billede thesurfer Nybegynder
16. november 2006 - 22:26 #1
Put "" foran..

Eksempel:

string a = 100; // her opstår der fejl!

string b = "" + 100; // dette er ok
Avatar billede chrhoegh Nybegynder
16. november 2006 - 22:52 #2
Hvad men du med at sætte "" foran?
Men jeg prøvede lige følgende:

string str = "" + dr[0];
MessageBox.Show(str);
hvor data i dr[0] er 090.001 men vises som 90001

Jeg tror den fejlagtige fortolkning af datatypen sker når dataarket dannes og det der jeg gerne vil fortælle c# at felterne er af typen string.

Som det er nu synes jeg det er c# der selv forsøger at definere typerne, hvilket jeg ønsker at undgå.
Avatar billede thesurfer Nybegynder
16. november 2006 - 23:09 #3
Nu har jeg ikke arbejdet så meget med dataset, men jeg tror at dr[0] er af typen object, og skal laves til streng først..

Dvs:
string str = "" + dr[0].ToString();

Det skal man f.eks. med string-array og ligende..

Selv med recordset, når man bruger database..

Eksempel:

string navn = rs["navn"].ToString();
Avatar billede chrhoegh Nybegynder
16. november 2006 - 23:11 #4
Har prøvet:
string navn = dr[0].ToString();

men resultatet er det samme!

Hvor data i dr[0] er 090.001 men vises som 90001
Avatar billede thesurfer Nybegynder
16. november 2006 - 23:30 #5
Sæt et breakpoint på linien "string navn = dr[0].ToString();" og se hvad indholdet af dr[0] er..

Hvordan ser det ud?
Avatar billede thesurfer Nybegynder
16. november 2006 - 23:31 #6
..du skal muligivs trykke F11 ("gå til næste linie") efter at den stopper på linien, for at se hvad den indeholder..

Husk, det er dr[0] og ikke selve strengen..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester