Criar consultas parâmetro com o Microsoft Access VBA (Visual Basic for Applications ) envolve o uso de objetos predefinidos de acesso , incluindo o QueryDef e objetos de banco de dados . A cadeia de consulta usado com esses objetos é o mesmo utilizado na criação de consultas do Access sem VBA (por exemplo , "SELECT * FROM MyTable ONDE myfield = [ user_entered_parameter ]" ) . Coisas que você precisa
Microsoft Access
Mostrar Mais instruções
um
Open Access e criar uma tabela de dados de amostra usando as seguintes linhas. Digite o texto da primeira linha como nomes de campos da tabela .
Livro, datesold , netsalefurthering palavras, 12/1/2009 , $ 5.03furthering palavras, 12/3/2009 , $ 4.97der meisterstringer , 2009/12/05 , $ 1.97der meisterstringer , 12/6/2009 , $ 0,97
2
Salve a tabela como "livros ", digite o IDE do Visual Basic ( Ambiente de Desenvolvimento Integrado ), pressionando " Alt- F11. "
3
Clique em" Inserir ", seguido por " Módulo "na barra de ferramentas do IDE, em seguida, cole o seguinte código na janela de código :
Pública Sub param_q_select () Dim db As DAO.DatabaseDim qd como DAO.QueryDefDim sqry como StringSet db = CurrentDbsqry = " SELECT * FROM livros ONDE livro como [ Digite o título do livro ]" Definir qd = DB.CreateQueryDef ( " qpSelect " , sqry ) End Sub
4
Execute a macro , colocando o cursor em qualquer lugar dentro deste sub-rotina e pressionando " F5 ".
5
Retornar para Access e fechar a navegação janela à esquerda se ele estiver aberto . Re- abrir a janela e observe a nova consulta armazenado ( " qpSelect " ) . Clique duas vezes esta consulta para executá-lo, e digite " * pele * " no prompt. Observe os resultados da consulta : somente as linhas com " aprofundar palavras " são mostrados
6
Retornar para o IDE com a tecla " Alt- F11 ", e executar a macro usando Passo 4 de instruções . . Observe o erro que aparece neste momento ( "Objeto " qpSelect 'já existe " )
7
Rever o código para evitar o erro , substituindo-o com este código: .
Pública Sub param_q_select () Dim db As DAO.DatabaseDim qd como DAO.QueryDefDim sqry como StringSet db = CurrentDbOn Error GoTo skip_deletedb.QueryDefs.Delete " qpSelect " skip_delete : sqry = " SELECT * FROM livros ONDE livro como [ Digite o título do livro ] "Definir qd = DB.CreateQueryDef ( " qpSelect " , sqry ) End Sub
8
re-executar o código usando Passo 4 de instruções . Observe que não há nenhum erro desta vez
9
Rever a macro para que o usuário do seu programa pode escolher qual campo para criar uma consulta parâmetro de: . Copiar a sub-rotina param_q_select completo e colá-lo em uma área em branco da janela de código . Renomeie esta duplicado como param_q_choose_field
10
Substitua o código do programa existente de param_q_choose_field , entre as declarações " em caso de erro ..." e " End Sub " . Digite ou cole o código em vez disso:
Dim sfsf = InputBox ( " Digite o nome do campo " ) sqry = " SELECT * FROM livros ONDE" & SF & " como [ Enter" e sf & " ]" On Error GoTo skip_deletedb.QueryDefs.Delete " qpSelect " skip_delete : Definir qd = DB.CreateQueryDef ( " qpSelect " , sqry ) Sub End
11
Re- executar a sub-rotina usando Passo 4 de instruções, e digite " netsale " quando o " Digite o nome campo" for exibido .
12
execute a consulta criado pela sub-rotina usando instruções passo 5 do . No entanto , digite " * 0 * " quando solicitado para o parâmetro netsale . Pressione "Enter" e observe que somente as linhas cujo campo " netsale " contém um "0" foram devolvidos.