Ir para conteúdo
Fórum Script Brasil

Friedrich Nietzsche

Membros
  • Total de itens

    13
  • Registro em

  • Última visita

Posts postados por Friedrich Nietzsche

  1. Olá, amigos!

    Elaborei um programa simples de cadastro de fichas com fotos (image pointer), contudo, ao copiá-lo para outro computador, o erro "3706 - ado could not find specified provider" persiste. Já tentei atualizar o MDAC para a ver. 2.8, mas não houve resultado.

    O programa foi elaborado em ambiente WIN XP SP2, e utiliza Microsoft Jet 3.51.

    O ambiente em que o programa está apresentando o erro é WIN 98 e também em outra máquina com WIN XP SP2.

    Alguma dica???

    Obrigado.

  2. Confesso que estou empolgado agora que o programa está funcionando 100% como é suposto (com sua ajuda, claro)! :D

    Ele começará a ser utilizado a partir de amanhã, e eu sei que, com o passar do tempo, alguns bugs podem aparecer.

    Agora, de fato, tenho que relembrar o que um dia aprendi e também aprender coisas novas.

    O que acha destes livros? Conhece?

    (Desculpe fugir do tópico)

    Este é para VB 2005...

    Microsoft Visual Basic 2005 - Passo a Passo

    Michael Halvorson

    BOOKMAN COMPANHIA EDITORA

    ISBN: 8536307196

    VB6...

    VISUAL BASIC 6 - APRENDA EM 21 DIAS

    PERRY,GREG

    EDITORA CAMPUS

    ISBN: 853520394X

    Abraços!

  3. Ok!!! Problema parcialmente resolvido! :D

    Ainda não encontro o caminho para me referir ao registro no outro form.

    Estou fazendo algo assim:

    Private Sub Command2_Click()
    Dim criterio As String
        
        If lstmostra.SelectedItem Is Nothing Then
            MsgBox "Não há uma ficha selecionada.", vbOKOnly, "Visualizar"
    
        Else
            
      criterio = "rs!ID = 'lstmostra.SelectedItem.Tag'"
      rs.Find criterio, 0, adSearchForward
        frmMain.Show
        frmMain.Enabled = True
        Unload Me
        
        End If
    
    End Sub
    

    O frmMain é carregado, contudo não mostra o registro que havia sido selecionado na listview.

    Já estou quase desistindo... :( e é a única coisa que falta para finalizar o programa...

    Alguma última dica?

  4. Ok... A identificação única de cada registro é o campo ID, em que é gerado automaticamente um número para cada registro adicionado.

    O Index da minha tabela ImageLibrary é o campo Nome, e esse index é chamado de SecunadryKey.

    No ListView eu adicionei a coluna ID, que lista a identificação única de cada registro, e achei a propriedade TAG à qual você fez menção, contudo, mesmo depois de eu ter pesquisado em várias fontes, não sei como "guardar" essa identificação ou, ao menos, criar o código que retorne ao frmMain e exiba o registro selecionado pelo ID na ListView. ;)

    Poderia me ajudar com algumas informações mais específicas?

    Obrigado mais uma vez!

    Ps.: Esse é o novo código do meu form de pesquisa, o Form1:

    Private Conn As ADODB.Connection
    Private rs As ADODB.Recordset
    Private Lista As ListItem
    
    Private Sub botpesquisar_Click()
    
    If Text1.Text = "" Then
    MsgBox "Digite o conteúdo da pesquisa.", vbOKOnly, "Conteúdo da pesquisa em branco..."
    Text1.SetFocus
    Else
    preenche_lista
    Label2.Caption = lstmostra.ListItems.Count
    If Label2.Caption = "0" Then
    MsgBox "Nenhuma ficha foi encontrada com o conteúdo informado.", vbOKOnly, "Resultado da Pesquisa"
    End If
    Text1.SetFocus
    End If
    
    End Sub
    
    Private Sub Command1_Click()
    Unload Me
    frmMain.Show
    frmMain.Enabled = True
    End Sub
    
    Private Sub Command2_Click()
    
            
    End Sub
    
    Private Sub Form_Load()
            
    frmMain.Enabled = False
        
        Set Conn = New ADODB.Connection
        Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;" & _
          "Data Source=" & App.Path & "\ImageLib.mdb"
        Conn.Open
            
        Set rs = New ADODB.Recordset
        rs.Open "ImageLibrary", Conn, adOpenKeyset, adLockPessimistic, adCmdTable
        
            
    End Sub
    
    Private Sub preenche_lista()
    
    Dim col As ColumnHeader
    
    If Option1.Value = True Then
    
    lstmostra.ColumnHeaders.Item(2).Text = ""
    
    On Error Resume Next
    rs.Close
    On erro GoTo trataerro
     rs.Open "SELECT * FROM ImageLibrary WHERE Nome LIKE '%" & Text1.Text & "%' ORDER BY Nome", Conn
    
    lstmostra.ListItems.Clear
    Do While Not rs.EOF
       Set Lista = lstmostra.ListItems.Add(, , rs!nome)
       Lista.SubItems(2) = rs!ID
       rs.MoveNext
    Loop
    
    Exit Sub
    
    End If
    
    If Option2.Value = True Then
    
    lstmostra.ColumnHeaders.Item(2).Text = "Vulgo"
    
    On Error Resume Next
    rs.Close
    On erro GoTo trataerro
     rs.Open "SELECT * FROM ImageLibrary WHERE Vulgo LIKE '%" & Text1.Text & "%' ORDER BY Nome", Conn
    
    lstmostra.ListItems.Clear
    Do While Not rs.EOF
       Set Lista = lstmostra.ListItems.Add(, , rs!nome)
       Lista.SubItems(1) = rs!Vulgo
       Lista.SubItems(2) = rs!ID
       rs.MoveNext
    Loop
    
    Exit Sub
    
    End If
    
    If Option3.Value = True Then
    
    lstmostra.ColumnHeaders.Item(2).Text = "Tatuagens"
    
    On Error Resume Next
    rs.Close
    On erro GoTo trataerro
     rs.Open "SELECT * FROM ImageLibrary WHERE Tatuagens LIKE '%" & Text1.Text & "%' ORDER BY Nome", Conn
    
    lstmostra.ListItems.Clear
    Do While Not rs.EOF
       Set Lista = lstmostra.ListItems.Add(, , rs!nome)
       Lista.SubItems(1) = rs!Tatuagens
       Lista.SubItems(2) = rs!ID
       rs.MoveNext
    Loop
    
    Exit Sub
    
    End If
    
    
    If Option4.Value = True Then
    
    lstmostra.ColumnHeaders.Item(2).Text = "Endereço"
    
    On Error Resume Next
    rs.Close
    On erro GoTo trataerro
     rs.Open "SELECT * FROM ImageLibrary WHERE Endereco LIKE '%" & Text1.Text & "%' ORDER BY Nome", Conn
    
    lstmostra.ListItems.Clear
    Do While Not rs.EOF
       Set Lista = lstmostra.ListItems.Add(, , rs!nome)
       Lista.SubItems(1) = rs!endereco
       Lista.SubItems(2) = rs!ID
       rs.MoveNext
    Loop
    
    Exit Sub
    
    End If
    
    trataerro:
       MsgBox Err.Description, vbCritical, "Erro no sistema", , "Erro n.º 098547."
    
    
    
    End Sub
    
    Private Sub Form_Unload(Cancel As Integer)
      Set Lista = Nothing
      Set rs = Nothing
      Set Conn = Nothing
    End Sub

    O Botão de finalizar a pesquisa e retornar ao frmMain já com a exibição do registro selecionado pelo ID é o command2, o qual está em branco. :(

  5. Sabia que estava esquecendo algo...

    O sistema de busca exibe perfeitamente o conteúdo pesquisado, inclusive efetua a contagem de registros, e agora é necessário o seguinte: que quando selecionado um item no listview, após acionar o botão botpesquisar, o programa retorne ao frmMain exibindo o registro selecionado previamente (no listview).

    O sistema de busca pode procurar um registro com o termo informado em Text1.text por Nome, Vulgo, Tatuagens e Endereço. Na listview, a primeira coluna é sempre ordenada pelo nome, e a segunda coluna pelos outros critérios.

    Ex.: Quero procurar um registro em que a pessoa possua uma tatuagem tribal. Eu digito "tribal" e a pesquisa me retorna a listview que exibe, na primeira coluna, o nome da pessa, e na segunda coluna, a tatuagem que eu solicitei:

    __________________________________

    |João da Silva | Tribal no braço esquerdo|

    |___________ |_____________________|

    Agora, após eu selecionar este registro, preciso retornar ao frmMain e visualizar a ficha de "João da Silva", mas desconheço o comando apropriado.

    O index da tabela ImageLibrary é = SecundaryKey.

    Este é o código do from da busca (Form1):

    Private Conn As ADODB.Connection
    Private rs As ADODB.Recordset
    Private Lista As ListItem
    
    Private Sub botpesquisar_Click()
    
    preenche_lista
    Label2.Caption = lstmostra.ListItems.Count
    If Label2.Caption = "0" Then
    MsgBox "Nenhuma ficha foi encontrada com o critério selecionado.", vbOKOnly, "Resultado da Pesquisa"
    End If
    Text1.SetFocus
    
    End Sub
    
    Private Sub Command1_Click()
    Unload Me
    frmMain.Show
    frmMain.Enabled = True
    End Sub
    
    Private Sub Form_Load()
    
    frmMain.Enabled = False
        
        Set Conn = New ADODB.Connection
        Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;" & _
          "Data Source=" & App.Path & "\ImageLib.mdb"
        Conn.Open
            
        Set rs = New ADODB.Recordset
        rs.Open "ImageLibrary", Conn, adOpenKeyset, adLockPessimistic, adCmdTable
        
            
    End Sub
    
    Private Sub preenche_lista()
    
    
    If Option1.Value = True Then
    
    On Error Resume Next
    rs.Close
    On erro GoTo trataerro
     rs.Open "SELECT * FROM ImageLibrary WHERE Nome LIKE '%" & Text1.Text & "%' ORDER BY Nome", Conn
    
    lstmostra.ListItems.Clear
    Do While Not rs.EOF
       Set Lista = lstmostra.ListItems.Add(, , rs!nome)
       rs.MoveNext
    Loop
    
    Exit Sub
    
    End If
    
    If Option2.Value = True Then
    
    On Error Resume Next
    rs.Close
    On erro GoTo trataerro
     rs.Open "SELECT * FROM ImageLibrary WHERE Vulgo LIKE '%" & Text1.Text & "%' ORDER BY Nome", Conn
    
    lstmostra.ListItems.Clear
    Do While Not rs.EOF
       Set Lista = lstmostra.ListItems.Add(, , rs!nome)
       Lista.SubItems(1) = rs!Vulgo
       rs.MoveNext
    Loop
    
    Exit Sub
    
    End If
    
    If Option3.Value = True Then
    
    On Error Resume Next
    rs.Close
    On erro GoTo trataerro
     rs.Open "SELECT * FROM ImageLibrary WHERE Tatuagens LIKE '%" & Text1.Text & "%' ORDER BY Nome", Conn
    
    lstmostra.ListItems.Clear
    Do While Not rs.EOF
       Set Lista = lstmostra.ListItems.Add(, , rs!nome)
       Lista.SubItems(1) = rs!Tatuagens
       rs.MoveNext
    Loop
    
    Exit Sub
    
    End If
    
    
    If Option4.Value = True Then
    
    On Error Resume Next
    rs.Close
    On erro GoTo trataerro
     rs.Open "SELECT * FROM ImageLibrary WHERE Endereco LIKE '%" & Text1.Text & "%' ORDER BY Nome", Conn
    
    lstmostra.ListItems.Clear
    Do While Not rs.EOF
       Set Lista = lstmostra.ListItems.Add(, , rs!nome)
       Lista.SubItems(1) = rs!endereco
       rs.MoveNext
    Loop
    
    Exit Sub
    
    End If
    
    trataerro:
       MsgBox Err.Description, vbCritical, "Erro no sistema"
    
    
    
    End Sub
    
    Private Sub Form_Unload(Cancel As Integer)
      Set Lista = Nothing
      Set rs = Nothing
      Set Conn = Nothing
    End Sub

    Alguma sugestão?

    Obrigado! :)

  6. Primeiramente, nesta linha:

    quantidade = Conn.Execute("SELECT Count(*) AS Quantidade FROM ImageLibrary WHERE Nome LIKE '%" & Text1.Text & "%'").Fields("Quantidade").Value
    Se desabilitar esta linha com um ' , o mesmo erro segue para a outra linha:
    Set rsBusca = Conn.Execute("SELECT * FROM ImageLibrary WHERE nome LIKE '%" & Text1.Text & "%'")
    Ps.: Consegui fazer a pesquisa funcionar mudando a abordagem; utilizei o ListView, contudo ainda não consegui fazer a contagem dos registros encontrados na ListView... e há outro problema que não consigo solucionar:
    On Error Resume Next
    rs.Close
    On erro GoTo trataerro
     rs.Open "SELECT * FROM ImageLibrary WHERE Nome LIKE '%" & Text1.Text & "%' ORDER BY Nome", Conn
    
    lstmostra.ListItems.Clear
    Do While Not rs.EOF
       Set Lista = lstmostra.ListItems.Add(, , rs!Nome)
       Lista.SubItems(1) = rs!Vulgo
       rs.MoveNext
    Loop
    
    Exit Sub

    Como mostrado no código, além do Nome, deveria aparecer o Vulgo no ListView, mas só aparece o Nome.

    Fico me perguntando o que estou esquecendo ou o que estou fazendo de errado...

    Como opinião, devo insistir na abordagem do ListView ou retornar ao código anterior?

    Muito obrigado!

  7. Já consegui passar o código e definir a rsBusca, mas está surgindo um outro BUG nestas duas linhas de comando:

    quantidade = Conn.Execute("SELECT Count(*) AS Quantidade FROM ImageLibrary WHERE Nome LIKE '%" & Text1.Text & "%'").Fields("Quantidade").Value
    
    Set rsBusca = Conn.Execute("SELECT * FROM ImageLibrary WHERE nome LIKE '%" & Text1.Text & "%'")

    O erro é(em tempo de execução): '91' Object variable or WITH block variable not set.

    Não há Option Explicit no form ou em módulo, e já tentei declarar algumas variáveis para ver se funcionava, como por exemplo, seguindo o código já mencionado no outro post, a declaração de strText1, com strText1 = Trim$(Text1.Text) para ver se eram os espaços que causavam o erro, mas não sei se estou no caminho certo.

    Alguma orientação sobre esse erro??

    Obrigado pela paciência!

  8. Muito obrigado pela ajuda, Graymalkin!

    Está ocorrendo um erro Variable not defined em rsbusca na "adaptação" que eu fiz. Poderia ver o código e fornecer mais algumas dicas?

    Muito obrigado! :D

    Dim quantidade As String
    
    quantidade = Conn.Execute("SELECT Count(*) AS Quantidade FROM ImageLibrary WHERE Nome LIKE '%" & Text1.Text & "%'").Fields("Quantidade").Value
    
    Set rsbusca = Conn.Execute("SELECT * FROM ImageLibrary WHERE nome LIKE '%" & Text1.Text & "%'")
    
    Set DataGrid1.DataSource = rsbusca
    
    Label1.Caption = quantidade
    

  9. Ola a todos!

    Gostaria muito que alguém pudesse me ajudar, pois tenho que entregar este programa na próxima terça-feira.

    Sou policial civil, me formei em um curso de VB em 1997 (porém esqueci de muita coisa), e estou terminando um programa de cadastro fotográfico de criminosos (Fichas Fotográficas). No banco de dados há as opções como Nome, Pai, Mãe, RG, Data de Nascimento, Foto, etc... um banquinho de dados completo. Ele já está todo programado e funcionando muito bem, mas estou desesperado, pois preciso elaborar um botão de "Pesquisa de Fichas", e não vejo meio de fazê-lo funcionar direito. Foram tantos erros diferentes em inúmeras tentativas diferentes de se utilizar diferentes métodos... que não há como eu postá-los.

    A ajuda que peço é a seguinte: a criação de um botão que, quando faz a leitura de um critério digitado em um Text1.text (por exemplo), faria uma pesquisa. Ex.: Eu preciso saber quantas fichas (REGISTROS) existem com o nome "João", ou que contenham um termo ou uma seqüência de caracteres, como exemplo, parte do sobrenome, ex. "Silva", ou "Joa", ou "Jo", e visualizá-las uma após a outra após serem encontradas.

    Eis os dados que estou utilizando:

    frmMain : é o form principal em que os campos (fields) da tabela são apresentados, adicionados e editados

    ImageLib : é o banco de dados

    ImageLibrary : é o nome da Tabela

    Nome : é o campo na tabela que contem a chave de index (nome do index = SecundaryKey)

    Private Conn As Adodb.Connection

    Private rs As Adodb.Recordset

    Todo o procedimento de pesquisa está em um segundo Form (Form1). Após a informação de quantos registros existem com o filtro do critério digitado, é desejado visualisá-los em uma outra form (Form2).

    Agradeço desde já a ajuda de vocês, pois esse fórum tem me ajudado muito com as informações nele postadas e dúvidas também nele esclarecidas.

    Abraço a todos!

×
×
  • Criar Novo...