FILTRANDO REGISTRO USANDO ADO E SQL

NEGRON 27/07/2005 20:13:49
#96309
Galera por favor me ajudem estou criando um sistema e utilizo access e ADO
é o seguinte.....
estou tentando fazer o seguinte..... quando uma pessoa for iniciar um novo cadastro o codigo é digitado manualmente ......
depois de ser digitado o sistema tera que verificar se aquele codigo já existe no banco e caso exista ele mostre uma mensagem e busque os dados e mostre para o usuário.

estou usando o codigo abaixo:

Set TABRESPONSAVEL = New ADODB.Recordset
With TABRESPONSAVEL
.ActiveConnection = CONEXAO
.Open "Select ncad, data, responsavel, endereco,bairro, datnasc, rg, cic, ctps, titulo,pai,mae, observacao,casapropria,cedida, alugada, invadida from RESPONSAVEL WHERE NCAD ='" & TxtNCad.Text & "'"
End With
até aqui ele filtra mas quando coloco.......

If TABRESPONSAVEL.RecordCount <> 0 Then
Else
TxtDataResp.Text = TABRESPONSAVEL.Fields(1)
TxtResponsavel.Text = TABRESPONSAVEL.Fields(2)
End If

para saber quantos registros ele achou ele me mostra -1
por favor Galera me ajudem....
se alguem souber de uma tecnica mais facil.....
mande o codigo de exemplo

Galerinha até +++++++++++++++++
USUARIO.EXCLUIDOS 27/07/2005 23:25:25
#96324
Resposta escolhida
Boa NEGRON

Então eu tava analizando seu código e seu problema pode ser resolvido com 1 instrução =)

O RecordSet (nesse caso TABRESPONSAVEL) tem uma propriedade chamada CursorLocation que em português significa Localização do Cursor certo???

Essa propriedade define em qual lado será aberto o cursor(O cursor é responsável pela manipulação e recuperação dos dados solicitados através de uma consulta SQL por exemplo.) , do lado cliente ou do lado do servidor veja melhor essas opções abaixo.

AdUseClient : Abre o cursor em modo cliente, ou seja move as informações solicitadas para a maquina cliente, ou seja, nesse caso toda a manipulação dos dados será feita na maquina cliente. Essa opção é reconmendada principalmente quando trabalhamos com banco de dados em rede porque manipulando os dados na máquina cliente estaremos diminuindo o processamento no servidor e representa ganho no tráfego da rede.

AdUseServer: Abre o cursor em modo servidor, nesse caso a manipulação dos dados será feita toda no servidor, gerando maior processamento de dados no servidor e almenta o fluxo de dados na rede o que pode compreter a sua banda de rede dependendo do fluxo de acesso aos dados.

Como você não definiu nenhum valor pra propriedade CursorLocation o seu programa não filtra os dados pois não sabe como será feita a manipulação dos mesmos, prova disso que o RecordSet= -1.

Set TABRESPONSAVEL = New ADODB.Recordset
With TABRESPONSAVEL
.CursorLocation = adUseClient
.ActiveConnection = CONEXAO
.Open "Select ncad, data, responsavel, endereco,bairro, datnasc, rg, cic, ctps, titulo,pai,mae, observacao,casapropria,cedida, alugada, invadida from RESPONSAVEL WHERE NCAD ='" & TxtNCad.Text & "'"
End With

Adicionando essa linha de código em negrito acima, o seu programa já sabe que ele deve filtrar os dados e trazê-los pra máquina cliente, executar as consultas ou alterações necessárias e devolvê-las ao banco de dados com as alterações executadas.

Somente no caso da utilização do banco de dados ser mono (ou seja não estar em rede) que não há muita diferença em escolher AdUseClient ou AdUseServer.

Espero ter ajudado [S63]
NEGRON 28/07/2005 10:08:57
#96361
DIEGOCESAR
valeu ............. veio ..............
ajudou muiiiiiiiiiiiitooooooooooooo

abraço !!!!!!!!!!!!!!!!!!!!
Tópico encerrado , respostas não são mais permitidas