VERIFICAR SE REGISTRO JA EXISTE EM TABELA FIREBIRD

SANROMAN 09/06/2017 13:56:49
#474420
Olá rapaziada,

Tenho um programa que tem como base de dados o SQL Server e utilizo a seguinte consulta para verificar se um determinado registro já se encontra gravado.

Dim strCmd As String = [Ô]SELECT Conta [Ô] & _
[Ô]FROM tbConta [Ô] & _
[Ô]WHERE Conta = [ô][Ô] & cbConta.Text & [Ô][ô][Ô]

Dim sqlCmd As SqlCommand = New SqlCommand(strCmd, con)
Dim dr As SqlDataReader
dr = sqlCmd.ExecuteReader
dr.Read()

Try
If dr.HasRows Then
Exit Sub
Else
If cbConta.Text = [Ô][Ô] Then
Exit Sub
Else
inserirConta()
End If
End If

Quando o registro existe retorna TRUE e quando não existe FALSE obviamente.

Tenho que fazer a mesma consulta no FIREBIRD e a construí assim:

Dim strCmd As String = [Ô]SELECT Conta [Ô] & _
[Ô]FROM Conta [Ô] & _
[Ô]WHERE Conta = [ô][Ô] & cbConta.Text & [Ô][ô][Ô]

Dim sqlCmd As FbCommand = New FbCommand(strCmd, con)
Dim dr As FbDataReader
dr = sqlCmd.ExecuteReader
dr.Read()

Try
If dr.HasRows Then
Exit Sub
Else
If cbConta.Text = [Ô][Ô] Then
Exit Sub
Else
inserirConta()
End If
End If

Só que mesmo não existindo o registro retorna sempre TRUE, o que não condiz com a verdade.
Aonde estou errando.

Desde já agradeço qualquer ajuda.

GUIMORAES 09/06/2017 15:22:33
#474421
Resposta escolhida
Porque você não faz um count?

ex:

  

dim sql as string = [Ô][Ô]
sql = [Ô]Select count(conta) as qtd from conta where conta = @conta[Ô]

Using cmd as new FbCommand(sql, con)
cmd.paramters.add([Ô]@conta[Ô], cbConta.Text)

Using dr as FbDataReader = cmd.ExecuteReader()
If dr.Read() = true then
if not isdbnull(dr.item([Ô]qtd)) then
if cint(dr.item([Ô]qtd[Ô])) > 0
[ô]Tem registro
end if
end if
End if
End Using

End Using

SANROMAN 09/06/2017 16:30:43
#474425
Valeu, GUIMORAES

Na mosca, muito obrigado.
Estou encerrando o tópico
Tópico encerrado , respostas não são mais permitidas