
{"id":3594,"date":"2010-02-25T11:21:50","date_gmt":"2010-02-25T14:21:50","guid":{"rendered":"https:\/\/eliezerladeira.com.br\/blog\/?p=3594"},"modified":"2026-02-09T11:58:00","modified_gmt":"2026-02-09T14:58:00","slug":"ado-localizando-informacoes","status":"publish","type":"post","link":"https:\/\/eliezerladeira.com.br\/blog\/ado-localizando-informacoes\/","title":{"rendered":"ADO \u2013 Localizando\u00a0informa\u00e7\u00f5es"},"content":{"rendered":"<div class=\"entry\">\n<p>Quando falamos a n\u00edvel de dados (campos e registros), estamos tratando com o objeto&nbsp;<em>Recordset<\/em>. Vamos mostrar como encontrar dados espec\u00edficos em um&nbsp;<em>Recordset ADO<\/em>. Lembrando que um objeto&nbsp;<em>Recordset<\/em>&nbsp;possui muitas fun\u00e7\u00f5es \u00fateis. Entre elas podemos citar as mais usadas:&nbsp;<em>Bookmark, Find, Seek, Filter<\/em>.<\/p>\n<h3><strong>Usando Bookmarks (marcadores)<\/strong><\/h3>\n<p>Um bookmark de um recordset \u00e9 como um cursor que aponta para um registro espec\u00edfico dentro do&nbsp;<em>Recordset<\/em>&nbsp;identificando-o de forma \u00fanica. Fazendo uma analogia: ao ler um livro, voc\u00ea costuma usar um marcador para indicar em qual p\u00e1gina parou para, quando retornar a leitura, localizar com rapidez onde parou. Assim funciona um bookmark. Para us\u00e1-lo em um objeto recordset, as etapas s\u00e3o:<\/p>\n<ul>\n<li>Defina uma vari\u00e1vel para ser usada como marcador:&nbsp;&nbsp;<strong>Dim marcador as variant<\/strong><\/li>\n<li>Quando desejar marcar uma posi\u00e7\u00e3o em um recordset no registro atual usando a vari\u00e1vel definida acima, fa\u00e7a:&nbsp;&nbsp;<strong>marcador = rs.bookmark<\/strong><\/li>\n<li>Para retornar a posi\u00e7\u00e3o marcada no item anterior, fa\u00e7a:&nbsp;&nbsp;<strong>rs.bookmark = marcador<\/strong><\/li>\n<\/ul>\n<p>Mas tome cuidado pois nem todos os registros suportam bookmarks. Para verificar se um recordset suporta bookmarks, use a seguinte instru\u00e7\u00e3o:&nbsp;&nbsp;<strong>blnmarcador = rs.Supports(adBookmark)<\/strong><\/p>\n<p>Assim, o m\u00e9todo&nbsp;<strong>Supports<\/strong>&nbsp;usando o argumento&nbsp;<strong>adBookmark<\/strong>&nbsp;retorna&nbsp;<strong>TRUE<\/strong>&nbsp;se o recordset suporta bookmarks e&nbsp;<strong>FALSE<\/strong>, caso n\u00e3o suporte.<\/p>\n<h3><strong>Localizando dados com ADO<\/strong><\/h3>\n<p>Basicamente temos dois m\u00e9todos para localizar dados em um recordset usando ADO:&nbsp;<strong>Find e Seek<\/strong>.<\/p>\n<p><strong>1) Usando o m\u00e9todo Find<\/strong><\/p>\n<p>O m\u00e9todo&nbsp;<strong>Find<\/strong>&nbsp;\u00e9 usado para encontrar um registro que cont\u00e9m um determinado valor em um determinado campo do registro. Voc\u00ea define um crit\u00e9rio de busca, e se o crit\u00e9rio for satisfeito, o ponteiro do registro se posiciona no registro que atendeu ao crit\u00e9rio. Se o crit\u00e9rio n\u00e3o foi atendido, o ponteiro se posiciona no fim do recordset. A sintaxe \u00e9 a seguinte:<\/p>\n<p><strong>Find (<em>crit\u00e9rio, SkipRows, searchDirection, start<\/em>)<\/strong><\/p>\n<p><strong>Par\u00e2metros:<\/strong><\/p>\n<p><strong>crit\u00e9rio<\/strong>&nbsp;\u2013 uma string contendo o nome da coluna, o operador de compara\u00e7\u00e3o e o valor que desejamos localizar.<\/p>\n<p>Exemplos de strings de busca:<\/p>\n<ul>\n<li>\u201cFornecedorID &gt;= 7\u201d<\/li>\n<li>\u201cDataPedido = #09\/10\/1997#\u201d<\/li>\n<li>\u201cCodigo &gt; 7\u201d<\/li>\n<li>\u201cNome = \u2018\u201d &amp; variavel &amp; \u201c\u2018\u201d<\/li>\n<\/ul>\n<p>Lembrando que os valores strings devem vir entre aspas simples (\u2018Joao\u2019) e as datas devem estar iniciadas e terminadas com o s\u00edmbolo (#).<\/p>\n<p><strong>SkipRows<\/strong>&nbsp;\u2013 define o deslocamento da linha atual ou o bookmark padr\u00e3o para iniciar a busca. O padr\u00e3o \u00e9 come\u00e7ar na linha atual e terminar na \u00faltima linha.<\/p>\n<p><strong>searchDirection<\/strong>&nbsp;\u2013 indica a dire\u00e7\u00e3o em que o recordset \u00e9 procurado. Os valores podem ser:<\/p>\n<ul>\n<li><strong>adSearchForward ou adSearchBackward<\/strong>&nbsp;\u2013 a busca ir\u00e1 cessar no in\u00edcio ou no fim do recordset dependendo destes valores. Se a busca \u00e9 iniciada para frente e nada for encontrado, o cursor do recordset \u00e9 definido para al\u00e9m do \u00faltimo registro e a propriedade EOF (End Of File) retorna TRUE. J\u00e1 se a busca \u00e9 feita para tr\u00e1s e nada for achado, o cursor \u00e9 definido para al\u00e9m do in\u00edcio do arquivo e a propriedade BOF (Beginning Of File) retorna TRUE.<\/li>\n<\/ul>\n<p><strong>start<\/strong>&nbsp;\u2013 define um bookmark de in\u00edcio para a busca.<\/p>\n<p><strong>Obs.: Se voc\u00ea n\u00e3o definir a posi\u00e7\u00e3o do cursor na linha atual quando for iniciar a busca, ir\u00e1 ocorrer um erro. Por isso, antes de usar o m\u00e9todo&nbsp;<\/strong><strong>Find, voc\u00ea pode mover o cursor para o in\u00edcio do arquivo usando o m\u00e9todo&nbsp;<\/strong><strong>MoveFirst.<\/strong><\/p>\n<p><strong>Exemplo pr\u00e1tico:<\/strong><\/p>\n<p>Vamos mostrar em um exemplo pr\u00e1tico como usar o m\u00e9todo&nbsp;<strong>Find<\/strong>.<\/p>\n<ul>\n<li>Inicie um novo projeto no VB e antes de qualquer coisa, fa\u00e7a uma refer\u00eancia a biblioteca ADO, na op\u00e7\u00e3o do menu&nbsp;<em><strong>Project | References<\/strong><\/em>, como na figura abaixo.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek11.gif\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-617 lazyload\" title=\"ado_sek1\" data-src=\"https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek11.gif?w=468\" data-sizes=\"(max-width: 451px) 100vw, 451px\" data-srcset=\"https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek11.gif 451w, https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek11.gif?w=150&amp;h=68 150w, https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek11.gif?w=300&amp;h=136 300w\" alt=\"\" data-attachment-id=\"617\" data-permalink=\"https:\/\/netsysoft.wordpress.com\/2010\/02\/25\/ado-localizando-informacoes\/ado_sek1-2\/\" data-orig-file=\"https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek11.gif\" data-orig-size=\"451,204\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"ado_sek1\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek11.gif?w=300\" data-large-file=\"https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek11.gif?w=451\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\"><\/a><\/p>\n<ul>\n<li>A seguir, insira o seguinte c\u00f3digo no projeto:<\/li>\n<\/ul>\n<table border=\"1\" width=\"100%\" bgcolor=\"#ffffff\">\n<tbody>\n<tr>\n<td width=\"100%\">Dim cnn As New ADODB.connection<br \/>\nDim rst As New ADODB.Recordset<\/p>\n<p><strong>Private Sub Form_Load()<\/strong><br \/>\nDim criterio As String&nbsp;\u2018Abre a conex\u00e3o<br \/>\ncnn.Open \u201cProvider=Microsoft.Jet.OLEDB.3.51;Data Source=C:\\teste\\Northwind.mdb;\u201d&nbsp;\u2018Abre o Recordset<br \/>\nrst.CursorLocation = adUseClient<br \/>\nrst.Open \u201cSelect * From Suppliers\u201d,&nbsp;cnn,&nbsp;adOpenKeyset, adLockOptimistic, adCmdText&nbsp;<\/p>\n<p>\u2018move-se para o primeiro registro<br \/>\nrst.MoveFirst<\/p>\n<p>\u2018define o criterio para busca<br \/>\ncriterio = \u201cCountry Like \u2018A%&#8217;\u201d<br \/>\n\u2018&nbsp;inicia busca no recordset<br \/>\n<strong>rst.Find criterio, 0, adSearchForward<\/strong><\/p>\n<p>\u2018 percorre o recordset ate o seu final<br \/>\nWhile Not rst.EOF<br \/>\nDebug.Print rs(\u201cCompanyName\u201d)<br \/>\nmarcador = rst.Bookmark<br \/>\nrs.Find criterio, 1, adSearchForward, marcador<br \/>\nWend<\/p>\n<p><strong>End Sub<\/strong><\/p>\n<p>&nbsp;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Vamos explicar passo a passo:<\/p>\n<p>1.&nbsp;Dim cnn As New ADODB.connection<br \/>\nDim rst As New ADODB.Recordset<\/p>\n<p>Define as vari\u00e1veis objetos usadas para a conex\u00e3o e para o objeto Recordset.<\/p>\n<p>2.&nbsp;\u2018Abre a conex\u00e3o<br \/>\ncnn.Open \u201cProvider=Microsoft.Jet.OLEDB.3.51;Data Source=C:\\teste\\Northwind.mdb;\u201d<\/p>\n<p>Abrimos uma conex\u00e3o usando o provedor (<strong>Microsoft.Jet.OLEDB.3.51<\/strong>) e o Data Source (C:\\teste\\Northwind.mdb).<\/p>\n<p>3.&nbsp;\u2018Abre o Recordset<br \/>\nrst.CursorLocation = adUseClient<br \/>\nrst.Open \u201cSelect * From Suppliers\u201d,&nbsp;cnn,&nbsp;adOpenKeyset, adLockOptimistic, adCmdText<\/p>\n<p>Definimos o tipo de cursor usado, no caso usamos o cursor do lado do cliente (<strong>AdUseClient<\/strong>) e abrimos um recordset com os par\u00e2metros&nbsp;<strong>AdOpenKeySet<\/strong>&nbsp;(permite a altera\u00e7\u00e3o) e&nbsp;<strong>adLockOptimistic<\/strong>&nbsp;(usa o bloqueio pessimista (mant\u00e9m o bloqueio at\u00e9 usar o m\u00e9todo para atualizar)).<\/p>\n<p>4.&nbsp;\u2018define o criterio para busca<br \/>\ncriterio = \u201cCountry Like \u2018A%&#8217;\u201d<br \/>\n\u2018&nbsp;inicia busca no recordset<br \/>\n<strong>rst.Find criterio, 0, adSearchForward<\/strong><\/p>\n<p>Definimos o crit\u00e9rio para busca e iniciamos a busca usando o m\u00e9todo&nbsp;<strong>Find<\/strong>, usando os par\u00e2metros&nbsp;<strong>SkipRows<\/strong>&nbsp;= 0 e&nbsp;<strong>adSearchForward<\/strong>&nbsp;(busca do in\u00edcio para o fim).<\/p>\n<p>5.&nbsp;While Not rst.EOF<br \/>\nDebug.Print rs(\u201cCompanyName\u201d)<br \/>\nmarcador = rst.Bookmark<br \/>\nrs.Find criterio, 1, adSearchForward, marcador<br \/>\nWend<\/p>\n<p>Percorremos o recordset, imprimindo o campo&nbsp;<strong>CompanyName<\/strong>&nbsp;e se posicionando a partir do bookmark anterior, com avan\u00e7o de um registro para frente, a partir do bookmark (<strong>marcador<\/strong>). Note que usamos o bookmark para armazenar a posi\u00e7\u00e3o atual do registro e usamos esta posi\u00e7\u00e3o inicial para a pr\u00f3xima busca.<\/p>\n<p><strong>2) Usando o m\u00e9todo Seek<br \/>\n<\/strong><\/p>\n<p>O m\u00e9todo&nbsp;<strong>Seek<\/strong>&nbsp;permite a procura em uma coluna. Ele s\u00f3 encontra os valores iguais ao valor da procura e vai precisar de um provedor de dados que permita a utiliza\u00e7\u00e3o da propriedade&nbsp;<em>Index<\/em>&nbsp;e o m\u00e9todo&nbsp;<strong>Seek<\/strong>&nbsp;(nem todos os provedores permitem). Al\u00e9m disso, o m\u00e9todo&nbsp;<strong>Seek<\/strong>&nbsp;vai requerer um cursor do lado do servidor.<\/p>\n<p>Atualmente, somente alguns provedores permitem usar a propriedade&nbsp;<em>Index<\/em>&nbsp;e o m\u00e9todo&nbsp;<strong>Seek<\/strong>&nbsp;do objeto&nbsp;<em>Recordset<\/em>&nbsp;para procurar por valores em um \u00edndice de uma tabela. O provedor OLE DB (Provider for Microsoft Jet 4.0) que \u00e9 usado para se conectar a um banco de dados Access, permite a utiliza\u00e7\u00e3o do m\u00e9todo&nbsp;<strong>Seek<\/strong>.<\/p>\n<p>Para verificar se o provedor suporta a propriedade&nbsp;<em>Index<\/em>&nbsp;e o m\u00e9todo&nbsp;<strong>Seek<\/strong>, podemos usar o m\u00e9todo&nbsp;<strong>Supports<\/strong>&nbsp;com os par\u00e2metros&nbsp;<strong>adIndex<\/strong>&nbsp;e&nbsp;<strong>adSeek<\/strong>. Veja o exemplo abaixo:<\/p>\n<table border=\"0\" width=\"100%\" bgcolor=\"#ffffff\">\n<tbody>\n<tr>\n<td width=\"100%\">If rs.Supports(adIndex) then<br \/>\nmsgbox \u201cEste Provedor suporta a propriedade Index\u201d<br \/>\nendif&nbsp;<\/p>\n<p>If rs.Supports(adSeek) then<br \/>\nmsgbox \u201cEste Provedor suporta a propriedade Seek\u201d<br \/>\nendif<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Voc\u00ea deve ter o cuidado de definir a propriedade&nbsp;<em>Index<\/em>&nbsp;assim que o Recordset for aberto para depois usar o m\u00e9todo&nbsp;<strong>Seek<\/strong>. A propriedade&nbsp;<em>Index<\/em>&nbsp;indica o nome do \u00edndice que estar\u00e1 ativo. Assim, supondo que voc\u00ea possua uma tabela chamada&nbsp;<strong>clientes<\/strong>&nbsp;e que queira fazer uma busca pela coluna&nbsp;<strong>Nome<\/strong>&nbsp;da tabela, vai precisar definir um \u00edndice para estar coluna na tabela, dando a ele um nome. O nome do \u00edndice pode ser o mesmo nome da coluna. Para o nosso caso, poder\u00edamos ter criado um \u00edndice chamado Nome (voc\u00ea poderia ter usado qualquer outro nome para definir o \u00edndice). Ter\u00edamos ent\u00e3o:&nbsp;&nbsp;<strong>rs.index \u2013 \u201cnome\u201d<\/strong><\/p>\n<p>Em muitos casos, quando voc\u00ea usa um campo&nbsp;<strong>autonumera\u00e7\u00e3o<\/strong>&nbsp;no Access e define este campo como uma chave prim\u00e1ria, o \u00edndice&nbsp;<strong>PrimaryKey<\/strong>&nbsp;ser\u00e1 criado para esta coluna da tabela. Ent\u00e3o, se for usar esta coluna para fazer uma busca usando o&nbsp;<strong>Seek<\/strong>, dever\u00e1 usar a sintaxe:&nbsp;&nbsp;<strong>rs.Index = \u201cPrimaryKey\u201d<\/strong><\/p>\n<p>Depois que a propriedade&nbsp;<em>Index<\/em>&nbsp;foi definida para o nome do \u00edndice existente na tabela, podemos usar o m\u00e9todo&nbsp;<strong>Seek<\/strong>&nbsp;para procurar na coluna desejada. Quando o m\u00e9todo&nbsp;<strong>Seek<\/strong>&nbsp;encontrar o registro desejado, o ponteiro ir\u00e1 se posicionar neste registro. Se nada for encontrado, o ponteiro \u00e9 definido para EOF. A sintaxe \u00e9 a seguinte:<\/p>\n<p><strong>rs.Seek Array(valordacoluna)<\/strong><\/p>\n<p>Aqui voc\u00ea deve tomar cuidado. Como um \u00edndice pode ser constitu\u00eddo de uma ou mais colunas, o termo&nbsp;<strong>valordacoluna<\/strong>&nbsp;indica os valores da coluna. Vamos supor que voc\u00ea tem uma tabela de&nbsp;<strong>clientes<\/strong>&nbsp;com um campo&nbsp;<strong>CodigoID<\/strong>&nbsp;definido como chave prim\u00e1ria, e voc\u00ea quer procurar pelo cliente cujo c\u00f3digo seja igual a 120. Voc\u00ea dever\u00e1 procurar pelo valor 120 na coluna&nbsp;<strong>CodigoID<\/strong>&nbsp;e dever\u00e1 fazer:<\/p>\n<p><strong>rs.Index = \u201cPrimaryKey\u201d<\/strong><\/p>\n<p><strong>rs.Seek Array(120)<\/strong><\/p>\n<p>Se o \u00edndice possuir mais de uma coluna, voc\u00ea dever\u00e1 informar no vetor (array) os valores de todas as colunas contidas no \u00edndice. Por exemplo, se uma tabela&nbsp;<strong>pedidos<\/strong>&nbsp;possuir um \u00edndice chamado&nbsp;<em>PrimaryKey<\/em>&nbsp;e for constitu\u00eddo pelos campos&nbsp;<strong>codigopedido<\/strong>&nbsp;e&nbsp;<strong>codigoproduto<\/strong>&nbsp;da tabela, ao usar o m\u00e9todo&nbsp;<strong>Seek<\/strong>&nbsp;para procurar pelo pedido cujo c\u00f3digo seja igual a 23 e c\u00f3digo de produto igual a 50, voc\u00ea dever\u00e1 fazer:<\/p>\n<p><strong>rs.Index = \u201cPrimaryKey\u201d<\/strong><\/p>\n<p><strong>rs.Seek Array(23,50)<\/strong><\/p>\n<p>Vejamos agora um exemplo completo usando a propriedade&nbsp;<em>Index<\/em>&nbsp;e o m\u00e9todo&nbsp;<strong>Seek<\/strong>:<\/p>\n<p>Neste exemplo, usaremos o banco de dados Northwind.mdb e a tabela Funcion\u00e1rios. A estrutura e os \u00edndices criados s\u00e3o dados abaixo:<\/p>\n<p><a href=\"https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek3.gif\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-619 lazyload\" title=\"ado_sek3\" data-src=\"https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek3.gif?w=468\" data-sizes=\"(max-width: 272px) 100vw, 272px\" data-srcset=\"https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek3.gif 272w, https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek3.gif?w=150&amp;h=99 150w\" alt=\"\" data-attachment-id=\"619\" data-permalink=\"https:\/\/netsysoft.wordpress.com\/2010\/02\/25\/ado-localizando-informacoes\/ado_sek3\/\" data-orig-file=\"https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek3.gif\" data-orig-size=\"272,180\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"ado_sek3\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek3.gif?w=272\" data-large-file=\"https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek3.gif?w=272\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\"><\/a><\/p>\n<p><a href=\"https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek4.gif\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-620 lazyload\" title=\"ado_sek4\" data-src=\"https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek4.gif?w=468\" data-sizes=\"(max-width: 424px) 100vw, 424px\" data-srcset=\"https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek4.gif 424w, https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek4.gif?w=150&amp;h=53 150w, https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek4.gif?w=300&amp;h=106 300w\" alt=\"\" data-attachment-id=\"620\" data-permalink=\"https:\/\/netsysoft.wordpress.com\/2010\/02\/25\/ado-localizando-informacoes\/ado_sek4\/\" data-orig-file=\"https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek4.gif\" data-orig-size=\"424,150\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"ado_sek4\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek4.gif?w=300\" data-large-file=\"https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek4.gif?w=424\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\"><\/a><\/p>\n<p>Iremos usar o \u00edndice chave prim\u00e1ria&nbsp;<strong>CodigoDoFuncionario<\/strong>&nbsp;para localizar o funcion\u00e1rio e exibir o seu nome.<\/p>\n<p>O projeto usar\u00e1 um formul\u00e1rio, uma caixa de texto e um bot\u00e3o de comando.<\/p>\n<p><a href=\"https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek5.gif\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-622 lazyload\" title=\"ado_sek5\" data-src=\"https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek5.gif?w=468\" data-sizes=\"(max-width: 318px) 100vw, 318px\" data-srcset=\"https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek5.gif 318w, https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek5.gif?w=150&amp;h=58 150w, https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek5.gif?w=300&amp;h=116 300w\" alt=\"\" data-attachment-id=\"622\" data-permalink=\"https:\/\/netsysoft.wordpress.com\/2010\/02\/25\/ado-localizando-informacoes\/ado_sek5\/\" data-orig-file=\"https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek5.gif\" data-orig-size=\"318,123\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"ado_sek5\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek5.gif?w=300\" data-large-file=\"https:\/\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek5.gif?w=318\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\"><\/a><\/p>\n<p>Defina as vari\u00e1veis objeto na se\u00e7\u00e3o&nbsp;<strong>General Declarations<\/strong>:<\/p>\n<p>Dim cnn As New ADODB.connection<br \/>\nDim rst As New ADODB.Recordset<\/p>\n<p>O c\u00f3digo do bot\u00e3o de comando segue abaixo:<\/p>\n<table border=\"1\" width=\"100%\" bgcolor=\"#ffffff\">\n<tbody>\n<tr>\n<td width=\"100%\"><strong>Private Sub Command1_Click()<br \/>\n<\/strong><br \/>\nIf Text1.Text = \u201c\u201d Then<br \/>\nMsgBox \u201d Informe um valor para busca \u201d<br \/>\nExit Sub<br \/>\nEnd If&nbsp;<\/p>\n<p>\u2018Abre a conex\u00e3o<br \/>\ncnn.Open \u201cProvider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\teste\\Northwind.mdb;\u201d<\/p>\n<p>\u2018Abre o Recordset<br \/>\nrst.CursorLocation = adUseServer<br \/>\nrst.Open \u201cFuncion\u00e1rios\u201d, cnn, adOpenKeyset, adLockReadOnly, adCmdTableDirect<\/p>\n<p>If rst.Supports(adIndex) And rst.Supports(adSeek) Then<br \/>\nrst.Index = \u201cC\u00f3digoDoFuncion\u00e1rio\u201d<br \/>\nrst.MoveFirst<br \/>\n<strong>rst.Seek Array(CLng(Text1.Text))<\/strong><br \/>\nIf rst.EOF Then<br \/>\nMsgBox \u201cFuncion\u00e1rio n\u00e3o localizado\u201d<br \/>\nElse<br \/>\nMsgBox rst(\u201cC\u00f3digoDoFuncion\u00e1rio\u201d) &amp; \u201d \u2013 \u201d &amp; rst(\u201cnome\u201d) &amp; vbCrLf<br \/>\nEnd If<br \/>\nElse<br \/>\nMsgBox \u201d O provedor utilizado n\u00e3o suporta : Index e Seek \u201d<br \/>\nEnd If<\/p>\n<p>\u00b4Fechamos a conex\u00e3o e o recordset<br \/>\nrst.Close<br \/>\ncnn.Close<br \/>\nSet rs = Nothing<br \/>\nSet cnn = Nothing<\/p>\n<p><strong>End Sub<br \/>\n<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Observe que antes de iniciar a busca, verificamos se o provedor suporta a utiliza\u00e7\u00e3o de&nbsp;<em>Index<\/em>&nbsp;e de&nbsp;<strong>Seek<\/strong>. Se o m\u00e9todo&nbsp;<strong>Supports<\/strong>&nbsp;\u00e9 novo para voc\u00ea, veja abaixo as constantes que voc\u00ea pode usar com ele:<\/p>\n<table border=\"0\" width=\"100%\" bgcolor=\"#ffffff\">\n<tbody>\n<tr>\n<td bgcolor=\"#ffff00\" width=\"27%\"><strong>Constante<\/strong><\/td>\n<td bgcolor=\"#ffff00\" width=\"73%\"><strong>Utiliza\u00e7\u00e3o<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"27%\"><strong>adAddNew<\/strong><\/td>\n<td width=\"73%\"><strong>Verifica se novos registros podem ser adicionados<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"27%\"><strong>adApproxPosition<\/strong><\/td>\n<td width=\"73%\"><strong>Verifica se as propriedades: AbsolutePage e AbsolutePosition est\u00e3o dispon\u00edveis<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"27%\"><strong>adBookMark<\/strong><\/td>\n<td width=\"73%\"><strong>Verifica se podemos usar um marcador no Recordset<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"27%\"><strong>adDelete<\/strong><\/td>\n<td width=\"73%\"><strong>Verifica se os registros poder\u00e3o ser exclu\u00eddos<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"27%\"><strong>AdHoldRecords<\/strong><\/td>\n<td width=\"73%\"><strong>Verifica se podemos recuperar os registros sem submeter as altera\u00e7\u00f5es<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"27%\"><strong>adResync<\/strong><\/td>\n<td width=\"73%\"><strong>Verifica se o m\u00e9todo Resynd esta dispon\u00edvel<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"27%\"><strong>adUpdate<\/strong><\/td>\n<td width=\"73%\"><strong>Verifica se o conjunto de registros permite a atualiza\u00e7\u00e3o<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"27%\"><strong>adUpdateBatch<\/strong><\/td>\n<td width=\"73%\"><strong>Verifica se o recordset permite a atualiza\u00e7\u00e3o em lote \u2013 via UpdateBatch<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p class=\"postinfo\">&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quando falamos a n\u00edvel de dados (campos e registros), estamos tratando com o objeto&nbsp;Recordset. Vamos mostrar como encontrar dados espec\u00edficos<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_layout":"default_layout","_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"ngg_post_thumbnail":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"ADO \u2013 Localizando\u00a0informa\u00e7\u00f5es","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[3508,1079],"tags":[1541,249,51,1542],"class_list":["post-3594","post","type-post","status-publish","format-standard","hentry","category-programacao","category-tecnologia","tag-ado","tag-informatica","tag-programacao","tag-visual-basic-6"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":3604,"url":"https:\/\/eliezerladeira.com.br\/blog\/banco-de-dados-introducao\/","url_meta":{"origin":3594,"position":0},"title":"Banco de Dados:\u00a0Introdu\u00e7\u00e3o","author":"admin","date":"","format":false,"excerpt":"Podemos entender por\u00a0banco de dados\u00a0qualquer sistema que re\u00fana e mantenha organizada uma s\u00e9rie de informa\u00e7\u00f5es relacionadas a um determinado assunto em uma determinada ordem.","rel":"","context":"Em &quot;Programa\u00e7\u00e3o&quot;","block_context":{"text":"Programa\u00e7\u00e3o","link":"https:\/\/eliezerladeira.com.br\/blog\/category\/tecnologia\/programacao\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3602,"url":"https:\/\/eliezerladeira.com.br\/blog\/o-poder-da-sql\/","url_meta":{"origin":3594,"position":1},"title":"O poder da\u00a0SQL","author":"admin","date":"","format":false,"excerpt":"A linguaguem SQL (Structured Query Language) \u00e9 uma linguagem de alto n\u00edvel para manipula\u00e7\u00e3o de dados dentro do modelo relacional. Seu objetivo \u00e9 fornecer uma interface de alto n\u00edvel ao usu\u00e1rio. \u00c9 uma linguagem n\u00e3o procedural e n\u00e3o cabe ao usu\u00e1rio definir como o gerenciador de banco de dados executar\u00e1\u2026","rel":"","context":"Em &quot;Programa\u00e7\u00e3o&quot;","block_context":{"text":"Programa\u00e7\u00e3o","link":"https:\/\/eliezerladeira.com.br\/blog\/category\/tecnologia\/programacao\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3164,"url":"https:\/\/eliezerladeira.com.br\/blog\/como-ler-mais-rapido-dicas-praticas-para-acelerar-sua-leitura\/","url_meta":{"origin":3594,"position":2},"title":"Como Ler Mais R\u00e1pido: Dicas Pr\u00e1ticas para Acelerar Sua Leitura","author":"admin","date":"","format":false,"excerpt":"Aprenda t\u00e9cnicas eficazes para acelerar sua leitura sem perder a compreens\u00e3o. Descubra como evitar a subvocaliza\u00e7\u00e3o, usar skimming e scanning, expandir seu campo visual e muito mais!","rel":"","context":"Em &quot;Como&quot;","block_context":{"text":"Como","link":"https:\/\/eliezerladeira.com.br\/blog\/category\/curiosidades\/como\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/eliezerladeira.com.br\/blog\/wp-content\/uploads\/2025\/02\/th.jpeg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/eliezerladeira.com.br\/blog\/wp-content\/uploads\/2025\/02\/th.jpeg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/eliezerladeira.com.br\/blog\/wp-content\/uploads\/2025\/02\/th.jpeg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/eliezerladeira.com.br\/blog\/wp-content\/uploads\/2025\/02\/th.jpeg?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1132,"url":"https:\/\/eliezerladeira.com.br\/blog\/como-fazer-um-blog-blogspot-em-5-minutos\/","url_meta":{"origin":3594,"position":3},"title":"Como Fazer um Blog Blogspot em 5 Minutos","author":"admin","date":"","format":false,"excerpt":"Neste tutorial, voc\u00ea vai ver como \u00e9 f\u00e1cil e simples fazer seu blog no Blogspot. Em poucos passos voc\u00ea se tornar\u00e1 um blogueiro. N\u00e3o se preocupe, n\u00e3o \u00e9 nem pouco complicado fazer um blog. Este tutorial se\u00a0baseia na cria\u00e7\u00e3o de um blog no site\u00a0blogspot.com, um dos sites do Google. Passo\u2026","rel":"","context":"Em &quot;Como&quot;","block_context":{"text":"Como","link":"https:\/\/eliezerladeira.com.br\/blog\/category\/curiosidades\/como\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/eliezerladeira.com.br\/blog\/wp-content\/uploads\/2017\/09\/como-criar-um-blog-blogspot.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/eliezerladeira.com.br\/blog\/wp-content\/uploads\/2017\/09\/como-criar-um-blog-blogspot.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/eliezerladeira.com.br\/blog\/wp-content\/uploads\/2017\/09\/como-criar-um-blog-blogspot.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/eliezerladeira.com.br\/blog\/wp-content\/uploads\/2017\/09\/como-criar-um-blog-blogspot.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":4109,"url":"https:\/\/eliezerladeira.com.br\/blog\/teste-sua-privacidade-no-facebook\/","url_meta":{"origin":3594,"position":4},"title":"Teste sua privacidade no\u00a0Facebook","author":"admin","date":"","format":false,"excerpt":"Depois de toda aquela confus\u00e3o sobre os problemas de privacidade no Facebook, fica a pergunta: qual a melhor forma de saber se estou protegido dentro da rede social? Claro, existem centenas de maneiras de saber isso, mas \u00e9 bem capaz que, em algum momento, voc\u00ea se perca no labirinto virtual\u2026","rel":"","context":"Em &quot;Seguran\u00e7a Digital&quot;","block_context":{"text":"Seguran\u00e7a Digital","link":"https:\/\/eliezerladeira.com.br\/blog\/category\/tecnologia\/seguranca-digital\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1866,"url":"https:\/\/eliezerladeira.com.br\/blog\/origem-de-algumas-expressoes-populares\/","url_meta":{"origin":3594,"position":5},"title":"Origem de algumas express\u00f5es populares","author":"admin","date":"","format":false,"excerpt":"Do arco-da-velha Atualmente utilizada para indicar que algo \u00e9 muito velho ou muito antigo, a express\u00e3o \u201cdo arco-da-velha\u201d originalmente indicava algo surpreendente, fant\u00e1stico. A origem da express\u00e3o \u00e9 b\u00edblica e explica que, ap\u00f3s um grande dil\u00favio, Deus sugeriu a No\u00e9 que fosse feita uma alian\u00e7a entre os homens e ele.\u2026","rel":"","context":"Em &quot;Curiosidades&quot;","block_context":{"text":"Curiosidades","link":"https:\/\/eliezerladeira.com.br\/blog\/category\/curiosidades\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/eliezerladeira.com.br\/blog\/wp-content\/uploads\/2019\/07\/img5c9c1beef3bf35.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/eliezerladeira.com.br\/blog\/wp-content\/uploads\/2019\/07\/img5c9c1beef3bf35.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/eliezerladeira.com.br\/blog\/wp-content\/uploads\/2019\/07\/img5c9c1beef3bf35.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/eliezerladeira.com.br\/blog\/wp-content\/uploads\/2019\/07\/img5c9c1beef3bf35.jpg?resize=700%2C400&ssl=1 2x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/posts\/3594","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/comments?post=3594"}],"version-history":[{"count":1,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/posts\/3594\/revisions"}],"predecessor-version":[{"id":3595,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/posts\/3594\/revisions\/3595"}],"wp:attachment":[{"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/media?parent=3594"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/categories?post=3594"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/tags?post=3594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}