INSERT INTO - [Ô]AUTO INCREMENTO[Ô]

MOREIRA 09/05/2017 09:27:19
#473827
Bom dia todos,

essa é uma boa prática de autoincrementação ?

a sql insert into funciona, porém, sem adicionar a sequência no campo pcódigo

o que esta errado nessa query ?

  Dim sql As String = [Ô]INSERT INTO PRODUTO (PCODIGO, DESCRICAO, UN, PRECO_C, NCM, REFERENCIA) VALUES ([txt-color=#0000f0](SELECT MAX(PCODIGO) + 1 FROM PRODUTO)[/txt-color], @DESCRICAO, @UN, @PRECO_C, @NCM, @REFERENCIA)[Ô]
Using produto As New FbCommand(sql, strConexao)
produto.Parameters.Add([Ô]@DESCRICAO[Ô], FbDbType.VarChar).Value = dgv_Produtos_NotaFiscal.Rows(r).Cells(1).Value
produto.Parameters.Add([Ô]@UN[Ô], FbDbType.VarChar).Value = dgv_Produtos_NotaFiscal.Rows(r).Cells(2).Value
produto.Parameters.Add([Ô]@PRECO_C[Ô], FbDbType.VarChar).Value = dgv_Produtos_NotaFiscal.Rows(r).Cells(4).Value
produto.Parameters.Add([Ô]@NCM[Ô], FbDbType.VarChar).Value = dgv_Produtos_NotaFiscal.Rows(r).Cells(5).Value
produto.Parameters.Add([Ô]@REFERENCIA[Ô], FbDbType.VarChar).Value = dgv_Produtos_NotaFiscal.Rows(r).Cells(7).Value
produto.ExecuteNonQuery()
End Using

MESTRE 09/05/2017 09:30:50
#473828
Citação:

:
Bom dia todos,

essa é uma boa prática de autoincrementação ?

a sql insert into funciona, porém, sem adicionar a sequência no campo pcódigo

o que esta errado nessa query ?

  Dim sql As String = [Ô]INSERT INTO PRODUTO (PCODIGO, DESCRICAO, UN, PRECO_C, NCM, REFERENCIA) VALUES ((SELECT MAX(PCODIGO) + 1 FROM PRODUTO), @DESCRICAO, @UN, @PRECO_C, @NCM, @REFERENCIA)[Ô]
Using produto As New FbCommand(sql, strConexao)
produto.Parameters.Add([Ô]@DESCRICAO[Ô], FbDbType.VarChar).Value = dgv_Produtos_NotaFiscal.Rows(r).Cells(1).Value
produto.Parameters.Add([Ô]@UN[Ô], FbDbType.VarChar).Value = dgv_Produtos_NotaFiscal.Rows(r).Cells(2).Value
produto.Parameters.Add([Ô]@PRECO_C[Ô], FbDbType.VarChar).Value = dgv_Produtos_NotaFiscal.Rows(r).Cells(4).Value
produto.Parameters.Add([Ô]@NCM[Ô], FbDbType.VarChar).Value = dgv_Produtos_NotaFiscal.Rows(r).Cells(5).Value
produto.Parameters.Add([Ô]@REFERENCIA[Ô], FbDbType.VarChar).Value = dgv_Produtos_NotaFiscal.Rows(r).Cells(7).Value
produto.ExecuteNonQuery()
End Using



Auto incrementação é uma coisa e o que você está fazendo é outra.. e isso que está fazendo é uma péssima prática..

Qual banco usa?? em MySQL pode usar AUTO_Increment, em Oracle Sequences para dar um numero automatico..
MOREIRA 09/05/2017 09:33:09
#473829
Citação:

:
:
Bom dia todos,

essa é uma boa prática de autoincrementação ?

a sql insert into funciona, porém, sem adicionar a sequência no campo pcódigo

o que esta errado nessa query ?

  Dim sql As String = [Ô]INSERT INTO PRODUTO (PCODIGO, DESCRICAO, UN, PRECO_C, NCM, REFERENCIA) VALUES ((SELECT MAX(PCODIGO) + 1 FROM PRODUTO), @DESCRICAO, @UN, @PRECO_C, @NCM, @REFERENCIA)[Ô]
Using produto As New FbCommand(sql, strConexao)
produto.Parameters.Add([Ô]@DESCRICAO[Ô], FbDbType.VarChar).Value = dgv_Produtos_NotaFiscal.Rows(r).Cells(1).Value
produto.Parameters.Add([Ô]@UN[Ô], FbDbType.VarChar).Value = dgv_Produtos_NotaFiscal.Rows(r).Cells(2).Value
produto.Parameters.Add([Ô]@PRECO_C[Ô], FbDbType.VarChar).Value = dgv_Produtos_NotaFiscal.Rows(r).Cells(4).Value
produto.Parameters.Add([Ô]@NCM[Ô], FbDbType.VarChar).Value = dgv_Produtos_NotaFiscal.Rows(r).Cells(5).Value
produto.Parameters.Add([Ô]@REFERENCIA[Ô], FbDbType.VarChar).Value = dgv_Produtos_NotaFiscal.Rows(r).Cells(7).Value
produto.ExecuteNonQuery()
End Using



Auto incrementação é uma coisa e o que você está fazendo é outra.. e isso que está fazendo é uma péssima prática..

Qual banco usa?? em MySQL pode usar AUTO_Increment, em Oracle Sequences para dar um numero automatico..



FIREBIRD
GUIMORAES 09/05/2017 09:35:05
#473830
Resposta escolhida
MOREIRA,

O Firebird tem um campo auto-incremento, ou seja, não é necessário fazer isto que você fez (não é uma boa prática).
é possível também programar o auto-incremento a partir de uma trigger e um generator.
OMAR2011 09/05/2017 10:21:54
#473831
Diga de passagem.Ouça as recomendações postadas.
Fora que seu insert com Datagridview não vai ter efeitos de multlipas inserções.
Ai tu vai questionar.Por que não salvou todas as linhas do Datagridview.
MOREIRA 09/05/2017 10:31:12
#473833
Citação:

:
Diga de passagem.Ouça as recomendações postadas.
Fora que seu insert com Datagridview não vai ter efeitos de multlipas inserções.
Ai tu vai questionar.Por que não salvou todas as linhas do Datagridview.



Se aprende é assim, outo quem conhece ..

Ai tu vai questionar.Por que não salvou todas as linhas do Datagridview., como assim não ?

PERCIFILHO 10/05/2017 07:37:24
#473855
Citação:

Por que não salvou todas as linhas do Datagridview., como assim não ?


Se esse seu código estiver no laco For...Next, vai salvar tudo o que estiver no DataGridView, senão não vai.
MOREIRA 10/05/2017 09:33:03
#473862
Citação:

:
Por que não salvou todas as linhas do Datagridview., como assim não ?
Se esse seu código estiver no laco For...Next, vai salvar tudo o que estiver no DataGridView, senão não vai.



sim, ja estava é que nao havia colocado essa parte do código

mas obrigado pelas dicas
Tópico encerrado , respostas não são mais permitidas