Jump to content
Sign in to follow this  
DGP_Maluco

[Resolvido] Ordenar Dados Sim/Não

Recommended Posts

DGP_Maluco

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 by DGP_Maluco

Share this post


Link to post
Share on other sites
vbtipo

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

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

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 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

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

"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

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

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

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

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 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

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

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
FreiNando

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 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

Muito obrigado! Já esta a funcionar.

Perfeito :)

Edited by DGP_Maluco

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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.