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

Sir Pereira

Editor de jogo

8 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O problema não é preencher a ListBox.

Não posso mostrar screen porque não tenho o projecto neste PC, trouxe o projecto por uma PEN, este PC não é meu e não tenho net em casa actualmente.

Instala o SQLite se não te importares, desculpa lá.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Opah :) é que tipo, sem o programa aqui é um pouco complicado de transcrever o código :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

(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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já aqui tá o código  :-[ desculpem não ter posto Geshi, mas agora não sei onde isso anda, por isso um moderador se puder que altere isso :down:

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora