Keresés

Új hozzászólás Aktív témák

  • válasz sztanozs #2231 üzenetére

    Köszi a választ!

    Megtaláltam a megoldást, de teljesen más megközelítéssel.
    CSV nem tárol semmit de egy ini fileal megoldható hogy menjen.

    Schema.ini-fileba:

    [adat.csv]
    ColNameHeader=False
    Format=Delimited(;)
    Col1=Sorszám integer
    Col2=Cím1 char
    Col3=Cím2 char
    Col4=Cím3 char
    Col5=Cím4 char
    ...

    és így tovább

    Ezzel rákényszerítve hogy minden oszlop előre meghatározott adat típusú legyen.

  • VB.NET hez kellene kis segítség.

    Egy csv-ből olvasok be adatot datatable-be majd megjelenítem egy datagridviewbe. Megy oda vissza írás olvasás. Viszont valamiért az oszlopok adattípusát automatán változtatja a progi, pedig nincs megadva sehol hogy milyen típusú egy oszlop és én sem szeretném megváltoztatni.

    Hogyan tudom kikapcsolni azt hogy a datagridview ne kezeljen automatán adattípust, vagy alapból legyen minden string típusú?

    A csv-ből így olvasok be:

    Dim CnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & CurDir() & "\Tablazat" & ";Extended Properties=""text;HDR=YES;FMT=Delimited"";"
    Using Adp As New OleDbDataAdapter("select * from adat.csv", CnStr)
    Adp.Fill(adat)
    End Using

    adattablamegjelenito.DataSource = adat

    Ezzel meg írom vissza:

    Sub SetDataTable_To_CSV(ByVal dtable As DataTable, ByVal path_filename As String, ByVal sep_char As String)
    Dim writer As System.IO.StreamWriter
    Try
    writer = New System.IO.StreamWriter(path_filename, False, System.Text.Encoding.Default)

    Dim _sep As String = ""
    Dim builder As New System.Text.StringBuilder
    For Each col As DataColumn In dtable.Columns
    builder.Append(_sep).Append(col.ColumnName)
    _sep = sep_char
    Next
    writer.WriteLine(builder.ToString())

    For Each row As DataRow In dtable.Rows
    _sep = ""
    builder = New System.Text.StringBuilder

    For Each col As DataColumn In dtable.Columns
    builder.Append(_sep).Append(row(col.ColumnName))
    _sep = sep_char
    Next
    writer.WriteLine(builder.ToString())
    Next
    Catch ex As Exception

    Finally
    If Not writer Is Nothing Then writer.Close()
    End Try
    End Sub

    Tehát ha beírok csak számot az oszlopba akkor utána ha elmentem majd betöltöm akkor hibával elszáll ha betűket akarok beírni. Ugyanígy ha a csv-be csak számok vannak egy oszloppba akkor szintén nem lehet betűt beírni. Én minden egyes oszlopot stringként akarok kezelni.

Új hozzászólás Aktív témák