Necessito consultar se uma informação passda pelo operador já foi inserida no Banco de dados, mas preciso que isso ocorra no evento de um botão, ou seja sem usar um E3Browser
Consulta sem E3Browser
Existem diversas maneiras, uma delas pode ser da seguinte forma:
Sub btn_Click()
Dim objQuery
Dim objRs
Dim vValue
' Se string, usar aspas simples.
vValue = "'ValorDoReg'"
Set objQuery = Screen.AddObject("E3Query", True)
objQuery.DataSource = "NomeDoBancoDeDados"
objQuery.SQL = "SELECT [NomeDaColuna] " & _
"FROM [NomeDaTabela] " & _
"WHERE [NomeDaColuna] LIKE " & vValue
Set objRs = objQuery.GetADORecordset()
If (objRs.RecordCount > 0) Then
MsgBox "Informação já inserida", vbInformation
Else
MsgBox "Informação NÃO inserida", vbExclamation
End If
Screen.DeleteObject( objQuery.PathName )
End Sub
1 Like
@leandrobpedro, obrigado pelo retorno. Inseri o scrip conforme abaix, não apresenta erro, mas embora eu tenha a informação no banco ele não localiza permitindo inserir o dado duplicado.
Sub CommandButton4_Click()
Dim objQuery
Dim objRs
Dim vValue
Dim idValor
' Se string, usar aspas simples.
idValor = Screen.Item("tx_ID_Trilho").Value
vValue = "'tx_ID_Trilho'"
Set objQuery = Screen.AddObject("E3Query", True)
objQuery.DataSource = "Historico"
objQuery.SQL = "SELECT IDTrilho " & _
"FROM Hist_Segmento " & _
"WHERE IDTrilho LIKE " & vValue
Set objRs = objQuery.GetADORecordset()
If (objRs.RecordCount > 0) Then
MsgBox "Informação já inserida", vbInformation
Else
Application.GetObject("Dados.Dados_Processo.ID_Trilho").Value = idValor
MsgBox "Id Registrado com Sucesso", vbExclamation
End If
Screen.DeleteObject( objQuery.PathName )
Suponho que você esteja verificando se o valor de "Dados.Dados_Processo.ID_Trilho"
já esteja inserido no banco na coluna IDTrilho
, correto?
Qual o datatype
desta coluna? int
, varchar
, …?
Sub CommandButton4_Click()
Dim objQuery
Dim objRs
Dim sIdTrilho
sIdTrilho = Screen.Item("tx_ID_Trilho").Value
Set objQuery = Screen.AddObject("E3Query", True)
objQuery.DataSource = "Historico"
objQuery.SQL = "SELECT IDTrilho " & _
"FROM Hist_Segmento " & _
"WHERE IDTrilho LIKE '" & sIdTrilho & "'"
Set objRs = objQuery.GetADORecordset()
If (objRs.RecordCount > 0) Then
MsgBox "Informação já inserida", vbInformation
Else
Application.GetObject("Dados.Dados_Processo.ID_Trilho").Value = sIdTrilho
MsgBox "Id Registrado com Sucesso", vbExclamation
End If
Screen.DeleteObject( objQuery.PathName )
End Sub
@leandrobpedro, encotrei um tópico que deu uma luz…
A única coisa é que tive que inserir uma consulta na tela.
Verificando a existência de um registro no banco de dados. (elipse.com.br)
Tente colocar o foco no botão antes de fazer a consulta:
Sub CommandButton4_Click()
Dim objQuery
Dim objRs
Dim sIdTrilho
Me.SetFocus()
sIdTrilho = Screen.Item("tx_ID_Trilho").Value
Set objQuery = Screen.AddObject("E3Query", True)
objQuery.DataSource = "Historico"
objQuery.SQL = "SELECT IDTrilho " & _
"FROM Hist_Segmento " & _
"WHERE IDTrilho LIKE '" & sIdTrilho & "'"
Set objRs = objQuery.GetADORecordset()
If (objRs.RecordCount > 0) Then
MsgBox "Informação já inserida", vbInformation
Else
Application.GetObject("Dados.Dados_Processo.ID_Trilho").Value = sIdTrilho
MsgBox "Id Registrado com Sucesso", vbExclamation
End If
Screen.DeleteObject( objQuery.PathName )
End Sub
1 Like