Forum Coders' city Strona Gwna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UytkownicyUytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj si, by sprawdzi wiadomociZaloguj si, by sprawdzi wiadomoci   ZalogujZaloguj 

Potrzebuj szybkiej odpowiedzi na moje pytanie... Zasady

[VB.NET] Zapis danych tabeli do pliku.

Id do strony 1, 2  Nastpny

 
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> Visual Studio: C#, VB, VC++, …
Zobacz poprzedni temat :: Zobacz nastpny temat  
Autor Wiadomo
czarodziejczarek



Doczy: 19 Kwi 2017
Posty: 40

PostWysany: Wto Sie 08, 2017 8:33 pm  OP    Temat postu: [VB.NET] Zapis danych tabeli do pliku. Odpowiedz z cytatem Pisownia

Witam mam problem i idee si skoczyy:
Kod znalazem na jakiej stronce do wczytania i zapisu tabeli, ale cigle wywala bad zamieszczam NIE MJ kod.
Kod:

        Dim sw As New IO.StreamWriter(filename, False)

        Dim Kolumna As Integer

        Kolumna = CInt(Me.TextBox8.Text)

        If dt.Columns.Count < 0 OrElse dt.Rows.Count < 0 Then 'Ptla na wypadek przedwczesnego przycinicia eksportu
            MsgBox("Bd Krytyczny. Nic nie zaimportowano.", vbCritical + vbOKOnly, "Rejestrator pokoi 2017.")

            Exit Sub

        End If

        For row As Integer = 0 To dt.Rows.Count - 1
            For col As Integer = 0 To Kolumna - 1

                sw.Write(dt.Rows(row).Item(col).ToString & ControlChars.Tab)

            Next

            sw.Write(Environment.NewLine)

        Next

        sw.Close()



Kod kocowy zapisu

Kod:

        Dim sfd As New SaveFileDialog

        If Me.OpenFileDialog1.FileName = "C:\Program_RP2017\PoraRoku\Zeszyt1_Lato92.txt" Then

            With sfd
                .FileName = "C:\Program_RP2017\PoraRoku\Zeszyt1_Lato92.txt"
            End With

            Call data_to_txt(ds.Tables("MyTable"), sfd.FileName)

        End If



Gdzie tkwi problem. Problem jest z zapisem do pliku. Zapisuje ale na samym kocu dodaje zawsze "TAB". Pniej przez ten zy zapis wywala bd z odczytem e za duo kolumn. Pomocy. Dzikuj. Jaka idea,bym sam rozwiza ten problem.

(Tytu tematu dostosowaem - pisz czytelne tytuy, wg zasad opisanych jak wtym dziale: ZASADY ZAKADANIA WTKW - Samolot)
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
samolot



Doczy: 26 Sty 2006
Posty: 8188
Skd: Toru

PostWysany: Wto Sie 08, 2017 11:18 pm      Temat postu: Odpowiedz z cytatem Pisownia

0. Z kodu wynika, e to VB.NET, zmieniem wiec tytu wtku

1. Zamiast wiersza nr 2 proponuj taki:
Kod:
Dim sw As New IO.StreamWriter(filename, False, System.Text.Encoding.Default)
Unikniez wtedy ewentualnych krzakw, jeli chodzi o polskie znaki.

2.
Cytat:
Zapisuje ale na samym kocu dodaje zawsze "TAB".
Program robi to co programista zakodowa. Skoro w twoim pierwszym kodzie w wierszu nr 18 dopisujesz na kocu wiersza ControlChars.Tab, to jest dopisywany

3.
Cytat:
Kod kocowy zapisu
Samo ustanowienie cieki do zapisu czyli w tym wypadki zmiennej FileName okna dialogowego nie jest "kocem zapisu" , a jest jedynie utworzeniem cieki do zapisu, Jeli ta cieka istnieje to dopiero potem mona zapisa twoim pierwszym kodem.

4.
Cytat:
...ale cigle wywala bd
Nie pokazae kodu odczytu. Jednak logicznie rzecz biorc, jeli chodzi o ten ostatni tab, to:
- albo go po prostu do pliku nie dopisuj,
- albo jeli jest do pliku zapisany, to po odczycie go z pliku nie prbuj wstawia go do tebeli

_________________
Nie zadawaj bezcelowych pyta / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Wylij email
czarodziejczarek



Doczy: 19 Kwi 2017
Posty: 40

PostWysany: Sro Sie 09, 2017 8:07 am  OP    Temat postu: Odpowiedz z cytatem Pisownia

Panie SAMOLOT. Jest Pan WIELKI.

Zrobiem tak, przy czym odczyt dziaa PRAWIDOWO. Jest Pan WIELKI.

DODAEM:

Kod:

        For row As Integer = 0 To dt.Rows.Count - 1
            For col As Integer = 0 To Kolumna - 1

                If col = Kolumna - 1 Then
                    sw.Write(dt.Rows(row).Item(col).ToString)
                Else
                    sw.Write(dt.Rows(row).Item(col).ToString & ControlChars.Tab)
                End If

            Next

            sw.Write(Environment.NewLine)

        Next

Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
czarodziejczarek



Doczy: 19 Kwi 2017
Posty: 40

PostWysany: Nie Sie 13, 2017 8:53 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

By nie zakada nowego tematu.

Moje pytanie. Jak zablokowa sortowanie kolumn i wierszy, ale tak eby mona przesuwa si po tabeli za pomoc paska przewijania. Poniewa gdy klikam na nagwek kolumny to sortuje, a nie chc tego. Prosz o pomoc. Dzikuj. Lub prosz mnie naprowadzi, linki bym prosi po polsku. Dzikuj.
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
samolot



Doczy: 26 Sty 2006
Posty: 8188
Skd: Toru

PostWysany: Nie Sie 13, 2017 11:05 pm      Temat postu: Odpowiedz z cytatem Pisownia

Na przykad zablokowanie sortowania dla kolumny o indeksie 0:
Kod:
With DataGridView
    .Columns(0).SortMode = DataGridViewColumnSortMode.NotSortable
End With

_________________
Nie zadawaj bezcelowych pyta / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Wylij email
czarodziejczarek



Doczy: 19 Kwi 2017
Posty: 40

PostWysany: Wto Sie 22, 2017 8:55 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Dzikuje za odpowied i pomoc. szukam im szukam jako e pocztkujcy jestem to nie wiem, ale czy waciwo:

Kod:

                                For dzien = 0 To 30
                                    Me.DataGridView1.Columns(dzien).HeaderText = "Marzec: " & dzien + 1
                                Next dzien



HeaderText ma swj odpowiednik w WIERSZACH ???.

Dzikuj, lub prosz mnie naprowadzi, linki bym prosi po polsku. Dzikuj.Pozdrawiam ;-)[/i]
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
samolot



Doczy: 26 Sty 2006
Posty: 8188
Skd: Toru

PostWysany: Wto Sie 22, 2017 11:38 pm      Temat postu: Odpowiedz z cytatem Pisownia

Ja kiedy te szukaem i, wg mnie, to jego waciwoci przechowujcej text nie ma. To jest ta szara lewa komrka w wierszach. Mona zmieni jej szeroko, lub wyczy. Poza tym w niej pojawiaj si symboliczne informacje informujce o stanie edycji wierszy.
Jeli chcesz stworzy sobie pseudo nagwki wiersza, to moesz zastosowa ustawienie kolumny o indeksie 0 jako staej, co oznacza, e poziomy pasek przewijania siatki DGV nie bdzie jej chowa.

_________________
Nie zadawaj bezcelowych pyta / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Wylij email
czarodziejczarek



Doczy: 19 Kwi 2017
Posty: 40

PostWysany: Czw Sie 24, 2017 2:24 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Dzikuj za odpowied.

Podaje Kod i opisze problem ;-) Kod zapoyczony i zmieniony itp itd. ta cze kodu wczytuje plik i wypenia dgv danymi.

Kod:

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

        Dim i As Integer

        Try

            If Me.TextBox50.Text = 0 Then

                Me.OpenFileDialog1.FileName = "C:\Program_RP2017\Bazadanych\BazaDanych.txt"
                Me.FileName = Me.OpenFileDialog1.FileName
                Dim myData As DataTable = TworzTabele1(Me.FileName) ' inicjacja nowej tabeli i wypenienie jej funkcj
                Me.dss.Tables.Add(myData) ' wypenienie bazy danych informacjami z tabeli
                Me.DataGridView1.DataSource = myData ' wywietlenie tabeli w DatagridView

                Me.DataGridView1.Columns(0).HeaderText = "Numer Faktury - ID"
                Me.DataGridView1.Columns(1).HeaderText = "Imi - ID"
                Me.DataGridView1.Columns(2).HeaderText = "Nazwisko - ID"
                Me.DataGridView1.Columns(3).HeaderText = "Adres Zamieszkania - ID"
                Me.DataGridView1.Columns(4).HeaderText = "Numer PESEL- ID"
                Me.DataGridView1.Columns(5).HeaderText = "Numer NIP - ID"
                Me.DataGridView1.Columns(6).HeaderText = "Numer REGON - ID"
                Me.DataGridView1.Columns(7).HeaderText = "Numer Rachunku Bankowego - ID"
                Me.DataGridView1.Columns(8).HeaderText = "Numer Kod Kraju - ID"

                For i = 0 To 8
                    With Me.DataGridView1
                        .Columns(i).SortMode = DataGridViewColumnSortMode.NotSortable
                    End With
                Next

                Me.DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
                Me.DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells
                Me.DataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically
                Me.StatusStrip1.SizingGrip = False

                Me.TextBox50.Text = 1
                Me.Button4.Enabled = True
                Me.Button3.Enabled = True
                Me.XXX = Me.DataGridView1.RowCount - 1
                Me.TextBox60.Text = Me.XXX
                Me.ToolStripStatusLabel4.Text = Me.XXX
                Me.DataGridView1.Visible = True
                Me.ToolStripStatusLabel6.Text = 9

                Me.Button2.Enabled = False
                Me.Button5.Enabled = True
                Me.TextBox70.Text = 1

            Else

                MsgBox("Bd Krytyczny. Tabela ju zostaa wczytana.", vbCritical + vbOKOnly, "Rejestrator pokoi 2017.")
                Exit Sub

            End If

        Catch ex As Exception

            MsgBox("Bd Krytyczny: " & ex.Message & " Procedura zostanie zakoczona.", vbCritical + vbOKOnly, "Rejestrator pokoi 2017.")

        Finally

            'Pusto

        End Try

    End Sub

    Private Function TworzTabele1(ByVal SciezkaDoPliku As String) As DataTable

        Dim Tabela As DataTable = New DataTable("MyTable")
        Dim i As Integer
        Dim wiersze As DataRow
        Dim wartosc As String()
        Dim f As IO.File = Nothing

        Dim rodzajkodu As New IO.StreamReader(SciezkaDoPliku, System.Text.Encoding.Default)

        Try



            wartosc = rodzajkodu.ReadLine().Split(ControlChars.Tab)

            For i = 0 To wartosc.Length() - 1
                Tabela.Columns.Add(New DataColumn(i))
            Next

            wiersze = Tabela.NewRow

            For i = 0 To wartosc.Length() - 1
                wiersze.Item(i) = wartosc(i).ToString
            Next

            Tabela.Rows.Add(wiersze)
            While rodzajkodu.Peek() <> -1
                wartosc = rodzajkodu.ReadLine().Split(ControlChars.Tab)
                wiersze = Tabela.NewRow
                For i = 0 To wartosc.Length() - 1
                    wiersze.Item(i) = wartosc(i).ToString
                Next
                Tabela.Rows.Add(wiersze)
            End While



        Catch ex As Exception
            MsgBox("Error building datatable: " & ex.Message)
            Return New DataTable("Empty")
        Finally
            rodzajkodu.Close()
        End Try

        Return Tabela
    End Function

End Class



kod dalszy z innego przycisku



Kod:


            Me.table.Rows.Add(Me.TextBox1.Text, Me.TextBox2.Text, Me.TextBox3.Text, Me.TextBox4.Text, Me.TextBox5.Text, Me.TextBox6.Text, Me.TextBox7.Text, Me.TextBox8.Text, Me.TextBox9.Text)
            Me.DataGridView1.DataSource = Me.table



Czy moe mi kto wyjani, dlaczego gdy wczytam tabele z pliku a potem, gdy chce doda do tej samej tabeli co to wczyta jeden element a potem komunikat o bdzie mam.

zaznaczam e KOD po czci jest zapoyczony... ale pomocny...

Aktualizacja:
troszku tak pokombinowaem e problem mam tylko z:
wczytuje tabele i potem po dodaniu jest bd, jeden element jest wczytany a pniej wicej nie da rady.

Dzikuj za Pomoc
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
samolot



Doczy: 26 Sty 2006
Posty: 8188
Skd: Toru

PostWysany: Czw Sie 24, 2017 9:47 pm      Temat postu: Odpowiedz z cytatem Pisownia

1. Wiersz nr 10: podana na sztywno cieka w pewnym momencie zemci si bdem. lepiej budowa j na podstawie cieki System.Windows.Forms.Application.StartupPath

2.
Cytat:
...a potem komunikat o bdzie mam
- wypadaoby poda tre komunikatu.

3.
Cytat:
...gdy chce doda do tej samej tabeli co to wczyta jeden element a potem komunikat ...
DataTable jest komponentem stworzonym do obsugi baz danych. Gdy uywasz tego komponentu i gdy rdo danych ustawiasz za pomoc DataSource, to modyfikacja tych danych jest blokowana, by nie uszkodzi przypadkiem "danych rdowych". Gdyby dane wczyta "rcznie" czyli podobnie jak do DataGridView w wierszach 16-25, to takiej blokady nie powinno by.
_________________
Nie zadawaj bezcelowych pyta / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Wylij email
czarodziejczarek



Doczy: 19 Kwi 2017
Posty: 40

PostWysany: Czw Sie 24, 2017 10:50 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Panie Samolot. Dzikuj za odpowied Panu.

Opisze Problem.

Mam dwie moliwoci w programie, wczyta tabele do pustego dgv albo tworzy nowe elementy w dgv, w przyszoci musi to by zapisane w pliku, ale to inna sprawa.

Jeeli wybieram opcje 2 czyli wpisywanie elementw do dgv normalnie ( dgv w tym momencie jest czyste ) one wchodz i na kocu zawsze komputer dodaje jeden pusty wiersz z tak kropk na nagwku wiersza, tu wszystko funkcjonuje.

Opcja 1 ta z problemem. oki wczytaem sobie plik tekstowy, ten plik tekstowy skada si z 20 wierszy oraz 9 kolumn od dzielonych tabulatorem ( w pliku i potem jako komrki w dgv) wczytywanie z Pomoc Pana i uwag funkcjonuje piknie i bez problemw.

dalej...

plik jest ju wczytany na samej dole otrzymaem pusty wiersz z tak kropk na nagwku wiersza i gdy wpisze dane do "textboxow" i potem, "dodaj to" dodaje ale nie otrzymuje pustego wiersz z tak kropk na nagwku wiersza i potem gdy klikn raz jeszcze pojawia si komunikat a gdy klikn na ten pierwszy wiersz wczytany (21) to on znika w tym przypadku mwimy o wierszu 21 (znikajcy ) oraz 22 ktry nigdy si nie pojawia komunikat bdu.

Program pisze dla "frajdy", ale chciabym, by funkcjonowa prawidowo ;-). Za kadym razem nie mog wprowadza rcznie powiedzmy 100 wierszy, on musz by zachowane odczytane z pliku ewentualnie zmienione a potem musi by moliwo dodawania nowych wierszy i ich zapisania.

Masz racj tablica wg mnie powstaje na sztywno, i dlatego pytam si Pana grzecznie czy mona j jako "od sztywnie" by staa si edytowalna i ebym mg dodawa dalsze wiersze.

Taki opis, prosz o wybaczenie :-)

Dzikuje.



Nowy obraz mapy bitowej.jpg
 Opis:
wiersz z tak kropk na nagwku wiersza

Pobierz
 Nazwa pliku:  Nowy obraz mapy bitowej.jpg
 Wielko pliku:  93.43 KB
 Pobierano:  8 raz(y)


Nowy obraz mapy bitowej.jpg
 Opis:
Plik zdjcie z bdem.

Pobierz
 Nazwa pliku:  Nowy obraz mapy bitowej.jpg
 Wielko pliku:  101.54 KB
 Pobierano:  6 raz(y)

Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
Wywietl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> Visual Studio: C#, VB, VC++, … Wszystkie czasy w strefie CET (Europa)
Id do strony 1, 2  Nastpny
Strona 1 z 2

 
Skocz do:  
Moesz pisa nowe tematy
Moesz odpowiada w tematach
Nie moesz zmienia swoich postw
Nie moesz usuwa swoich postw
Nie moesz gosowa w ankietach
Moesz dodawa zaczniki na tym forum
Moesz pobiera pliki z tego forum




Debug: strone wygenerowano w 0.46617 sekund, zapytan = 13
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |