Logo Hardware.com.br
CaSt
CaSt Super Participante Registrado
573 Mensagens 5 Curtidas

Objeto Data e DAO (VB)

#1 Por CaSt 30/04/2005 - 13:54
Olá para todos.

É o seguinte, eu estou desenvolvendo um sistema em VB de Gestão de Escolas, que deverá ser apresentado em minha escola como projeto final, de conclusão de curso.
Meu grupo já havia começado a desenvolver, utilizando do objeto Data para fazer a interligação com o Banco de Dados em Access, que facilita bastante a vida. Acontece que minha professora disse, só após uma boa parte já ter sido desenvolvida, que seria melhor se nós desenvolvessemos em DAO, que dá mais liberdade de programação apesar de ser mais complicado. Só que se fossemos transferir tudo o que já foi feito para DAO, perderiamos muito tempo, e nem sei se conseguiriamos entregar o projeto na data prevista.
Durante o desenvolvimento, percebemos que haveria necessidade de fazer um tipo de consulta, que só é possível através de DAO, onde após cadastrar vários alunos, digitar em uma caixa de texto, as iniciais do nome, e apareceria abaixo todos os nome que possuem aquela letra.

Exemplo:

Após ter cadastrado os aluno, eu digito a letra "D" em uma caixa de texto. E aí em um ListBox logo abaixo, deveriam aparecer, todos os alunos cadastrados que tem "D" como a primeira letra de seu nome.

Para fazer isso eu fiz o seguinte:

General_Declarations
Public d As Database
Public r As Recordset

Private Sub Text1_Change()
Dim busca As String
Dim total As Integer, i As Integer


busca = "select*from cadalunos where nome like '" & Text1.Text & "*' order by nome"
List1.Clear
Set r = d.OpenRecordset(busca, dbOpenDynaset)
total = r.RecordCount
Do
If r.AbsolutePosition > -1 Then
List1.AddItem r("nome&quot
i = i + 1
r.MoveNext
End If
Loop Until i >= total
If Text4.Text = "" Then
List1.Clear
End If
End Sub


Porém, quando digito uma letra no text1 para fazer a consulta, dá o seguinte erro:

"Run time error "91":
Objetct variable or with block variable not set"

E quando eu coloco para "debugar", esta linha fica em amarelo:

Set r = d.OpenRecordset(busca, dbOpenDynaset)

Mas eu já utilizei esse mesmo código para fazer um outro programa que utiliza somente DAO, e funcionou corretamente...

-----------------

Espero não ter sido tão confuso quanto eu acho que fui smile.png.

Obrigado.



[/code]
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal