Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sir Pereira

Editor de jogo

Recommended Posts

Sir Pereira

Boas pessoal, estou a desenvolver um jogo, o ProFoot, e para não ter de estar sempre a editar a base de dados com os comandos SQL, resolvi fazer um editor à parte, o problema é que não sei como actualizar a base de dados, isto é a ListBox que lista os clubes à esquerda, se clicarmos num item, os dados vão aparecer inalterados.

Já vi algures, que se deve recarregar o DataSource, o problema é que também tenho de recarregar o DisplayMember, e não sei porque não me está a deixar fazê-lo.

Depois de actualizar ou eliminar um item, tenho de reiniciar (não tenho, porque pus automático, para o programa fazer sozinho) para que a base de dados e a ListBox seja actualizada.

Se puderem deiem uma vista de olhos:

http://www.hdd.pt/download/3901645559/ProFoot - Editor.zip.html

Password: ivopereira

Cumps

Share this post


Link to post
Share on other sites
jpaulino

Não tenho o SQLLite, por isso não consigo ver nada.

Mostra uma imagem e o código que estás a utilizar para preencher a listbox.

Share this post


Link to post
Share on other sites
jpaulino

Mostra o código que tens e explica o problema. Se colocares uma foto ilustrar, melhor!

Share this post


Link to post
Share on other sites
Sir Pereira

(PS: desculpem mas não sei do botão do geshi.. 😳 )

Private Sub botao_update_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles botao_update.Click

        'Ano fundado

        If txt_anofundado.Text <> DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).ano_fundado Then

            Dim SQLconnect As New SQLite.SQLiteConnection()

            SQLconnect.ConnectionString = "Data Source=" & Application.StartupPath & "/saves/database.pfoot" & ";"

            SQLconnect.Open()

            Dim SQLcommand As New SQLite.SQLiteCommand

            SQLcommand = SQLconnect.CreateCommand

            SQLcommand.CommandText = "UPDATE clube SET ano_fundado = '" & txt_anofundado.Text & "' WHERE id = " & DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).id & "; "

            SQLcommand.ExecuteNonQuery()

            SQLconnect.Close()

        End If

        'Estádio

        If txt_estadio.Text <> DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).estadio Then

            Dim SQLconnect As New SQLite.SQLiteConnection()

            SQLconnect.ConnectionString = "Data Source=" & Application.StartupPath & "/saves/database.pfoot" & ";"

            SQLconnect.Open()

            Dim SQLcommand As New SQLite.SQLiteCommand

            SQLcommand = SQLconnect.CreateCommand

            SQLcommand.CommandText = "UPDATE clube SET estadio = '" & txt_estadio.Text & "' WHERE id = " & DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).id & "; "

            SQLcommand.ExecuteNonQuery()

            SQLconnect.Close()

        End If

        'Nome do clube

        If txt_nomeclube.Text <> DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).nome Then

            Dim SQLconnect As New SQLite.SQLiteConnection()

            SQLconnect.ConnectionString = "Data Source=" & Application.StartupPath & "/saves/database.pfoot" & ";"

            SQLconnect.Open()

            Dim SQLcommand As New SQLite.SQLiteCommand

            SQLcommand = SQLconnect.CreateCommand

            SQLcommand.CommandText = "UPDATE clube SET nome = '" & txt_nomeclube.Text & "' WHERE id = " & DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).id & "; "

            SQLcommand.ExecuteNonQuery()

            SQLconnect.Close()

        End If

        'Staff - Director Desportivo

        If txt_staff_directordesportivo.Text <> DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).estadio Then

            Dim SQLconnect As New SQLite.SQLiteConnection()

            SQLconnect.ConnectionString = "Data Source=" & Application.StartupPath & "/saves/database.pfoot" & ";"

            SQLconnect.Open()

            Dim SQLcommand As New SQLite.SQLiteCommand

            SQLcommand = SQLconnect.CreateCommand

            SQLcommand.CommandText = "UPDATE clube SET staff_directordesportivo = '" & txt_staff_directordesportivo.Text & "' WHERE id = " & DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).id & "; "

            SQLcommand.ExecuteNonQuery()

            SQLconnect.Close()

        End If

        'Staff - Treinador

        If txt_staff_treinador.Text <> DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).estadio Then

            Dim SQLconnect As New SQLite.SQLiteConnection()

            SQLconnect.ConnectionString = "Data Source=" & Application.StartupPath & "/saves/database.pfoot" & ";"

            SQLconnect.Open()

            Dim SQLcommand As New SQLite.SQLiteCommand

            SQLcommand = SQLconnect.CreateCommand

            SQLcommand.CommandText = "UPDATE clube SET staff_treinador = '" & txt_staff_treinador.Text & "' WHERE id = " & DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).id & "; "

            SQLcommand.ExecuteNonQuery()

            SQLconnect.Close()

        End If

        'Staff - Treinador Adjunto

        If txt_staff_treinadoradjunto.Text <> DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).estadio Then

            Dim SQLconnect As New SQLite.SQLiteConnection()

            SQLconnect.ConnectionString = "Data Source=" & Application.StartupPath & "/saves/database.pfoot" & ";"

            SQLconnect.Open()

            Dim SQLcommand As New SQLite.SQLiteCommand

            SQLcommand = SQLconnect.CreateCommand

            SQLcommand.CommandText = "UPDATE clube SET staff_treinadoradjunto = '" & txt_staff_treinadoradjunto.Text & "' WHERE id = " & DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).id & "; "

            SQLcommand.ExecuteNonQuery()

            SQLconnect.Close()

        End If

        'Staff - Presidente

        If txt_staff_presidente.Text <> DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).estadio Then

            Dim SQLconnect As New SQLite.SQLiteConnection()

            SQLconnect.ConnectionString = "Data Source=" & Application.StartupPath & "/saves/database.pfoot" & ";"

            SQLconnect.Open()

            Dim SQLcommand As New SQLite.SQLiteCommand

            SQLcommand = SQLconnect.CreateCommand

            SQLcommand.CommandText = "UPDATE clube SET staff_presidente = '" & txt_staff_presidente.Text & "' WHERE id = " & DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).id & "; "

            SQLcommand.ExecuteNonQuery()

            SQLconnect.Close()

        End If

        'Cor

        If rect_cor.FillColor <> Color.FromName(DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).outros_cor) Then

            Dim SQLconnect As New SQLite.SQLiteConnection()

            SQLconnect.ConnectionString = "Data Source=" & Application.StartupPath & "/saves/database.pfoot" & ";"

            SQLconnect.Open()

            Dim SQLcommand As New SQLite.SQLiteCommand

            SQLcommand = SQLconnect.CreateCommand

            SQLcommand.CommandText = "UPDATE clube SET outros_cor = '" & rect_cor.FillColor.ToString & "' WHERE id = " & DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).id & "; "

            SQLcommand.ExecuteNonQuery()

            SQLconnect.Close()

        End If

        'Reiniciar

        Application.Restart()

    End Sub

    Private Sub botao_notao_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles botao_notao.Click

        txt_nomeclube.Text = ""

        txt_anofundado.Text = ""

        txt_estadio.Text = ""

        rect_cor.FillColor = Color.White

        combo_liga.Text = "Liga Sagres"

        txt_staff_presidente.Text = ""

        txt_staff_directordesportivo.Text = ""

        txt_staff_treinador.Text = ""

        txt_staff_treinadoradjunto.Text = ""

    End Sub

    Private Sub botao_inserir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles botao_inserir.Click

        Dim SQLconnect As New SQLite.SQLiteConnection()

        SQLconnect.ConnectionString = "Data Source=" & Application.StartupPath & "/saves/database.pfoot" & ";"

        SQLconnect.Open()

        Dim SQLcommand As New SQLite.SQLiteCommand

        SQLcommand = SQLconnect.CreateCommand

        SQLcommand.CommandText = "INSERT INTO clube (nome, ano_fundado, finanças_balanço, outros_nrsocios, outros_cor, simbolo, estadio, liga, staff_presidente, staff_directordesportivo, staff_treinador, staff_treinadoradjunto) VALUES ('" & txt_nomeclube.Text & "', '" & txt_anofundado.Text & "', '5000000', '500000', '" & rect_cor.FillColor.ToString & "', '', '" & txt_estadio.Text & "', '" & combo_liga.Text & "', '" & txt_staff_presidente.Text & "', '" & txt_staff_directordesportivo.Text & "', '" & txt_staff_treinador.Text & "', '" & txt_staff_treinadoradjunto.Text & "')"

        SQLcommand.ExecuteNonQuery()

        SQLconnect.Close()

        Application.Restart()

    End Sub

    Private Sub botao_eliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles botao_eliminar.Click

        Dim SQLconnect As New SQLite.SQLiteConnection()

        SQLconnect.ConnectionString = "Data Source=" & Application.StartupPath & "/saves/database.pfoot" & ";"

        SQLconnect.Open()

        Dim SQLcommand As New SQLite.SQLiteCommand

        SQLcommand = SQLconnect.CreateCommand

        SQLcommand.CommandText = "DELETE FROM clube WHERE id = " & DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).id & ""

        SQLcommand.ExecuteNonQuery()

        SQLconnect.Close()

        Application.Restart()

    End Sub

Ora bem, como podem ver no meu código, tenho de pôr um Application.Restart() para as actualizações à base de dados poderem ser visualizadas.

E gostaria de saber como o fazer sem reiniciar a aplicação (sem voltar a carregar o DataSource), já agora o código que carrega o DataSource de início:

    Private Sub mainFrm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Me.LigaTableAdapter.Fill(Me.DatabaseDataSet.liga)

        Me.ClubeTableAdapter.Fill(Me.DatabaseDataSet.clube)

        lista_clubes.SelectedIndex = 0

        txt_nomeclube.Text = DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).nome

        txt_anofundado.Text = DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).ano_fundado

        txt_estadio.Text = DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).estadio

        rect_cor.FillColor = Color.FromName(DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).outros_cor)

        combo_liga.Text = DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).liga

        txt_staff_presidente.Text = DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).staff_presidente

        txt_staff_directordesportivo.Text = DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).staff_directordesportivo

        txt_staff_treinador.Text = DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).staff_treinador

        txt_staff_treinadoradjunto.Text = DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).staff_treinadoradjunto

    End Sub

    Private Sub lista_clubes_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lista_clubes.SelectedIndexChanged

        txt_nomeclube.Text = DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).nome

        txt_anofundado.Text = DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).ano_fundado

        txt_estadio.Text = DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).estadio

        rect_cor.FillColor = Color.FromName(DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).outros_cor)

        combo_liga.Text = DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).liga

        txt_staff_presidente.Text = DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).staff_presidente

        txt_staff_directordesportivo.Text = DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).staff_directordesportivo

        txt_staff_treinador.Text = DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).staff_treinador

        txt_staff_treinadoradjunto.Text = DatabaseDataSet.clube.Item(lista_clubes.SelectedIndex).staff_treinadoradjunto

    End Sub

Já agora, depois de eliminar dados aparece-me este erro no VB.NET (para além de eliminar o dado):erroeliminar.jpg

Cumps

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.