Jump to content

Rotina não funciona corretamente


Chamuanza

Recommended Posts

Boa tarde, agradeço desde já ajuda para perceber 

Tenho um aplicação feita por mim em VBNet com base dados Access para meu uso que funcionava bem, e por motivo que desconheço não apresenta todos os registo dentro da data inicial e data final e critérios escolhidos. 

Tentei várias alterações mas não consigo detectar o erro 

Private Sub frmDespesasActuais_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        Dim DataInicio As Date = DateTimePicker1.Value
        Dim DataFim As Date = DateTimePicker2.Value

        Dim sDataInicio = Format(DataInicio, "yyyy/MM/dd")
        Dim sDatafim = Format(DataFim, "yyyy/MM/dd")


        'Dim DataConsulta As Date = MonthCalendar1.SelectionStart
        'Dim sData = Format(DataConsulta, "yyyy/MM/dd")


        Dim ConnectionString As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\DespesasCaseiras\DespesasPessoaisFamiliares.mdb;")

        ' Dim Query As String = "SELECT Id,Data,Designacao,Despesa,Categoria,SubCategoria,Familiar FROM DadosActuais  Where Despesa > 0 AND Data BETWEEN '" & sDataInicio & "' AND '" & sDatafim & "'Order By Id"

        Dim Query As String = "SELECT Id,Data,Designacao,Despesa,Categoria,SubCategoria,Familiar FROM DadosActuais  Where Data BETWEEN  CDate('" & sDataInicio & "') AND CDate('" & sDatafim & "') Order By Id"


        'Dim command As New OleDbCommand(query, ConnectionString)
        '' Seleccionar os dados 
        'command.Parameters.Add("@Despesa", OleDbType.Decimal).Value = "0,00"

        Dim DataAdapter As New OleDbDataAdapter(Query, ConnectionString)
        Dim MyData As New DataSet
        DataAdapter.Fill(MyData, "DadosActuais")


        ' Neste caso utilizei uma datagridview para visualizar os dados
        Me.DataGridView1.DataSource = MyData.Tables("DadosActuais")
        'Me.DataGridView1.DataSource = MyData.Tables(0)


        'Conta as linhas da Grid e coloca na Label
        Label1.Text = "Este Filtro encontrou - " & Me.DataGridView1.RowCount - 1 & " Registos"

        Button2.Enabled = False

        Call ControlaGrid()

        Call SomarColunas()

        ConnectionString.Close()

        TextBox1.Text = Nothing
        TextBox2.Text = Nothing
        TextBox3.Text = Nothing
Exit Sub

Também me aparece estes avisos no VS, não sei se estão relacionados

Citação

 

Severity    Code    Description    Project    File    Line    Suppression State
Warning        Cannot get the file path for type library "00020813-0000-0000-c000-000000000046" version 1.9. Biblioteca não registada. (Exception from HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED))    DespesasCaseiras      

Severity    Code    Description    Project    File    Line    Suppression State
Warning        Cannot get the file path for type library "2df8d04c-5bfa-101b-bde5-00aa0044de52" version 2.8. Biblioteca não registada. (Exception from HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED))    DespesasCaseiras    

Severity    Code    Description    Project    File    Line    Suppression State
Warning        The referenced component 'Microsoft.Office.Core' could not be found.    DespesasCaseiras            

Severity    Code    Description    Project    File    Line    Suppression State
Warning        The referenced component 'Microsoft.Office.Interop.Excel' could not be found.    DespesasCaseiras

 

Link to comment
Share on other sites

Em 23/06/2023 às 16:11, Chamuanza disse:

Boa tarde, agradeço desde já ajuda para perceber 

Tenho um aplicação feita por mim em VBNet com base dados Access para meu uso que funcionava bem, e por motivo que desconheço não apresenta todos os registo dentro da data inicial e data final e critérios escolhidos. 

Tentei várias alterações mas não consigo detectar o erro 

Private Sub frmDespesasActuais_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        Dim DataInicio As Date = DateTimePicker1.Value
        Dim DataFim As Date = DateTimePicker2.Value

        Dim sDataInicio = Format(DataInicio, "yyyy/MM/dd")
        Dim sDatafim = Format(DataFim, "yyyy/MM/dd")


        'Dim DataConsulta As Date = MonthCalendar1.SelectionStart
        'Dim sData = Format(DataConsulta, "yyyy/MM/dd")


        Dim ConnectionString As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\DespesasCaseiras\DespesasPessoaisFamiliares.mdb;")

        ' Dim Query As String = "SELECT Id,Data,Designacao,Despesa,Categoria,SubCategoria,Familiar FROM DadosActuais  Where Despesa > 0 AND Data BETWEEN '" & sDataInicio & "' AND '" & sDatafim & "'Order By Id"

        Dim Query As String = "SELECT Id,Data,Designacao,Despesa,Categoria,SubCategoria,Familiar FROM DadosActuais  Where Data BETWEEN  CDate('" & sDataInicio & "') AND CDate('" & sDatafim & "') Order By Id"


        'Dim command As New OleDbCommand(query, ConnectionString)
        '' Seleccionar os dados 
        'command.Parameters.Add("@Despesa", OleDbType.Decimal).Value = "0,00"

        Dim DataAdapter As New OleDbDataAdapter(Query, ConnectionString)
        Dim MyData As New DataSet
        DataAdapter.Fill(MyData, "DadosActuais")


        ' Neste caso utilizei uma datagridview para visualizar os dados
        Me.DataGridView1.DataSource = MyData.Tables("DadosActuais")
        'Me.DataGridView1.DataSource = MyData.Tables(0)


        'Conta as linhas da Grid e coloca na Label
        Label1.Text = "Este Filtro encontrou - " & Me.DataGridView1.RowCount - 1 & " Registos"

        Button2.Enabled = False

        Call ControlaGrid()

        Call SomarColunas()

        ConnectionString.Close()

        TextBox1.Text = Nothing
        TextBox2.Text = Nothing
        TextBox3.Text = Nothing
Exit Sub

Também me aparece estes avisos no VS, não sei se estão relacionados

Refere que o sistema funcionava bem, agora deixou de funcionar? É que a utilização do CDate está associado às definições regionais das datas e horários que tem no seu computaor.

Verifique se não procedeu a nenhuma alteração das mesmas.

Pode ocorrer uma incompatibilidade de formatos da data que é registada no access e a data que passa via variável do vb.net.

Experimente na função sql passar a data sem ser em variável, mas em string mesmo, no mesmo formato que esteja no access.

Experimente listar o output das variáveis sDatainicio e sDataFim, e comparar esse resultado com o valor registado no access.

Quanto aos avisos deve estar a faltar esses componentes no seu projeto no vb.net, pelo que deve adicionar em Add References do vb.net.

 

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.