Imports System.Data.SqlClient

Public Class FormularzGłówny
    Private m_Połączenie As New SqlConnection()
    Private m_Adapter As SqlDataAdapter
    Private m_Kreator As SqlCommandBuilder
    Private m_TabelaDanych As New DataTable()
    Private m_intNrRekordu As Integer = 0

    Private Sub FormularzGłówny_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
        m_Połączenie.Close()
        m_Połączenie.Dispose()

    End Sub

    Private Sub PokażBieżącyRekord()
        If m_TabelaDanych.Rows.Count = 0 Then
            txtImięNazwisko.Text = ""
            txtMiasto.Text = ""
        End If
        txtImięNazwisko.Text = m_TabelaDanych.Rows(m_intNrRekordu)("ImięNazwisko").ToString()
        txtMiasto.Text = m_TabelaDanych.Rows(m_intNrRekordu)("Miasto").ToString()
    End Sub


    Private Sub FormularzGłówny_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        m_Połączenie.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\test\BazaKontaktów.mdf;Integrated Security=True;Connect Timeout=30"
        m_Połączenie.Open()
        m_Adapter = New SqlDataAdapter("SELECT * FROM Kontakty", m_Połączenie)
        m_Kreator = New SqlCommandBuilder(m_Adapter)
        m_Adapter.Fill(m_TabelaDanych)
        Me.PokażBieżącyRekord()


    End Sub

    Private Sub btnPierwszyRekord_Click(sender As Object, e As EventArgs) Handles btnPierwszyRekord.Click
        ' Przejdź do pierwszego rekordu danych i wyświetl go.
        m_intNrRekordu = 0
        Me.PokażBieżącyRekord()

    End Sub

    Private Sub btnPoprzedniRekord_Click(sender As Object, e As EventArgs) Handles btnPoprzedniRekord.Click
        ' Jeżeli nie jest wyświetlony pierwszy rekord, wybierz poprzedni rekord
        ' i wyświetl go.
        If m_intNrRekordu > 0 Then
            m_intNrRekordu = m_intNrRekordu - 1
            Me.PokażBieżącyRekord()
        End If

    End Sub

    Private Sub btnNastępnyRekord_Click(sender As Object, e As EventArgs) Handles btnNastępnyRekord.Click
        ' Jeżeli nie jest wyświetlony ostatni rekord, wybierz następny rekord
        ' i wyświetl go.
        If m_intNrRekordu < (m_TabelaDanych.Rows.Count - 1) Then
            m_intNrRekordu = m_intNrRekordu + 1
            Me.PokażBieżącyRekord()
        End If

    End Sub

    Private Sub btnOstatniRekord_Click(sender As Object, e As EventArgs) Handles btnOstatniRekord.Click
        ' Jeżeli tabela zawiera rekordy, wybierz ostatni rekord i wyświetl go.
        If m_TabelaDanych.Rows.Count > 0 Then
            m_intNrRekordu = m_TabelaDanych.Rows.Count - 1
            Me.PokażBieżącyRekord()
        End If

    End Sub

    Private Sub btnZapiszRekord_Click(sender As Object, e As EventArgs) Handles btnZapiszRekord.Click
        ' Jeżeli tabela zawiera dane, zmień je.
        If m_TabelaDanych.Rows.Count <> 0 Then
            m_TabelaDanych.Rows(m_intNrRekordu)("ImięNazwisko") = txtImięNazwisko.Text
            m_TabelaDanych.Rows(m_intNrRekordu)("Miasto") = txtMiasto.Text
            m_Adapter.Update(m_TabelaDanych)
        End If

    End Sub

    Private Sub btnDodajRekord_Click(sender As Object, e As EventArgs) Handles btnDodajRekord.Click
        Dim drNowyWiersz As DataRow = m_TabelaDanych.NewRow()
        drNowyWiersz("ImięNazwisko") = txtNoweImięNazwisko.Text
        drNowyWiersz("Miasto") = txtNoweMiasto.Text
        m_TabelaDanych.Rows.Add(drNowyWiersz)
        m_Adapter.Update(m_TabelaDanych)
        m_intNrRekordu = m_TabelaDanych.Rows.Count - 1
        Me.PokażBieżącyRekord()
        txtNoweImięNazwisko.Text = ""
        txtNoweMiasto.Text = ""

    End Sub

    Private Sub btnUsuńRekord_Click(sender As Object, e As EventArgs) Handles btnUsuńRekord.Click
        ' Jeżeli tabela zawiera dane, usuń bieżący rekord.
        If m_TabelaDanych.Rows.Count <> 0 Then
            m_TabelaDanych.Rows(m_intNrRekordu).Delete()
            m_Adapter.Update(m_TabelaDanych)
            m_intNrRekordu = 0
            Me.PokażBieżącyRekord()
        End If

    End Sub
End Class