Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

soloplayer

if restringindo e comparando no banco

Recommended Posts

ola amigos tenho uma parte de código que esta assim:

 

 

 

Private Sub lvlsalvar_Click()

'=================================================

'txtcodproduto = cod_poduto

'txtnomeproduto = nome_produto

'txtcodbarras = cod_barras

'txtcodembarque = cod_embarque

'txtlocalarquivo = local_arquivo

'=================================================

'AQUI É MEUS CAMPOS DO FORMULARIO E DO MEU BANCO

'=================================================

 

Adodc1.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" & _

"SERVER=localhost;DATABASE=arteid;UID=ODBC;PWD=;" & _

"OPTION=" & 1 + 2 + 8 + 32 + 2048 + 16384

Adodc1.CommandType = adCmdText

Adodc1.RecordSource = "SELECT * FROM codbarras"

Adodc1.Refresh

Adodc1.Recordset.AddNew

 

'ESTA PARTE On ERRO GOTO ERROR É A VARIAVEL DE ERRO DO VB PARA FINALIZAR E DAR CERTO

'USO EM BAIXO ERRO: '''

On Error GoTo codigo

Adodc1.Recordset!cod_produto = txtcodproduto

codigo:

If Err.Number <> 0 Then

MsgBox "Erro código ja existente"

Adodc1.Recordset!cod_produto = txtcodproduto

End If

Adodc1.Recordset!nome_produto = txtnomeproduto

Adodc1.Recordset!cod_barras = txtcodbarras

Adodc1.Recordset!cod_embarque = txtcodembarque

Adodc1.Recordset!local_arquivo = txtlocalarquivo

Adodc1.Recordset.Update

txtnomeproduto.Text = ""

txtcodproduto.Text = ""

txtcodbarras.Text = ""

txtcodembarque.Text = ""

txtlocalarquivo.Text = ""

End Sub

[code=auto:0]

 

 

SO QUE NAO SEI COMO FAZER ELE VERIFICAR O CODIGO SE JA EXISTENTE ELE FICAR AMARRADO NO CAMPO SEM PASSAR POR ELE ATE QUE SEJA DIFERENTE DO CODIGO QUE JA EXISTE, SENDO QUE ELE NA HORA QUE É DIGITADO UM CÓDIGO IQUAL ELE DA ERRO E ABORTA A APLICACAO, COMO FACO ELE AMARRAR SEM SAIR DO CAMPO.

 

GRATO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de você fazer qualquer coisa faz uma busca pelo código digitado

 

Pega toda essa parte:

Adodc1.RecordSource = "SELECT * FROM codbarras"Adodc1.RefreshAdodc1.Recordset.AddNew'ESTA PARTE On ERRO GOTO ERROR É A VARIAVEL DE ERRO DO VB PARA FINALIZAR E DAR CERTO'USO EM BAIXO ERRO: '''On Error GoTo codigoAdodc1.Recordset!cod_produto = txtcodprodutocodigo:If Err.Number <> 0 ThenMsgBox "Erro código ja existente"Adodc1.Recordset!cod_produto = txtcodprodutoEnd If

E deixa assim:

Adodc1.RecordSource = "SELECT * FROM codbarras where cod_produto = " & txtcodprodutoAdodc1.Refreshif not adodc1.recordset.eof then         MsgBox "Erro código ja existente"         txtcodproduto.setfocus 'joga o foco na caixa código         exit sub 'sai dessa rotina (sub)end ifAdodc1.RecordSource = "SELECT * FROM codbarras"Adodc1.RefreshAdodc1.Recordset.AddNewAdodc1.Recordset!cod_produto = txtcodproduto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dae amigos, dae Luizgrs mais uma vez Tks ae mano, a parada rodou redondo, o que significa:

 

   If Not Adodc1.Recordset.EOF Then        MsgBox "Erro código ja existente"        txtcodproduto.SetFocus 'joga o foco na caixa código        Exit Sub 'sai dessa rotina (sub)    End If

ele percorrera o banco?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É assim:

Essa função SLQ:

Adodc1.RecordSource = "SELECT * FROM codbarras where cod_produto = " & txtcodproduto
Ela procura no BD por um código igual ao digitado. Caso ela ache algo a propriedade Adodc1.Recordset.EOF vai ter False caso não ache será True. E só verificar essa propriedade e barrar o processo caso retorne False.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.