USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Localizar um determinado valor do recordset da ADO
Luciano_vb
CÁCERES
MT - BRASIL
ENUNCIADA !
Postada em 18/05/2009 11:09 hs            
Bom dia,
Estou tentando localizar um valor "pac_prontuario" em uma tabela do MySQL para que não duplique o mesmo. O código abaixo deu certo porém quando gravo um registro e vou gravar outro sem fechar e abrir o formulário novamente, já não consegue fazer a verificação. O que estou fazendo de errado?
o código que estou usando é:
    objrs.Find "pac_prontuario = " & pac_prontuario
    If objrs.EOF = False Then
        MsgBox "Número de Prontuário já foi cadastrado", vbInformation
        pac_prontuario.SetFocus
        Exit Sub
    End If
Dese já agradeço..
 
Luciano.
   
ivanhoe
BARRA BONITA
SP - BRASIL
ENUNCIADA !
Postada em 19/05/2009 19:43 hs            
Caro colega Luciano_vb
 
Depois que fizer a inclusão de um novo registro faça um requery no objeto que abriu
a tabela, este modo FIND esta procurando a alocação anterior e não localiza porque
a tabela não foi atualizada na memória, ou então utilize um select antes de incluir o registro.
Com  certeza deve estar carregando a tabela no evento Form_Load() do formulario.
Usando ADO :
 
Dim tblAux                   As New ADODB.Recordset
 
      strSQL = ""
      strSQL = strSQL & " Select * From TABELA"
      strSQL = strSQL & " Where pac_prontuario =" &  txtPac_Prontuario
      If tblAux.State = adStateOpen Then tblAux.Close
      tblAux.CursorLocation = adUseClient
      tblAux.Open strSQL, adoBanco, adOpenForwardOnly, adLockReadOnly
      If tblAux.EOF() Then
          Msgbox ....
      else
          incluir registro ....
      endif
 
att.
   
Luciano_vb
CÁCERES
MT - BRASIL
Postada em 19/05/2009 23:35 hs            
Amigo, não está dando certo está dando uns erros, como exemplo diz que: rum-timer 3219: Operação não permitida neste contexto. e mostra o esso onde está  objrs.Close.
o código ficou assim.
 
no load do formulário
sqlstr = "select * from pacientes"
objcon.Open "dsn=SGHC_MySQL"
objcmd.ActiveConnection = objcon
objcmd.CommandType = adCmdText
objcmd.CommandText = sqlstr
objrs.LockType = adLockPessimistic
objrs.CursorType = adOpenKeyset
objrs.CursorLocation = adUseClient
objrs.Open objcmd
objrs.MoveMin
'**************************
no botão gravar com o código q. vc me passou.
    sqlstr = ""
    sqlstr = sqlstr & " Select * From pacientes"
    sqlstr = sqlstr & " Where pac_prontuario =" & pac_prontuario
    If objrs.State = adStateOpen Then objrs.Close
    objrs.CursorLocation = adUseClient
    objrs.Open sqlstr, objcon, adOpenForwardOnly, adLockReadOnly
    If objrs.EOF () Then
        MsgBox "Número de Prontuário já foi cadastrado", vbInformation
        pac_prontuario.SetFocus
        Exit Sub
     else
       GravaDados
    End If
Caso tenha uma idéia onde estou errando, favor retornar.
Desde já agradeço.
 
Luciano.
     
ivanhoe
BARRA BONITA
SP - BRASIL
ENUNCIADA !
Postada em 22/05/2009 22:54 hs            
Caro colega Luciano_vb
 
Pelo que vi vc utiliza para abertura do banco através de DSN (ODBC) , esta técnica que
utilizo é via provedor OLEDB, utilizo banco Firebird e Interbase e funciona muito
bem desta forma:
 
' conexao com o Banco
Public adoBanco           As New ADODB.Connection
Dim tblAux                   As New ADODB.Recordset
 
'Este código abre o Banco Interbase com o provedor especifico
adoBanco.CommandTimeout = 30
adoBanco.ConnectionString = "Provider=ZStyle IBOLE Provider;Data Source=" & strCaminhoDoBanco & ";UID=sysdba;password=masterkey"
adoBanco.Open
      'Abertura da tabela
      strSQL = ""
      strSQL = strSQL & " Select * From TABELA"
      strSQL = strSQL & " Where pac_prontuario =" &  txtPac_Prontuario
      If tblAux.State = adStateOpen Then tblAux.Close
      tblAux.CursorLocation = adUseClient
      tblAux.Open strSQL, adoBanco, adOpenForwardOnly, adLockReadOnly
      If tblAux.EOF() Then
          Msgbox ....
      else
          incluir registro ....
      endif
 
'neste link  http://www.macoratti.net/mysqlvb2.htm vc irá encontrar informação para
conexão com MySQL via OLEDB.
Talvez neste exemplo que te passei acabou "misturando" técnicas diferentes, dai este erro
que está acontecendo, mas posso  te garantir que via OLEDB o acesso é rápido com um código
menor também, vc deve ficar atento para referenciar a biblioteca Microsoft ActiveX Data Objects 2.X LIbrary em seu projeto.
 
att.
 
   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página