Jump to content
Sign in to follow this  
s e 7 e n

[VB6] Pesquisas na Base Dados

Recommended Posts

s e 7 e n

Boas

Tou aqui a fazer um programa que la ligado a uma Base Dados.

O VB ja consegue ir buscar os dados a BD, mas tive um problema.

Sei que se deve usar o ADODC mas tava a dar erros, agora estou a usar o DATA e ja trabalha bem.

Agora o problema é fazer pesquisas na BD...

Andei a ver na net e vi um codigo com isso, mas não consigo por a trabalhar  :D

Encontrei este codigo:

Private Sub cmdPesquisar_Click()
Dim str As String

str = InputBox("Que cidade deseja Procurar?")

BaseDados.Recordset.Find  &str

If BaseDados.Recordset.EOF Then
BaseDados.Recordset.MoveFirst
MsgBox " Nao foi encontrado nenhuma cidade"
End If

End Sub

Mas continuo a não consegui fazer a pesquisa.

Que dizem???

Share this post


Link to post
Share on other sites
David Pintassilgo

Boas, não será o mesmo problema que eu tinha ontem? estás a introduzir o nome MESMO igual ao que está na BD?

Alem disso, eu como desconhecia o comando find fiz de outra forma.

Private Sub Command1_Click()
    Adodc1.Recordset.MoveFirst
    Do Until Adodc1.Recordset.EOF = True
        If LCase$(Text_designacao) Like "*" & LCase$(Text1) & "*" Then
            GoTo sair
        End If
        Adodc1.Recordset.MoveNext
    Loop
sair:
End Sub

Onde text_designacao é um textbox que está no form (no meu caso visivel, mas pode-se meter invisivel) e text1 é outra textbox que está no form não fix input box, mas vai dar ao mesmo.


cool stuffs to check.

http://blog.zxcoders.com//

Share this post


Link to post
Share on other sites
s e 7 e n

Pois. Agora durante o almoço, tive a pensar nisso. :D

Ainda me sentei num banco ao sol a pensar como fazer e lembrei-me duma coisa mais ou menos desse genero :)

Isso tambem serve e se não conseguir fazer da forma que eu queria fica assim.

Mas eu tava a pensar em o VB ir a BD ver procurar, em vez de correr no programa todos os registos.

EDIT:

d_pintassilgo tu a usares o ADODC ao especiicares o caminho da BD como é que metes???

Eu tenho que escrever tudo, assim: "

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\se7en\Ambiente de trabalho\[Project][VB6] DVD Collector\BDA\movies.mdb;Persist Security Info=False

Enquanto com o DATA, basta por assim:

.\BDA\movies.mdb

Share this post


Link to post
Share on other sites
David Pintassilgo

Eu no DATA já não uso. Agora e só adodc. Aquilo é automatico, mas vou lá ver o código...

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\David Pintassilgo\Desktop\Projecto HISC\bd1.mdb;Persist Security Info=False

Axo que está igual ao teu.


cool stuffs to check.

http://blog.zxcoders.com//

Share this post


Link to post
Share on other sites
s e 7 e n

Pois, mas por exemplo se eu levar o Projecto para outro PC não deve de dar para aceder a BD.

Porque esta escrito que o caminho é este:

-> C:\Documents and Settings\se7en\Ambiente de trabalho

E se levasse ao teu PC ja era:

->C:\Documents and Settings\David Pintassilgo\Desktop

e assim o VB ja não conseguia aceder a BD, enquanto que com o BATA ao permitir so  .\BDA\movies.mdb  ja dá. :D

Share this post


Link to post
Share on other sites
s e 7 e n

Novo problemas :?

Os registos tem um numero, quando apago um registo que esteja no meio fica la um lugar vazio.

Do genero, tenho [1] [2] [3] [4] [5] se apagar o [3] fico com [1] [2] [4] [5]

Fz um codigo assim:

Private Sub cmdEliminar_Click()
Dim IDFILME As Integer

    BaseDados.Recordset.Delete
    BaseDados.Recordset.MovePrevious
    BaseDados.Recordset.Edit
    IDFILME = txtIDFilme.Text
    
    Do Until BaseDados.Recordset.EOF = True
        IDFILME = IDFILME + 1
        BaseDados.Recordset.MoveNext
        txtIDFilme.Text = IDFILME
    Loop
    
    BaseDados.Recordset.Update
    BaseDados.Recordset.MoveFirst

End Sub

Mas da-me erro no "BaseDados.Recordset.MoveNext" que esta dentro do Do Until ... Loop

O erro é:

Run-Time Error '3426'
Esta acção foi cancelada por um objecto associado.

Alguem sabe o que podera ser???

Share this post


Link to post
Share on other sites
s e 7 e n

Fico com [1][2][4][5]

Se abrir a BD no Access ta la: [1][2][4][5] e a linha do [3] desapareceu, foi apagada.

Share this post


Link to post
Share on other sites
David Pintassilgo

Então! se desaparece mesmo tá fixe! Não tens problema nenhum. Se fazes mesmo questão de "ocupar" todos os numeros, podes sempre fazer uma coisa:

Deixas tar assim com está ao eliminar

Ao introduzir, vai ter en atençao de usar nº que faltem, (tipo, uma pesquiza 1º pra ver se há algum espaco vazio)

Ordenar.

É capaz de haver alguma maneira mais simples de fazer isso, nao sei. É a unica forma que me vem á cabeça agora.


cool stuffs to check.

http://blog.zxcoders.com//

Share this post


Link to post
Share on other sites
s e 7 e n

Ja trabalha :D

1º tinha a BD no Access a fazer no ID numeração Automatica, tirei isso e fiz umas alteraçoes no codigo.

Private Sub cmdEliminar_Click()
Dim IDFILME As Integer

    IDFILME = txtIDFilme.Text
    BaseDados.Recordset.Delete
    
    If BaseDados.Recordset.RecordCount = (IDFILME - 1) Then
        BaseDados.Recordset.MoveFirst
        Exit Sub
    Else
        BaseDados.Recordset.MoveNext
        BaseDados.Recordset.Edit
        Do While BaseDados.Recordset.EOF = False
            txtIDFilme.Text = IDFILME
            BaseDados.Recordset.MoveNext
            IDFILME = IDFILME + 1
        Loop
    
        BaseDados.Recordset.MoveFirst
        
    End If

Se reparares alterei a condição di IF porque me esta a chatear, mas vou tentar voltar para o AEF :)

Mas assim ja quando Elimino por exemplo o [3] ele altera o [4] [5] para [3] [4].

Share this post


Link to post
Share on other sites
Tiago Salgado

Pois, mas por exemplo se eu levar o Projecto para outro PC não deve de dar para aceder a BD.

Porque esta escrito que o caminho é este:

-> C:\Documents and Settings\se7en\Ambiente de trabalho

E se levasse ao teu PC ja era:

->C:\Documents and Settings\David Pintassilgo\Desktop

e assim o VB ja não conseguia aceder a BD, enquanto que com o BATA ao permitir so  .\BDA\movies.mdb  ja dá. ;)

Exactamente como disseste, não iria dar noutro PC devido ao caminho que está definido para carregar a BD, mas poderás dar a volta a isso usando o App.Path

Exemplo:

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\bd1.mdb;Persist Security Info=False"

Cumps

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.