Jump to content

Registos de tabela ACCess não aparecem em busca por data


Chamuanza
Go to solution Solved by Chamuanza,

Recommended Posts

Bom dia a todos, mais uma vez venho beber àgua ao pote (como diziam os antigos)

Tenho uma aplicação executada por mim e para minha utilização de despesas e receitas, sucede que ao fazer uma busca entre datas não aparecem varios registos que se encontram na tabela.

Sinceramente não sei o que sucedeu, mas consigo repor os registos um a um com a chamada do respectivo e salvar de novo o mesmo.

Sucede que tenho centenas de registos nesta situação, como fazer para repor pelos menos 10 ou 20 de cada vez.

Uso esta rotina para repor um de cada vez. 

Agradeço desde já uma orientação.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim Contador As Integer

        For ContaLinhas As Integer = 0 To DadosActuaisDataGridView.RowCount - 1

            For Colunas As Integer = 2 To 2

                If DadosActuaisDataGridView.Item(2, ContaLinhas).Selected = True Then

                    Contador = Contador + 1
                 
                    DadosActuaisBindingNavigatorSaveItem.PerformClick()

                End If

            Next Colunas

        Next ContaLinhas

    End Sub

 

Link to comment
Share on other sites

Em 03/07/2023 às 09:13, Chamuanza disse:

Bom dia a todos, mais uma vez venho beber àgua ao pote (como diziam os antigos)

Tenho uma aplicação executada por mim e para minha utilização de despesas e receitas, sucede que ao fazer uma busca entre datas não aparecem varios registos que se encontram na tabela.

Sinceramente não sei o que sucedeu, mas consigo repor os registos um a um com a chamada do respectivo e salvar de novo o mesmo.

Sucede que tenho centenas de registos nesta situação, como fazer para repor pelos menos 10 ou 20 de cada vez.

Uso esta rotina para repor um de cada vez. 

Agradeço desde já uma orientação.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim Contador As Integer

        For ContaLinhas As Integer = 0 To DadosActuaisDataGridView.RowCount - 1

            For Colunas As Integer = 2 To 2

                If DadosActuaisDataGridView.Item(2, ContaLinhas).Selected = True Then

                    Contador = Contador + 1
                 
                    DadosActuaisBindingNavigatorSaveItem.PerformClick()

                End If

            Next Colunas

        Next ContaLinhas

    End Sub

 

Esta sua explanação está no mínimo muito confusa.

Em 1º lugar refere que não consegue fazer busca de todos os registos que se encontram na BD, entre duas datas. Experimente o comando sql:

SELECT Nomedacoluna(s) FROM Nomedatabela WHERE Nomedacoluna BETWEEN valor1 AND valor2

Neste caso o nome da coluna do WHERE seria a data e os valores do BETWEEN  seria a primeira data e a segunda data. Agora atente ao formato da data, porque se na instrução sql passar como string e na base de dados estiver como date, é provável que não funcione, pelo que terá de fazer a conversão.

A segunda parte não percebo o que pretende, é gravar novamente o mesmo registo? Mas olhando na transversal para o código há dois pontos a considerar:

1- tem uma variável contador que não inicializa; condator=0

2- tem o contador a incrementar o valor 1 dentro do for que teoricamente lê uma só coluna. O correcto  não seria o contador estar a incrementar as linhas da tabela, se assim é, neste caso tem de colocar o contador fora do for da coluna e dentro do for da linha.

Edited by Cerzedelo
Link to comment
Share on other sites

Boa Tarde Cerzedelo, um obrigado pela atenção desde já.

Já tinha constatado que o contador não estava fazer nada nessa posição.

Cheguei a conclusão que para repor os registos tenho que os regravar de novo um a um.

Abro a aplicação, selecciono o registo pretendido na coluna 2, do form1, salta uma mensagem a perguntar se pretendo alterar, respondo "sim", a celula correspondente fica sellecionada, e regravo com o comando "DadosActuaisBindingNavigatorSaveItem.PerformClick()"

A quetão é como proceder para selecionar vários registos e gravar.

Se puderes dar umas dicas agradecia

Link to comment
Share on other sites

Em 04/07/2023 às 16:08, Chamuanza disse:

Boa Tarde Cerzedelo, um obrigado pela atenção desde já.

Já tinha constatado que o contador não estava fazer nada nessa posição.

Cheguei a conclusão que para repor os registos tenho que os regravar de novo um a um.que

Abro a aplicação, selecciono o registo pretendido na coluna 2, do form1, salta uma mensagem a perguntar se pretendo alterar, respondo "sim", a celula correspondente fica sellecionada, e regravo com o comando "DadosActuaisBindingNavigatorSaveItem.PerformClick()"

A quetão é como proceder para selecionar vários registos e gravar.

Se puderes dar umas dicas agradecia

Ainda não entendi o porquê de querer regravar os dados, os mesmos não estão presentes na tabela? Ou pretende alterar os dados que estão na tabela por novos valores?

Se pretende alterar os dados e utiliza o BidingNavigator, pode criar um evento click e dentro desse evento colocar a instrução:

TableAdapterName.Update(DataSetName.TableName)

Claro que terá de alterar os parâmetros DatasetName e TableName para os dados da sua aplicação.

Ver: https://learn.microsoft.com/en-us/dotnet/desktop/winforms/controls/load-save-and-cancel-bindingnavigator?view=netframeworkdesktop-4.8

Pode também em alternativa fazer essas alterações via programática com sql e aí pode utilizar o ciclo for como tem anteriormente para ler as linhas da tabela e depois com uma instrução Update ir alterando com os valores que pretende alterar.

Ver o video: https://www.youtube.com/watch?v=CBwVbNeF3VY

Link to comment
Share on other sites

Bem eu acho que tive um problema quando alterei o Office para uma versão mais recente, e que depois retornei para a versão que tinha,  deve ter mudado alguns parametros em relaç

ao ao Visual Studio, e que provocou esta situação.

Quanto a sua proposta (TableAdapterName.Update(DataSetName.TableName) quando faço" DadosActuaisBindingNavigatorSaveItem.PerformClick()"  vai fazer o Update como propõe.

A minha ideia era conseguir criar um array com as linhas selecionadas e proceder a regravação, será possivel e executavel?

Aproveitando a deixa de ajuda, não consigo ver a barra de eventos, quando estou no código por exemplo de qualquer objeto (button, etc) tem a ver com configuração mas nãoa certo

Obrigado pela atenção

Link to comment
Share on other sites

Em 04/07/2023 às 22:36, Chamuanza disse:

Bem eu acho que tive um problema quando alterei o Office para uma versão mais recente, e que depois retornei para a versão que tinha,  deve ter mudado alguns parametros em relaç

ao ao Visual Studio, e que provocou esta situação.

Quanto a sua proposta (TableAdapterName.Update(DataSetName.TableName) quando faço" DadosActuaisBindingNavigatorSaveItem.PerformClick()"  vai fazer o Update como propõe.

A minha ideia era conseguir criar um array com as linhas selecionadas e proceder a regravação, será possivel e executavel?

Aproveitando a deixa de ajuda, não consigo ver a barra de eventos, quando estou no código por exemplo de qualquer objeto (button, etc) tem a ver com configuração mas nãoa certo

Obrigado pela atenção

Para regravar os dados, pode fazer programaticamente com sql conforme o vídeo que lhe indiquei especifica. Com o BindingNavigator não sei se será possível fazê-lo directamente a não ser utilizar o Update.

Quando está no editor de código dum objecto não vê os eventos. Normalmente em cima tem dois dropdown list menus um como o nome do objecto e um outro com os eventos, tais como click, etc.., se pretender mudar o evento é percorrer esse dropdown list menu e escolher o evento que pretende.

Para alterar, adicionar alguma barra de ferramentas, tem de ir ao menu Ferramentas>Personalizar

Link to comment
Share on other sites

  • 9 months later...
Em 04/07/2023 às 16:08, Chamuanza disse:

Boa Tarde Cerzedelo, um obrigado pela atenção desde já.

Já tinha constatado que o contador não estava fazer nada nessa posição.

Cheguei a conclusão que para repor os registos tenho que os regravar de novo um a um.

Abro a aplicação, selecciono o registo pretendido na coluna 2, do form1, salta uma mensagem a perguntar se pretendo alterar, respondo "sim", a celula correspondente fica sellecionada, e regravo com o comando "DadosActuaisBindingNavigatorSaveItem.PerformClick()"

A quetão é como proceder para selecionar vários registos e gravar.

Se puderes dar umas dicas agradecia

FOR EACH?

Arcael

Link to comment
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
×
×
  • 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.