HAVING DA CHAVE
pessoal tudo bom
gravo uma chave exemplo 5000-6000-7000-5000
como buscar no MDB se essa chave ja Existe
Sei que existe o Having que posso verificar que já está repitido
preciso gravar primeiro e depois verificar
ou teria como veririfcar antes num select
alguem tem um exemplo
ou mesmo como arrumo esse select
SELECT DISTINCTROW registro.number1 INTO Cadastros_Duplicados
From registro
GROUP BY registro.number1
HAVING Count(registro.number1)>1
Abs
Obrigado
Marcelo Fazan
gravo uma chave exemplo 5000-6000-7000-5000
como buscar no MDB se essa chave ja Existe
Sei que existe o Having que posso verificar que já está repitido
preciso gravar primeiro e depois verificar
ou teria como veririfcar antes num select
alguem tem um exemplo
ou mesmo como arrumo esse select
SELECT DISTINCTROW registro.number1 INTO Cadastros_Duplicados
From registro
GROUP BY registro.number1
HAVING Count(registro.number1)>1
Abs
Obrigado
Marcelo Fazan
Vc tem que verificar antes.
Sql = [Ô]SELECT COUNT(*) AS TOTAL FROM REGISTRO WHERE REGISTRO.NUMBER1 = [ô][Ô] & TxtNumeroChave.Text & [Ô][ô][Ô]
Recordset.Open Sql, Conexao, adOpenKeySet, adLockReadOnly
If Recordset([Ô]TOTAL[Ô]) > 0 Then
MsGBox [Ô]Chave já existe[Ô], vbCritical, [Ô]Aviso[Ô]
End IF
Sql = [Ô]SELECT COUNT(*) AS TOTAL FROM REGISTRO WHERE REGISTRO.NUMBER1 = [ô][Ô] & TxtNumeroChave.Text & [Ô][ô][Ô]
Recordset.Open Sql, Conexao, adOpenKeySet, adLockReadOnly
If Recordset([Ô]TOTAL[Ô]) > 0 Then
MsGBox [Ô]Chave já existe[Ô], vbCritical, [Ô]Aviso[Ô]
End IF
Ola amigo obrigado a ajuda
deu certo só que deu um erro os campos na tabela sao numericos
aa = Val(Text1.Text)
Dim sql As String
Dim rs As New ADODB.Recordset
sql = [Ô]insert into registro (number1, number2, number3, number4) [Ô]
sql = sql & [Ô] Values ([ô][Ô] & Text1.Text & [Ô][ô],[ô][Ô] & Text2.Text & [Ô][ô],[ô][Ô] & Text3.Text & [Ô][ô],[ô][Ô] & Text4.Text & [Ô][ô])[Ô]
[ô]grava registro na tabela
conexao.Execute sql
sql = [Ô]SELECT COUNT(*) AS TOTAL FROM REGISTRO WHERE REGISTRO.NUMBER1 = [ô][Ô] & Text1.Text & [Ô][ô][Ô]
rs.Open sql, conexao, adOpenKeyset, adLockReadOnly
If rs([Ô]TOTAL[Ô]) > 0 Then
MsgBox [Ô]Chave já existe[Ô], vbCritical, [Ô]Aviso[Ô]
End If
A mensagem de Erro é
Tipos de dados incompateveis na expressao de criterio
e aponta essa linha rs.Open sql, conexao, adOpenKeyset, adLockReadOnly
OBrigado
Abs
Marcelo Fazan
deu certo só que deu um erro os campos na tabela sao numericos
aa = Val(Text1.Text)
Dim sql As String
Dim rs As New ADODB.Recordset
sql = [Ô]insert into registro (number1, number2, number3, number4) [Ô]
sql = sql & [Ô] Values ([ô][Ô] & Text1.Text & [Ô][ô],[ô][Ô] & Text2.Text & [Ô][ô],[ô][Ô] & Text3.Text & [Ô][ô],[ô][Ô] & Text4.Text & [Ô][ô])[Ô]
[ô]grava registro na tabela
conexao.Execute sql
sql = [Ô]SELECT COUNT(*) AS TOTAL FROM REGISTRO WHERE REGISTRO.NUMBER1 = [ô][Ô] & Text1.Text & [Ô][ô][Ô]
rs.Open sql, conexao, adOpenKeyset, adLockReadOnly
If rs([Ô]TOTAL[Ô]) > 0 Then
MsgBox [Ô]Chave já existe[Ô], vbCritical, [Ô]Aviso[Ô]
End If
A mensagem de Erro é
Tipos de dados incompateveis na expressao de criterio
e aponta essa linha rs.Open sql, conexao, adOpenKeyset, adLockReadOnly
OBrigado
Abs
Marcelo Fazan
No [ô][Ô] & Text1.Text & [Ô][ô][Ô] , tire as ASPAS SIMPLES.
Outra coisa, vc tem que fazer a verificação ANTES do comando INSERT. Pq senão, vai inserir um novo registro, depois vai verificar que já existe e dar a mensagem de erro.
Coloque tbm um Exit Sub em baixo do MsgBox [Ô]Chave já existe[Ô], vbCritical, [Ô]Aviso[Ô]
Outra coisa, vc tem que fazer a verificação ANTES do comando INSERT. Pq senão, vai inserir um novo registro, depois vai verificar que já existe e dar a mensagem de erro.
Coloque tbm um Exit Sub em baixo do MsgBox [Ô]Chave já existe[Ô], vbCritical, [Ô]Aviso[Ô]
Dim sql As String
Dim rs As New ADODB.Recordset
sql = [Ô]SELECT COUNT(*) AS TOTAL FROM REGISTRO WHERE REGISTRO.NUMBER1 = [ô][Ô] & Text1.Text & [Ô][ô][Ô]
rs.Open sql, conexao, adOpenKeyset, adLockReadOnly
If rs([Ô]TOTAL[Ô]) > 0 Then
MsgBox [Ô]Chave já existe[Ô], vbCritical, [Ô]Aviso[Ô]
Exit Sub
Else
sql = [Ô]insert into registro (number1, number2, number3, number4) [Ô]
sql = sql & [Ô] Values ([ô][Ô] & Text1.Text & [Ô][ô],[ô][Ô] & Text2.Text & [Ô][ô],[ô][Ô] & Text3.Text & [Ô][ô],[ô][Ô] & Text4.Text & [Ô][ô])[Ô]
[ô]grava registro na tabela
conexao.Execute sql
End If
Citação::
Vc não pode fazer COUNT no *. Tem que selecionar um campo.
Como não???
Pode sim, ou tbm pode ser COUNT(CLI_CODIGO), COUNT(CLI_NOME), e por aà vai...
Ola Judas Barros Obrigado as Respostas
Deu certo Aqui
Abraços
Marcelo Fazan
Dim sql As String
Dim rs As New ADODB.Recordset
sql = [Ô]insert into registro (number1, number2, number3, number4) [Ô]
sql = sql & [Ô] Values ([ô][Ô] & Text1.Text & [Ô][ô],[ô][Ô] & Text2.Text & [Ô][ô],[ô][Ô] & Text3.Text & [Ô][ô],[ô][Ô] & Text4.Text & [Ô][ô])[Ô]
[ô]grava registro na tabela
conexao.Execute sql
sql = [Ô]SELECT COUNT(number1) AS TOTAL FROM REGISTRO WHERE REGISTRO.NUMBER1 = [Ô] & Val(Text1.Text) & [Ô][Ô]
rs.Open sql, conexao, adOpenKeyset, adLockReadOnly
If rs([Ô]TOTAL[Ô]) > 1 Then
MsgBox [Ô]Chave já existe[Ô], vbCritical, [Ô]Aviso[Ô]
Text1.Text = [Ô][Ô]
Text2.Text = [Ô][Ô]
Text3.Text = [Ô][Ô]
Text4.Text = [Ô][Ô]
Text1.SetFocus
Else
Unload Me
End If
Deu certo Aqui
Abraços
Marcelo Fazan
Dim sql As String
Dim rs As New ADODB.Recordset
sql = [Ô]insert into registro (number1, number2, number3, number4) [Ô]
sql = sql & [Ô] Values ([ô][Ô] & Text1.Text & [Ô][ô],[ô][Ô] & Text2.Text & [Ô][ô],[ô][Ô] & Text3.Text & [Ô][ô],[ô][Ô] & Text4.Text & [Ô][ô])[Ô]
[ô]grava registro na tabela
conexao.Execute sql
sql = [Ô]SELECT COUNT(number1) AS TOTAL FROM REGISTRO WHERE REGISTRO.NUMBER1 = [Ô] & Val(Text1.Text) & [Ô][Ô]
rs.Open sql, conexao, adOpenKeyset, adLockReadOnly
If rs([Ô]TOTAL[Ô]) > 1 Then
MsgBox [Ô]Chave já existe[Ô], vbCritical, [Ô]Aviso[Ô]
Text1.Text = [Ô][Ô]
Text2.Text = [Ô][Ô]
Text3.Text = [Ô][Ô]
Text4.Text = [Ô][Ô]
Text1.SetFocus
Else
Unload Me
End If
Tópico encerrado , respostas não são mais permitidas