ADO X FIREBIRD, .INDEX E .SEEK

 Tópico anterior Próximo tópico Novo tópico

ADO X FIREBIRD, .INDEX E .SEEK

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#366300 - 23/02/2011 01:56:14

FNANDOOD
MEDIANEIRA
Cadast. em:Dezembro/2009


Quero saber se funciona o .index e o .seek no firebird, pois aqui retorna índice inexistente:


    rst.Index = "Ind_codcbo"

    'Abre o Recordset
    rst.Open "TB_CBO", cnn, adOpenKeyset, adLockOptimistic, adCmdTableDirect


    'Busca pela registro
    rst.Seek .......



#366382 - 23/02/2011 15:50:17

GREGO
CAMPINAS
Cadast. em:Abril/2005


não sei se isso funciona, mas acho que é melhor você usar sql para pesquisar registros no banco

select * from tabela where campo like '%maria%'



Rumo ao MCPD!

#366393 - 23/02/2011 16:31:22

MARCELO-TREZE
SAO VICENTE
Cadast. em:Abril/2009


olha o colega grego colocou certo o melhor é se usar query

seria algo asism

  rst.Open "SELECT * FROM TB_CBO WHERE campo='" & txtconsulta & "'", cnn, adOpenKeyset, adLockOptimistic, adCmdTableDirect


________________________________________________________________________________________
O orgulho cega até os sábios, ao ponto de não percebam que não são tão sábios como pensam.



#366394 - 23/02/2011 16:36:05

GREGO
CAMPINAS
Cadast. em:Abril/2005


e digo mais


é ainda melhor fazer isso via procedure!

Rumo ao MCPD!

#366396 - 23/02/2011 16:39:29

EDERMIR
SAO PAULO
Cadast. em:Junho/2009


Já tentou mudar a ordem dos comandos?


    'Abre o Recordset
    rst.Open "TB_CBO", cnn, adOpenKeyset, adLockOptimistic, adCmdTableDirect

rst.Index = "Ind_codcbo"


    'Busca pela registro
    rst.Seek .......


RGDS

Eder Mir


Quem sabe a resposta, não faz a pergunta.
Escreveu, não leu? É semi-analfabeto.


#366426 - 23/02/2011 22:31:16

FNANDOOD
MEDIANEIRA
Cadast. em:Dezembro/2009


Citação:
:
Já tentou mudar a ordem dos comandos?


    'Abre o Recordset
    rst.Open "TB_CBO", cnn, adOpenKeyset, adLockOptimistic, adCmdTableDirect

rst.Index = "Ind_codcbo"


    'Busca pela registro
    rst.Seek .......


Tentei desta forma, e da uma msg dizendo: "O provedor atual não oferece suporte para a interface necessária à funcionalidade de Índice"




#366485 - 24/02/2011 14:27:17

LLAIA
ITABORAI
Cadast. em:Maio/2009


Ou seja, o driver que vc usa não dá suporte. Experimente o método First do objeto Recordset. Olha esse exemplo usando o banco employee que acompanha o Firebird.


rs.Open "select * from country", , adOpenKeyset

rs.Find "country='USA'", , adSearchForward, 0

If rs.EOF Then
MsgBox "Nada encontrado"
Else
MsgBox rs("country")
End If


Leandro Laia  
“Quando tudo o que você tem é um martelo, todos os problemas parecem pregos”

#366594 - 25/02/2011 13:42:42

FNANDOOD
MEDIANEIRA
Cadast. em:Dezembro/2009


LLaia,fiquei na dúvida para que serve os índices criados no Firebird, e como eu chamo esses índices?



Resposta escolhida #366627 - 25/02/2011 20:37:20

LLAIA
ITABORAI
Cadast. em:Maio/2009


Citação:
:
LLaia,fiquei na dúvida para que serve os índices criados no Firebird, e como eu chamo esses índices?


Os índices semrpe serviram para o engine de qualquer banco de dados localizar mais rápido os registros. faz parte do processo de otimização. Claro que índices demais prejudicam. Tem que ter critério. Índices não são efetivos em campos com granularidade baixa, ou seja, dados que se repetem nos registros.

A DAO exige um índice para executar o Seek no Access, devido à carcterística do Access de ser apenas um arquivo estruturado de dados, e ela com o Jet faz todo o serviço. Access não é um SGDB. Em um SGBD vc pede o que quer, e o otimizador seleciona o índice adequado para a consulta em questão. Claro que é possível forçr o uso de um índice numa query também.

Leandro Laia  
“Quando tudo o que você tem é um martelo, todos os problemas parecem pregos”

 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por FNANDOOD em 04/03/2011 01:32:18