Jump to content

Insert ID's


Mica
 Share

Recommended Posts

Dim connString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\ClubeVideo.accdb"
 Dim OLDB As String = "INSERT INTO Recibo ([iDRecibo],[NomeClube],[MoradaClube],[NIF],[iDCliente],[iDFilme],[PrecoFilme] VALUES (@IDRecibo,@NomeClube,@MoradaClube,@NIF,IDCliente,IDFilme,@PrecoFilme)"
 ' Inicia uma ligação à bse de dados
 Using connection As New OleDbConnection(connString)
	 ' Define o comando e os parâmetros
	 Dim command1 As New OleDbCommand(OLDB, connection)
	 command1.Parameters.Add("@IDRecibo", OleDbType.Integer).Value = TextBox1.Text
	 command1.Parameters.Add("@NomeClube", OleDbType.VarChar).Value = TextBox2.Text
	 command1.Parameters.Add("@MoradaClube", OleDbType.VarChar).Value = TextBox3.Text
	 command1.Parameters.Add("@NIF", OleDbType.Integer).Value = TextBox4.Text
	 command1.Parameters.Add("@IDCliente", OleDbType.Integer).Value = TextBox5.Text
	 command1.Parameters.Add("@IDFilme", OleDbType.Integer).Value = TextBox6.Text
	 command1.Parameters.Add("@PrecoFilme", OleDbType.Integer).Value = TextBox7.Text
	 ' Abre a ligação e insere o registo
	 connection.Open()
	 Dim xx As String = command1.ExecuteNonQuery()
	 If xx < 1 Then
		 MessageBox.Show("Erro ao inserir", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
	 Else
		 MessageBox.Show("Registo inserido com sucesso!", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Information)
		 connection.Close()
		 command1 = Nothing
	 End If
 End Using

Boa Tarde,

Estou aqui com uma dificuldade x.x

Pelo código dá para perceber que o que pretendo fazer é inserir um registo novo, em que o mesmo me de o IDRecibo automaticamente(Ja definido na BD), tal como o IDCliente e o IDFilme, ou seja que me mostre os ID's disponiveis na BD... O problema é que nem á "mão" isto deixa fazer x.x

Dim xx As String = command1.ExecuteNonQuery() ---- Erro de sintaxe na instrução INSERT INTO.

Grato

Edited by Caça
GeSHi
Link to comment
Share on other sites

Olá Mica.

Olhando para a instrução 'Insert' faltam um ')' antes de 'VALUES' e uns '@' nalguns parametros - daí o erro de sintaxe.

O command1.ExecuteNonQuery() retorna o nº de registos afetados (neste caso 1)

É possível retornar valores no caso de commands do tipo StoredProcedure, mas como (penso eu) o Access não as possui, tens de fazer a seguir uma consulta à bd, tipo:

SELECT * FROM Recibo WHERE IdRecibo = @IdRecibo

partindo do princípio que IdRecibo ´c. primaria ou único na tabela.

--------

Por outro lado, não estou a perceber porque queres retornar os IDs se já os tens nas textboxs.

Será que IdRecibo é autonumber?

Se for não o podes utilizar na instrução insert e para retornar o valor Inserido deves utilizar o sql

SELECT Max(IdRecibo) FROM Recibo

Link to comment
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
 Share

×
×
  • Create New...

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.