Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

footboyedit

atualizar, apagar e adicionar na bd através de datagrid

Mensagens Recomendadas

footboyedit    0
footboyedit

Boa tarde estou a tentar atualizar dados de uma datagridview assim:

Dim cb As New SqlCommandBuilder(da)

da.Update(ds, "myTable")

Mas dá-me erro: A propriedade ConnectionString não foi inicializada.

Alguem me consegue ajudar?

Baseei-me neste artigo: http://www.jorgepaulino.com/2008/04/vbnet-utilizando-o-controlo.html

Editado por footboyedit

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Cerzedelo    15
Cerzedelo

Á primeira vista o problema parece estar relacionado com a conexão à base de dados, nomeadamente a sua string . Verifique bem o caminho e se a conexão está bem feita. Verifique se anteriormente não fechou a conexão.

Ver os seguintes exemplos : http://www.macoratti.net/07/06/vbn5_mdg.htm , http://www.macoratti.net/vbn5_adb.htm

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
footboyedit    0
footboyedit

Á primeira vista o problema parece estar relacionado com a conexão à base de dados, nomeadamente a sua string . Verifique bem o caminho e se a conexão está bem feita. Verifique se anteriormente não fechou a conexão.

Ver os seguintes exemplos : http://www.macoratti.net/07/06/vbn5_mdg.htm , http://www.macoratti.net/vbn5_adb.htm

mas se o problema fosse esse ele carregaria os dados na mesma?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Cerzedelo    15
Cerzedelo

Se estiver a carregar os dados via código, deveria ter o mesmo erro. Agora se estiver a carregar via tableadapter pode ate estar correcto.

Verifique se no inicio do codigo colocou o import do sql.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
footboyedit    0
footboyedit

Se estiver a carregar os dados via código, deveria ter o mesmo erro. Agora se estiver a carregar via tableadapter pode ate estar correcto.

Verifique se no inicio do codigo colocou o import do sql.

Está tudo por código é só da erro quando vou a editar os dados na datagrid. Está exatamente como no exemplo do jpaulino :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Stradivarius    2
Stradivarius

Não sei se percebi bem a dúvida, mas cá vai uma tentativa de ajuda...

Public myCmd As System.Data.SqlClient.SqlCommand
Public myReader As System.Data.SqlClient.SqlDataReader
Public myConnString As String = "Server=192.168.0.1\SQL;Database=myDB;User ID=sa;Password=1234"
Public myConn As New System.Data.SqlClient.SqlConnection(myConnString)

 For Each oRow As DataGridViewRow In DataGridView1.Rows
'---> INSERT ou UPDATE, naturalmente...
			 myCmd.CommandText = "INSERT INTO myTable VALUES (" & _
								 "'" & oRow.Cells(0).Value & "', " & _
								 "'" & oRow.Cells(1).Value & "', " & _
								 "'" & oRow.Cells(2).Value & "') "
			 myConn.Open()
			 myReader = myCmd.ExecuteReader()
			 myConn.Close()
 Next

Editado por Stradivarius

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
williamjda    0
williamjda

Bom dia.

Amigo tente assim. Para mim funciona perfeitamente.

Faças os imports

Imports Microsoft.VisualBasic
Imports System.Data.SqlClient
Imports System.Data

Essa é a conection string

Public ConectionBD As New SqlConnection("Data Source=IPdoBanco; Initial Catalog=NomeDoBanco; Persist Security Info=True;User ID=LoginDoBanco;Password=SenhaDoBanco")


  'FECHA A CONEXÃO COM O BANCO DE DADOS SE ESTIVER ABERTA
  ConectionBD.Close()

 Try
	'CHECA A CONECTION STRING PARA GRAVAR OS DADOS NO BANCO DE DADOS
	Dim cmd As SqlCommand = ConectionBD.CreateCommand

	'QUERY PARA GRAVAR OS DADOS DO FOMRULARIO NO BANCO DE DADOS
	cmd.CommandText = ("INSERT INTO NomeDaTabela (nomecampotabela1, nomecampotabela2, nomecampotabela3)" _
								 & " VALUES(" _
								 & "'" & NOME_FORM.DataGrid.CurrentRow.Cells(0).Value & "'," _
								 & "'" & NOME_FORM.DataGrid.CurrentRow.Cells(1).Value & "'," _
								 & "'" & NOME_FORM.DataGrid.CurrentRow.Cells(3).Value & "')")

		'ABRE A CONEXÃO DO BANCO DE DADOS
		ConectionBD.Open()

		'CONSULTA A ESTRUTURA DO BANCO DE DADOS OU CRIA OBJETOS DE BANCO DE DADOS COMO TABELAS
		cmd.ExecuteNonQuery()

		'FECHA A CONEXÃO COM O BANCO DE DADOS
		ConectionBD.Close()

	Catch ex As Exception

		'EM CASO DE ERRO NA GRAVAÇÃO DO REGISTRO O SISTEMA RETORNA UMA MENSAGEM DE ERRO.
		MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Titulo da Mensagem")

		'FECHA A CONEXÃO COM O BANCO DE DADOS
		ConectionBD.Close()
	End Try

Depois é só fazer um select para atualizar as informações do dataGrid.

Espero ter ajudado

Editado por williamjda

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
footboyedit    0
footboyedit

Bom dia.

Amigo tente assim. Para mim funciona perfeitamente.

Faças os imports

Imports Microsoft.VisualBasic
Imports System.Data.SqlClient
Imports System.Data

Essa é a conection string

Public ConectionBD As New SqlConnection("Data Source=IPdoBanco; Initial Catalog=NomeDoBanco; Persist Security Info=True;User ID=LoginDoBanco;Password=SenhaDoBanco")


  'FECHA A CONEXÃO COM O BANCO DE DADOS SE ESTIVER ABERTA
  ConectionBD.Close()

 Try
	'CHECA A CONECTION STRING PARA GRAVAR OS DADOS NO BANCO DE DADOS
	Dim cmd As SqlCommand = ConectionBD.CreateCommand

	'QUERY PARA GRAVAR OS DADOS DO FOMRULARIO NO BANCO DE DADOS
	cmd.CommandText = ("INSERT INTO NomeDaTabela (nomecampotabela1, nomecampotabela2, nomecampotabela3)" _
								 & " VALUES(" _
								 & "'" & NOME_FORM.DataGrid.CurrentRow.Cells(0).Value & "'," _
								 & "'" & NOME_FORM.DataGrid.CurrentRow.Cells(1).Value & "'," _
								 & "'" & NOME_FORM.DataGrid.CurrentRow.Cells(3).Value & "')")

		'ABRE A CONEXÃO DO BANCO DE DADOS
		ConectionBD.Open()

		'CONSULTA A ESTRUTURA DO BANCO DE DADOS OU CRIA OBJETOS DE BANCO DE DADOS COMO TABELAS
		cmd.ExecuteNonQuery()

		'FECHA A CONEXÃO COM O BANCO DE DADOS
		ConectionBD.Close()

	Catch ex As Exception

		'EM CASO DE ERRO NA GRAVAÇÃO DO REGISTRO O SISTEMA RETORNA UMA MENSAGEM DE ERRO.
		MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Titulo da Mensagem")

		'FECHA A CONEXÃO COM O BANCO DE DADOS
		ConectionBD.Close()
	End Try

Depois é só fazer um select para atualizar as informações do dataGrid.

Espero ter ajudado

pus exatamente isso e diz que o nonquery nao pode ser executado porque a ligacao esta fechada :confused:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
williamjda    0
williamjda

Então tire o conectionBD.Close do inicio do comando. E tente executar.

'FECHA A CONEXÃO COM O BANCO DE DADOS SE ESTIVER ABERTA
  ConectionBD.Close()

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
footboyedit    0
footboyedit

Então tire o conectionBD.Close do inicio do comando. E tente executar.

'FECHA A CONEXÃO COM O BANCO DE DADOS SE ESTIVER ABERTA
  ConectionBD.Close()

continua igual...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
williamjda    0
williamjda

Bom isso ocorre porque no ato de fazer o Insert a conexão com o seu banco de dados se encontra fechada. Tente fazer o seguinte para testarmos.

No botão da sua aplicação que usa para gravar os dados.

coloque para ver se ele abre a conexão com o banco.

'ABRE A CONEXÃO DO BANCO DE DADOS
ConectionBD.Open()

Editado por williamjda

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
footboyedit    0
footboyedit

Bom isso ocorre porque no ato de fazer o Insert a conexão com o seu banco de dados se encontra fechada. Tente fazer o seguinte para testarmos.

No botão da sua aplicação que usa para gravar os dados.

coloque para ver se ele abre a conexão com o banco.

'ABRE A CONEXÃO DO BANCO DE DADOS
ConectionBD.Open()

nao mostrou nada deve ter aberto

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
williamjda    0
williamjda

Consulta no banco de dados para verificar se os dados foram gravados.

Você pode colocar no insert uma mensagem de confirmação para saber se ele gravou. Como não deu erro é porque gravou. mas assim pelo menos visualmente você sabe se a query foiexecutada. Para isso basta colocar:

				   'ABRE A CONEXÃO DO BANCO DE DADOS
				    ConectionBD.Open()

				    'CONSULTA A ESTRUTURA DO BANCO DE DADOS OU CRIA OBJETOS DE BANCO DE DADOS COMO TABELAS
				    cmd.ExecuteNonQuery()

				    'FECHA A CONEXÃO COM O BANCO DE DADOS
				    ConectionBD.Close()


	    'RETORNA O MENSAGE DE OK APOS GRAVAR NO BANCO
	    MsgBox("Registro efetuado com sucesso.", MsgBoxStyle.Information, "TITULO DA MENSAGEM")

E também pode criar um select para atualizar o Datagrid Após fazer o insert no banco


	   'FECHA A CONEXÃO COM O BANCO DE DADOS
	    ConectionBD.Close()

	  Try
	    'FAZ A CONSULTA NO BANCO
	    Dim SQLConsulta As New SqlDataAdapter("SELECT nomecampo1, nomecampo2, nomecampo3'" _
									 & " FROM NomeDaTabela ", ConectionBD.ConnectionString)

	   'ABRE A CONEXÃO DO BANCO DE DADOS
	    ConectionBD.Open()

	    'GUARDA A CONSULTA REALIZADA NO DATA SET
	    Dim sqlDados As New DataSet

	    'RECEBE OS DADOS DO DATA SET
	    SQLConsulta.Fill(sqlDados)

		 'FECHA A CONEXÃO COM O BANCO DE DADOS
	    ConectionBD.Close()

	    'RECEBE OS DADOS DA CONSULTA REALIZADA
	   NomeDoFormulario.NomeDoDataGrid.DataSource = sqlDados.Tables(0).DefaultView

	   'FAZ COM QUE O DATA GRID INICIE COM A SELEÇÃO DESATIVADA
	   NomeDoFormulario.NomeDoDataGrid.ClearSelection()

    Catch ex As Exception

	   'EM CASO DE ERRO, RETORNA A MENSAGEM
	    MsgBox(ex.Message, MsgBoxStyle.Exclamation, "TITULO DA MENSAGEM")

	   'FECHA A CONEXÃO COM O BANCO DE DADOS
	    ConectionBD.Close()
    End Try

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.