Eigenlijk zit ik met twee probleempjes:
1. Ik heb een applicatie die een csv bestand inleest naar een Datatable. Hier staat een kolom met een tijd in.
Nu moet ik deze tijd (aantal seconden) vermenigvuldigen met een bedrag. Ik heb al een extra DataColumn toegevoegd aan de DataTable, deze moet volgens mij gevuld worden met behulp van de DataColumn.Expression variabele. Hoe vul ik deze DataColumn variabele nu?
Als ik het volgende doe: (Time is de columnname van de tijd kolom)
Geeft hij een exception dat je een Decimal niet kunt vermenigvuldigen met een Date. Dit lijkt me inderdaad ook heel logisch, maar hoe kan ik die "Time" nu converten naar een aantal seconden?
En eigenlijk moet voor elke aparte row ook apart berekend kunnen worden wat de waarde is van die
kosten (waar nu dus 0.54 staat, moet veranderen naar gelang de waardes in andere kolommen op die row)
2. Als ik de CSV file inlees naar een DataTable haalt hij bij de kolom 'telefoonnummer' bij alle velden de eerste 0 weg.
Als ik de CSV inlees in Excel doet hij hetzelfde, pas als ik bij de wizard in Excel aangeef dat die kolom een String (tekst kolom) moet zijn in plaats van een Standaard Kolom doet hij het wel goed. Hoe kan ik dit nou in vb.net ook op die manier doen?
Ik heb geprobeerd de column van de DataTable van te voren het datatype System.String mee te geven. Maar dan zegt hij daarna vrolijk dat het een String is, terwijl er toch nog steeds geen 0 voor staat. Ik neem aan dat er met het inlezen van de CSV file iets verkeerds gaat. Dit doe ik als volgt:
1. Ik heb een applicatie die een csv bestand inleest naar een Datatable. Hier staat een kolom met een tijd in.
Nu moet ik deze tijd (aantal seconden) vermenigvuldigen met een bedrag. Ik heb al een extra DataColumn toegevoegd aan de DataTable, deze moet volgens mij gevuld worden met behulp van de DataColumn.Expression variabele. Hoe vul ik deze DataColumn variabele nu?
Als ik het volgende doe: (Time is de columnname van de tijd kolom)
Visual Basic:
1
2
| datatable.Columns.Add("Costs") datatable.Columns("Costs").Expression = 0.54 * "Time" |
Geeft hij een exception dat je een Decimal niet kunt vermenigvuldigen met een Date. Dit lijkt me inderdaad ook heel logisch, maar hoe kan ik die "Time" nu converten naar een aantal seconden?
En eigenlijk moet voor elke aparte row ook apart berekend kunnen worden wat de waarde is van die
kosten (waar nu dus 0.54 staat, moet veranderen naar gelang de waardes in andere kolommen op die row)
2. Als ik de CSV file inlees naar een DataTable haalt hij bij de kolom 'telefoonnummer' bij alle velden de eerste 0 weg.
Als ik de CSV inlees in Excel doet hij hetzelfde, pas als ik bij de wizard in Excel aangeef dat die kolom een String (tekst kolom) moet zijn in plaats van een Standaard Kolom doet hij het wel goed. Hoe kan ik dit nou in vb.net ook op die manier doen?
Ik heb geprobeerd de column van de DataTable van te voren het datatype System.String mee te geven. Maar dan zegt hij daarna vrolijk dat het een String is, terwijl er toch nog steeds geen 0 voor staat. Ik neem aan dat er met het inlezen van de CSV file iets verkeerds gaat. Dit doe ik als volgt:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Application.StartupPath & ";" & _ "Extended Properties=""Text;HDR=YES;""" Conn = New System.Data.OleDb.OleDbConnection(ConnectionString) Conn.Open() Dim da As New System.Data.OleDb.OleDbDataAdapter("SELECT * FROM bla.csv", Conn) Dim ds As New DataSet("TextFiles") da.Fill(ds, "CallData") Dim dt As DataTable dt = ds.Tables("CallData") |