DGP_Maluco 0 Report post Posted July 20, 2012 (edited) Boas pessoal, Então é o seguinte, eu tenho um relatório que tem estes campos: DATA ID NOME Curso1 Curso2 Curso3 Neste relatório, está defenido para aprensentar os dados por Data, ascendente. O que eu queria era um botão por cima de cada curso que ao clickar, modifica-se a ordem de apresentação e passaria a apresentar primeiro os que tinham se inscrito no Curso, so depois listar os que não estavam. Eu já estive a ver as opção ao clickar, que me leva a uma janela para programar em VB mas não tenho a certeza como o fazer, se alguém me puder dar uma ajuda agradecia! Cumprimentos e obrigado desde já. EDIT: Tudo feito só em MSACCESS Edited July 26, 2012 by DGP_Maluco Share this post Link to post Share on other sites
DGP_Maluco 0 Report post Posted July 23, 2012 Acho que posso fazer um UPzinho ao tópico? Cumps Share this post Link to post Share on other sites
vbtipo 0 Report post Posted July 23, 2012 tens que utilizar o sql. Lema: Se eu não saber de alguma coisa não se preocupem porque tento sempre ajudar alguma coisita, nem que seja, por palpites/sugestões. Share this post Link to post Share on other sites
DGP_Maluco 0 Report post Posted July 23, 2012 Não há código em VB que organize os dados? Ou outro tipo de consulta paralela que possa associar ao relatório? Share this post Link to post Share on other sites
FreiNando 22 Report post Posted July 23, 2012 (edited) Não há código em VB que organize os dados? Ou outro tipo de consulta paralela que possa associar ao relatório? Embora os relatórios não sejam apropriados para colocar botões, nem possuir interactividade com utilizador, é possivel fazê-lo. Também não precisa inserir um botão para ordenar por colunas, se o relatório tem labels de cabeçalho. Os labels respondem a cliques do rato através de eventos ou acontecimentos, vê nas propriedades. Escolhe o evento ao fazer clique, e no VBA insere o código: Private Sub RotuloDoCampo_Click() Me.OrderByOn = True Me.OrderBy "Campo"' ou "campo DESC" para ordem contrária End Sub Muda o Campo para o nome que pretendes e repete para quantos campos precisares. Edited July 23, 2012 by FreiNando O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles Share this post Link to post Share on other sites
DGP_Maluco 0 Report post Posted July 23, 2012 Hmm, obrigado, contudo estou a ter erros... Primeiro, ao abrir o relatório ele abre me uma caixa para digitar a informação pela qual eu quero ordenar, não sei se fiz algo mal. O código está assim, e depois dá-me erro, quando clico na label que criei Private Sub Rótulo19_Click() Me.OrderByOn = True Me.OrderBy "Ciências Informáticas" End Sub Ou seja o que pus a amarelo é o que aparece também lá, e o que esta a negrito também aparece como sendo erro.. Nota que só esta seleccionado do . até o OrderBy, estarei a fazer algo mal? O "Ciências Informáticas" será o campo errado? Obrigado desde já pela ajuda Share this post Link to post Share on other sites
FreiNando 22 Report post Posted July 23, 2012 "Ciências Informáticas" não sei se é o campo errado, mas está contra a normalização nos nomes em Access; tem caracteres especiais e tem espaços. Caso queiras continuar com esse nome para esse campo deves metê-lo dentro de parenteses rectos "[Ciências Informáticas]". Por causa disso o Access mete sempre o nome de qualquer campo dentro de parenteses rectos. Principalmente quando crias consultas ou expressôes. O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles Share this post Link to post Share on other sites
DGP_Maluco 0 Report post Posted July 24, 2012 Continua a dar o mesmo erro, será que estou a pegar no nome do campo errado? Ja tentei [Ciências Informáticas] e [Ciências Informáticas_Rótulo] Não sei o que possa ser porque como referi em cima mal tente entrar no relatório ele pede-me para introduzir um valor em Ciências Informáticas antes de apresentar alguma coisa, e depois de clicar na label Ordenar ele da os erros descritos acima... É assim se tiveres tempo eu até te posso mandar o ficheiro, é pequeno só tem umas informações básicas e já entendias melhor onde dá os erros... Se puderes e tiveres tempo manda-me PM Cumps e obrigado desde já! Share this post Link to post Share on other sites
FreiNando 22 Report post Posted July 24, 2012 Olhando novamente para aqui tens apresentado, vejo que afinal o nomes dos campos é Curso1, Curso2, Curso3 e Ciências Informáticas é a legenda de um desses campos.Toma nota que ordenação de registos é feita indicando o nome do Campo e não a Legenda do Campo. Troca "[Ciências Informáticas]" por "[Curso1]" ou outro campo. O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles Share this post Link to post Share on other sites
DGP_Maluco 0 Report post Posted July 24, 2012 Bem, eu tive que por = a seguir ao OrderBy = "[Curso1]" e já deveria de dar, só que ele ao abrir o relatório, pede-me logo um valor em Ciências Informáticas_Rótulo, Ora bem se eu clicar Ok sem por nada, ele abre o relatório, mas depois ao clicar na label que meti o código VBA, não acontece nada... Será que ele quer que ordene naquela caixa que me abre? Se sim que valor teria que por? Cumprimentos e obrigado mais uma vez Share this post Link to post Share on other sites
vbtipo 0 Report post Posted July 24, 2012 (edited) Tens isto assim Private Sub RotuloDoCampo_Click() Me.OrderByOn = True Me.OrderBy "Campo"' ou "campo DESC" para ordem contrária End Sub Experimenta assim: Private Sub RotuloDoCampo_Click() rs.close sql = "select * from tabela OrderBy Campo desc" rs.open sql End Sub Edited July 24, 2012 by vbtipo Lema: Se eu não saber de alguma coisa não se preocupem porque tento sempre ajudar alguma coisita, nem que seja, por palpites/sugestões. Share this post Link to post Share on other sites
DGP_Maluco 0 Report post Posted July 24, 2012 Hmm rs.Close Erro ai, object required? E ao abrir continua a pedir para introduzir um valor, não sei de onde isto apareceu Share this post Link to post Share on other sites
FreiNando 22 Report post Posted July 24, 2012 O melhor será fazeres upload do ficheiro sem informações confidênciais e partilhar a ligação. O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles Share this post Link to post Share on other sites
DGP_Maluco 0 Report post Posted July 25, 2012 Obrigado, aqui fica, não tem nada de pessoal https://www.dropbox.com/s/1s8olf5c2gchiz5/Inscri%C3%A7%C3%B5es.accdb Obrigado mais uma vez Share this post Link to post Share on other sites
FreiNando 22 Report post Posted July 25, 2012 (edited) 1- Nas propriedades do relatório, em Dados, apaga o valor de Ordenado por. É por causa desse texto ("Ciências Informáticas_Rótulo"), que ele te pede um valor. 2- Nos eventos dos labels Ordenar coloca o código que te indiquei. Como a propriedade Ordenar por ao carregar já está Sim , não é preciso essa linha. Private Sub Rótulo19_Click() Me.OrderBy = "[Ciências Informáticas]" End Sub Private Sub Rótulo21_Click() Me.OrderBy = "[Contabilidade e Fiscalidade]" End Sub Private Sub Rótulo22_Click() Me.OrderBy = "[Comércio]" End Sub Nota que seria muito bom escolheres nomes para os campos sem caracteres especiais nem espaços, e evitar acima de tudo o "/",":","+" e não começar o nome de um campo com um algarismo, ou irá te trazer problemas. Segue a mesma norma da criação de variáveis em VB. Edited July 25, 2012 by FreiNando O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles Share this post Link to post Share on other sites
DGP_Maluco 0 Report post Posted July 26, 2012 (edited) Muito obrigado! Já esta a funcionar. Perfeito Edited July 26, 2012 by DGP_Maluco Share this post Link to post Share on other sites