Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Campo "codigo" no Insert


gabrieldb

Pergunta

Bom dia pessoal, eu aqui mais uma vez, rsrs

Eu criei um campo codigo na tabea "Clientes" do meu BD mais surgiu um problema...eu criei o campo "codigo" como serial tipo ele auto insere o codigo do cliente mais na hora do insert ele pede pra digitar o código na textbox....eu penso que seria assim deixava a textbox em branco e ele auto-inserisse o numero e não precisasse digitar ele na text.

Como eu faço isso ?

Ai vai o código do meu atual Insert

Conex.Execute ("insert into clientes values('" & txtFantasia.Text & "','" & txtEstab.Text & "','" & txtRazao.Text & "','" & txtEndereco.Text & "','" & txtBairro.Text & "','" & txtCidade.Text & "','" & txtEstado.Text & "','" & txtCep.Text & "','" & txtCnpj.Text & "','" & txtInscricao.Text & "','" & txtCcm.Text & "','" & txtFone1.Text & "','" & txtFone2.Text & "','" & txtFone3.Text & "','" & txtFax.Text & "','" & txtResp.Text & "','" & txtCargo.Text & "','" & txtEmail.Text & "','" & txtSite.Text & "')")

ps: O campo codigo é o primeiro da tabela.

Editado por gabrieldb
Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0

gabriel, pela sua descricao não entendi direito o problema, mas pelo seu codigo, o erro q vejo la é o seguinte. a sintaxe do insert é assim:

Insert Into Tabela(Campo1, Campo2) Values('valor1', 'valor2')
viu q no seu caso você não pos os nomes dos campos?? isso nos fazemos quando vamos inserir dados em todos os campos (porque eu podia querer dexar um campo qualquer sem valor, por exemplo). exemplo, se minha tabela, tem apenas os campos Campo1 e Campo2, eu posso fazer assim:
Insert Into Tabela Values('valor1', 'valor2')

agora se a minha tabela tiver os campos Campo1, Campo2 e Campo3, eu não posso usar esse codigo de cima, porque ele espera q você passe o valor do Campo3.

e agora, isso é mta burrice do access (não testei isso em otros bancos de dados, não sei se acontece o mesmo), mas ele espera q você digite o valor TAMBEM DO CAMPO AUTO-NUMEROCAO. mas acontece q alem de não terem sido feitos pra isso, CAMPOS AUTO-NUMERACAO não PODEM RECEBER VALOR, mesmo q você quiser.

isso é mta chatice, pelo menos eu nunca encontrei uma forma melhor de contornar isso, mas o q você vai ter q fazer seria, escrever o nome de todos os campos no seu insert, menos do seu campo auto-numeracao.

se você tiver com preguica de escrever, o q você pode fazer seria um for num recordset q tenha feito um select dessa tabela pegando o rs(indice).Name (q retorna o nome do campo) e concatenar na string.

Link para o comentário
Compartilhar em outros sites

  • 0
e agora, isso é mta burrice do access (não testei isso em otros bancos de dados, não sei se acontece o mesmo), mas ele espera q você digite o valor TAMBEM DO CAMPO AUTO-NUMEROCAO. mas acontece q alem de não terem sido feitos pra isso, CAMPOS AUTO-NUMERACAO não PODEM RECEBER VALOR, mesmo q você quiser.

isso é mta chatice, pelo menos eu nunca encontrei uma forma melhor de contornar isso, mas o q você vai ter q fazer seria, escrever o nome de todos os campos no seu insert, menos do seu campo auto-numeracao.

Então eu corrigi meu insert agora, mais minha dúvida é porque eu tenho que digitar o "codigo" do cliente em uma text se o campo é autonumeração ?

Nos outros bancos ocorre a mesma coisa (eu to usando o PostgreSQL nesse sistema) ele pede mesmo assim o valor do campo "código" e eu queria assim que quando eu clicasse no botão "novo"ele gerasse o código ao invés de ter que digitar,porque como você falou não pode receber valor , e digitar toda vez o código eu não acho legal.

Link para o comentário
Compartilhar em outros sites

  • 0
Então eu corrigi meu insert agora, mais minha dúvida é porque eu tenho que digitar o "codigo" do cliente em uma text se o campo é autonumeração?

não entendi a pergunta... você não precisa escrever nd em text nenhuma sendo auto numeracao ou não. você não precisa nd, você é o programador e é você quem define o q vai precisar ou não. se você quiser q o usuario digite, você faz ele digitar, se você quiser preencher automatico, você preenche, desde q seja possivel.

ou o q você ta querendo é saber qual o ultimo codigo salvo pra preencher o text automatico?? se for isso, o select seria esse:

Select * From Tabela Where Codigo = (Select Max(Codigo) From Tabela)

se a tabela estiver em branco (o proximo codigo sera 1), retornara EOF.

veja, se é isso, qualquer coisa poste.

Link para o comentário
Compartilhar em outros sites

  • 0

Consegui resolver Kuroi, eu tirei o campo "codigo" do insert ai quando eu gravo os outros campos ele autonumera o campo "codigo" na tabela, só que ficou mais uma dúvida : se eu busco um cliente no BD e atualizo por exemplo o telefone dele e salvo, ele não grava em cima do registro atual,ele cria um novo ai fica dois clientes iguais e com o campo telefone diferente.Sabe como eu posso resolver isso ?

Link para o comentário
Compartilhar em outros sites

  • 0

Eu fiz assim mais dá erro.

Conex.Execute ("update clientes nome = '" & txtFantasia.Text & "',estab ='" & txtEstab.Text & "',razao='" & txtRazao.Text & "',endereco='" & txtEndereco.Text & "',bairro='" & txtBairro.Text & "',cidade='" & txtCidade.Text & "',estado='" & txtEstado.Text & "',cep='" & txtCep.Text & "',cnpj='" & txtCnpj.Text & "',inscricao='" & txtInscricao.Text & "',ccm='" & txtCcm.Text & "', fone1='" & txtFone1.Text & "',fone2='" & txtFone2.Text & "', fone3='" & txtFone3.Text & "',fax='" & txtFax.Text & "',resp='" & txtResp.Text & "', cargo='" & txtCargo.Text & "', email='" & txtEmail.Text & "',site='" & txtSite.Text & "')")

Mais dá erro.

Link para o comentário
Compartilhar em outros sites

  • 0

Meu código ficou assim, não dá mais o erro mais também não atualiza nada na tabela fica do meu jeito.

Conex.Execute ("Update clientes Set codigo = '" & codigo & "' Where Codigo = '" & codigo & "'")

Editado por gabrieldb
Link para o comentário
Compartilhar em outros sites

  • 0

esse codigo você ta setando o proprio codigo igual ao codigo q ele já é. então ele vai mudar o codigo pelo proprio codigo. exemplo vai trocar 97 por 97, então vai dar no mesmo.

exeperimenta assim:

Conex.Execute ("update clientes Set nome = '" & txtFantasia.Text & "',estab ='" & txtEstab.Text & "',razao='" & txtRazao.Text & "',endereco='" & txtEndereco.Text & "',bairro='" & txtBairro.Text & "',cidade='" & txtCidade.Text & "',estado='" & txtEstado.Text & "',cep='" & txtCep.Text & "',cnpj='" & txtCnpj.Text & "',inscricao='" & txtInscricao.Text & "',ccm='" & txtCcm.Text & "', fone1='" & txtFone1.Text & "',fone2='" & txtFone2.Text & "', fone3='" & txtFone3.Text & "',fax='" & txtFax.Text & "',resp='" & txtResp.Text & "', cargo='" & txtCargo.Text & "', email='" & txtEmail.Text & "',site='" & txtSite.Text & "' Where codigo = " & codigo)

Link para o comentário
Compartilhar em outros sites

  • 0

Deu certinho esse código ai que você passou, mais ele tá estranho vou dar um exemplo do que tá acontecendo ai você entende melhor do que eu explicar.

Exemplo:

Eu tenho o registro "Universo Tintas" e "Hospital Ifor" ai eu vou e apago do registro "Universo" a palavra "Tintas" e depois volto a Incluir o "Tintas" ele some o registro "Hospital Ifor" e fica os dois outros "Universo" e "Universo Tintas".

Conseguiu entender ?

Editado por gabrieldb
Link para o comentário
Compartilhar em outros sites

  • 0

Esse é o botão salvar sem o insert só com o update

Private Sub cmdSalvar_Click()
FormAlterado = False
 Bloqueio
Call conexao
Conex.Execute ("update clientes Set nome = '" & txtFantasia.Text & "',estab ='" & txtEstab.Text & "',razao='" & txtRazao.Text & "',endereco='" & txtEndereco.Text & "',bairro='" & txtBairro.Text & "',cidade='" & txtCidade.Text & "',estado='" & txtEstado.Text & "',cep='" & txtCep.Text & "',cnpj='" & txtCnpj.Text & "',inscricao='" & txtInscricao.Text & "',ccm='" & txtCcm.Text & "', fone1='" & txtFone1.Text & "',fone2='" & txtFone2.Text & "', fone3='" & txtFone3.Text & "',fax='" & txtFax.Text & "',resp='" & txtResp.Text & "', cargo='" & txtCargo.Text & "', email='" & txtEmail.Text & "',site='" & txtSite.Text & "' Where codigo = '" & codigo & "'")
If rs.State = 1 Then rs.Close
 rs.Open "select * from clientes", Conex, adOpenDynamic, adLockOptimistic
txtFantasia = Empty
txtEstab = Empty
txtRazao = Empty
txtEndereco = Empty
txtBairro = Empty
txtCidade = Empty
txtEstado = "São Paulo"
txtCep = Empty
txtCnpj = Empty
txtInscricao = Empty
txtCcm = Empty
txtFone1 = Empty
txtFone2 = Empty
txtFone3 = Empty
txtFax = Empty
txtResp = Empty
txtCargo = Empty
txtEmail = Empty
txtSite = Empty
Set DataGrid1.DataSource = Nothing
 rs.Close
End Sub
e o botão editar onde eu busco no bd
Private Sub cmdEditar_Click()
Desblokeio
Call conexao
Conex.CursorLocation = adUseClient
If rs.State = 1 Then rs.Close
rs.Open "select * from clientes", Conex, adOpenDynamic, adLockOptimistic
  If rs.EOF Then
     MsgBox "Nenhum registro foi encontrado!", vbExclamation, "De Luca Serviços"
   Else
codigo = rs("codigo")
txtFantasia.Text = Trim(rs("nome"))
txtEstab.Text = Trim(rs("estab"))
txtRazao.Text = Trim(rs("razao"))
txtEndereco.Text = Trim(rs("endereco"))
txtBairro.Text = Trim(rs("bairro"))
txtCidade.Text = Trim(rs("cidade"))
txtEstado.Text = Trim(rs("estado"))
txtCep.Text = Trim(rs("cep"))
txtCnpj.Text = Trim(rs("cnpj"))
txtInscricao.Text = Trim(rs("inscricao"))
txtCcm.Text = Trim(rs("ccm"))
txtFone1.Text = Trim(rs("fone1"))
txtFone2.Text = Trim(rs("fone2"))
txtFone3.Text = Trim(rs("fone3"))
txtFax.Text = Trim(rs("fax"))
txtResp.Text = Trim(rs("resp"))
txtCargo.Text = Trim(rs("cargo"))
txtEmail.Text = Trim(rs("email"))
txtSite.Text = Trim(rs("site"))
preenche_grid
  End If
End Sub

Será que é algum erro neles?

Link para o comentário
Compartilhar em outros sites

  • 0

Consegui resolver Kuroi,eu fiz assim

Coloquei um textbox com a propriedade visible setado para false, busco os dados da tabela e este textbox vai receber o codigo do cliente(melhor que a variavel) e fiz um if se ele conter algo, ou seja, se o lenght dele for maior que zero é sinal de que estes dados já existem no banco de dados e que portanto utilizarei um update, caso contrário o insert.

Ficou assim meu código no botão salvar:

Call conexao
If rs.State = 1 Then rs.Close
 rs.Open "select * from clientes", Conex, adOpenDynamic, adLockOptimistic
 If Len(txtCodigo.Text) > 0 Then
 Conex.Execute ("update clientes Set nome = '" & txtFantasia.Text & "',estab ='" & txtEstab.Text & "',razao='" & txtRazao.Text & "',endereco='" & txtEndereco.Text & "',bairro='" & txtBairro.Text & "',cidade='" & txtCidade.Text & "',estado='" & txtEstado.Text & "',cep='" & txtCep.Text & "',cnpj='" & txtCnpj.Text & "',inscricao='" & txtInscricao.Text & "',ccm='" & txtCcm.Text & "', fone1='" & txtFone1.Text & "',fone2='" & txtFone2.Text & "', fone3='" & txtFone3.Text & "',fax='" & txtFax.Text & "',resp='" & txtResp.Text & "', cargo='" & txtCargo.Text & "', email='" & txtEmail.Text & "',site='" & txtSite.Text & "' Where codigo = " & txtCodigo.Text)
Else
Conex.Execute ("insert into clientes (nome,estab,razao,endereco,bairro,cidade,estado,cep,cnpj,inscricao,ccm, fone1,fone2, fone3,fax,resp, cargo, email,site)values('" & txtFantasia.Text & "','" & txtEstab.Text & "','" & txtRazao.Text & "','" & txtEndereco.Text & "','" & txtBairro.Text & "','" & txtCidade.Text & "','" & txtEstado.Text & "','" & txtCep.Text & "','" & txtCnpj.Text & "','" & txtInscricao.Text & "','" & txtCcm.Text & "','" & txtFone1.Text & "','" & txtFone2.Text & "','" & txtFone3.Text & "','" & txtFax.Text & "','" & txtResp.Text & "','" & txtCargo.Text & "','" & txtEmail.Text & "','" & txtSite.Text & "')")
End If

Valeu...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...