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

_neiah__

Erro a inserir novos dados!

14 mensagens neste tópico

Boas!

Tenho estado  a fazer um programa em vb.net com ligação ao Access, mas não consigo inserir os dados numa tabela, e não sei o porque.

É este o código que tenho estado a usar:

sql2 = "Select cod_entidade from entidades where origem = '" & comboBox1.Text & "';"
sql3 = "Select cod_entidadee from entidades_escola where remetida = '" & comboBox3.Text & "';"
sql4 = "Select cod_classificacao from classificacao where classificacao = '" & ComboBox2.Text & "';"



sql5 = "Insert into registo_entrada (num_entrada, data_entrada, tipo, origem, data_origem, referencia, cod_classificacao, assunto, remetida, arquivo, aguarda_resposta, data_aguarda, respondido, obs) Values ('" & convert.ToInt32(Label16.Text) & "', '" & dateTimePicker1.Value & "', '" & textBox8.Text & "', sql2, '" & dateTimePicker2.Value & "', '" & textBox3.Text & "', sql4, '" & textBox4.Text & "', sql3, '" & textBox6.Text & "', '" & checkBox1.Text &  "', '" & dateTimePicker3.Value & "', '"& checkBox2.Text & "', '" & textBox7.Text & "')"


daentrada.InsertCommand = New System.Data.OleDb.OleDbCommand (sql5, connection1)


MessageBox.Show("Gravado!")
connection1.Open()
daentrada.InsertCommand.ExecuteNonQuery()
connection1.Close()  

E dá-me este erro: "Não foi fornecido nenhum valor para um ou mais parâmetros necessários.0"

Não sei o porque..

Help ?  :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Provavelmente porque não forneces te algum campo que é necessário para a tabela, um campo chave

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Talvez não tenhas preenchido algum dos campos que inseriste nos Values (desculpa lá mas a query é muito grande pra vericar :D) ou porque tens algum campo que não possa ser nulo e não estás a atribuir valor ao mesmo...

Põe uma messagebox ou uma textbox a mostrar a query e vê se realmente escapou alguma coisa pois o erro certamente vem daí

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o problema é que eu preciso do código do texto que está nas combobox's mas não sei como colocar o valor desse código na linha Insert

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o problema é que eu preciso do código do texto que está nas combobox's mas não sei como colocar o valor desse código na linha Insert

Tu podes colocar na combobox um valor e mostrar outro. Para isso utilizas o DisplayMember e ValueMember, quando defines a tua DataSource.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tu podes colocar na combobox um valor e mostrar outro. Para isso utilizas o DisplayMember e ValueMember, quando defines a tua DataSource.

With Me.comboBox1
		.DataSource = ds.Tables(0).DefaultView
		.DisplayMember = "grupo"
		.ValueMember = "cod_grupo"

		.DropDownStyle = ComboBoxStyle.DropDown
            .AutoCompleteMode = AutoCompleteMode.Suggest
            .AutoCompleteSource = AutoCompleteSource.ListItems
	End With

Assim?

é que se for assim dá.me erro " Cannot bind to the new value member."

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
'preenche a combobox2 com os valores ordenados da tabela classificaçao
	sql2 = "Select grupo from grupo;"

	da.SelectCommand.CommandText = sql2
	ds.Clear()

	connection1.Open()
	da.Fill(ds, "cod_grupo")
        connection1.Close()
        
	With Me.comboBox1
		.DataSource = ds.Tables(0).DefaultView
		.DisplayMember = "cod_grupo"
		.ValueMember = "cod_grupo"

		.DropDownStyle = ComboBoxStyle.DropDown
            .AutoCompleteMode = AutoCompleteMode.Suggest
            .AutoCompleteSource = AutoCompleteSource.ListItems

End With

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens de definir no command T-SQL os campos que usas:

sql2 = "Select grupo,cod_grupo from grupo;"

Depois quando preenches o dataset, deves indicar o nome da tabela:

    da.Fill(ds, "grupo")

Finalmente definir a DataSource

    .DataSource = ds.Tables("grupo").DefaultView
    .DisplayMember = "grupo"
    .ValueMember = "cod_grupo"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já alterei o código mas ao introduzir, introduz o grupo e não o código na tabela

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já alterei o código mas ao introduzir, introduz o grupo e não o código na tabela

Tens de mostrar o que tens.

De qualquer maneira, e não sendo bruxo, deves usar ComboBox.SelectedValue para recolher o valor que está na combobox.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Problema Resolvido  :(

Muito Obrigado pela a ajuda  :) :)

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