MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Atualização de Datas via SQL

    Compartilhe

    Josué Carvalho
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 38
    Registrado : 06/10/2015

    [Resolvido]Atualização de Datas via SQL

    Mensagem  Josué Carvalho em Seg 07 Mar 2016, 16:10

    Prezados,

    Tenho um banco de dados gerenciado pelo Microsoft SQL Server (sobre o qual conheço muito pouco) e utilizo uma aplicação em Access como front. Há diversos usuários geograficamente dispersos que o utilizam.
    Uma uma rotina que precisa atualizar uma tabela composta por 3 campos: Filial, Data, Numero. Esta tabela contém o número de lançamentos feitos para cada filial a cada dia.
    Havia criado uma rotina na qual as informações eram criadas e atualizadas "manualmente" pela rotina, mas isto estava apresentando infinitas situações de travamento.
    Foi então que substituí pelas instruções SQL abaixo. Contudo, agora, as datas são gravadas em formato americano e parte do processamento as le como formato europeu, causando confusão entre o que é mes e o que é dia.
    A rotina ficou assim:

    Código:
    Public Function PrxNumero(vFacility, vData) As String
    Dim vCond As String
    Dim vSQL As String
    Dim Result As Integer

    vCond = "[Facility] = '" & vFacility & "' And [Data] = #" & vData & "#"

    Forms!frm_Requisição!tbx_NumPesquisado = DLookup("UltNum", "Tab_ReqNum", vCond)

    If IsNull(Forms!frm_Requisição!tbx_NumPesquisado) Then
        vSQL = "INSERT INTO Tab_ReqNum ( Facility, Data, UltNum ) "
        vSQL = vSQL & "SELECT '" & vFacility & "' AS Expr2, #" & vData & "# AS Expr3, 1 AS Expr1;"
        DoCmd.RunSQL vSQL
        Result = 1
    Else
        Result = Forms!frm_Requisição!tbx_NumPesquisado + 1
        DoCmd.RunSQL "UPDATE Tab_ReqNum SET Tab_ReqNum.UltNum = " & Result & " WHERE (((Tab_ReqNum.Facility)='" & vFacility & "') AND ((Tab_ReqNum.Data)=#" & vData & "#));"
    End If

    PrxNumero = Right(vFacility, 5) & Format(vData, "yy") & Format(Month(vData), "00") & Format(vData, "dd") & Format(Result, "000")

    Alguma dica de como resolver isto?

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3214
    Registrado : 15/03/2013

    Re: [Resolvido]Atualização de Datas via SQL

    Mensagem  ahteixeira em Seg 07 Mar 2016, 17:35

    Olá, no Sql é mesmo isso deve usar à Americana, teste assim:

    & Format (vData, "mm/dd/yyyy")

    Retire os cardinais ( # )

    Abraço

    Josué Carvalho
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 38
    Registrado : 06/10/2015

    Re: [Resolvido]Atualização de Datas via SQL

    Mensagem  Josué Carvalho em Seg 07 Mar 2016, 19:44

    Caro ahteixeira,

    Testei sua sugestão mas indica erro de conversão de tipos. Acredito que seja pq a função format transforma seus argumentos em um resultado string...

    Sad
    O curioso (para não dizer desesperador) é que o campo vData é do tipo data. Ele grava a mesma informação em duas tabelas, por processos diferentes.
    Na tabela de dados, segue o procedimento padrão do Access e grava, por exemplo: 07/03/2016.
    Via SQL, funciona colocando o "#", mas ele grava 03/07/2016. E quando o Access volta para ler esta informação, a interpreta como 3 de Julho.

    Josué Carvalho
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 38
    Registrado : 06/10/2015

    Re: [Resolvido]Atualização de Datas via SQL

    Mensagem  Josué Carvalho em Ter 08 Mar 2016, 00:05

    Acrescentando ...

    Quando digito no formto dd/mm/aaaa e o dia é <= 12, ele inverte mês e ano. (Ex 08/03/2016 ==> armazena no SQL 2016-08-03)
    Mas se o o dia é > 12, armazena no formato digitado (Ex.: 25/03/3016 ==> armazena no sql 2016-03-25).

    Já verifiquei na estrutura da tabela e o campo data está configurado como Tipo = Date e Agrupamento = Padrão do Banco de Dados.

    Alguém tem alguma dica?

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3214
    Registrado : 15/03/2013

    Re: [Resolvido]Atualização de Datas via SQL

    Mensagem  ahteixeira em Ter 08 Mar 2016, 12:33

    Olá Josué Carvalho,
    Vamos por partes, teste conforme abaixo:

    Código:
    Public Function PrxNumero(vFacility, vData) As String
    Dim vCond As String
    Dim vSQL As String
    Dim Result As Integer

    vCond = "[Facility] = '" & vFacility & "' And [Data] = #" & Format(vData, "mm/dd/yyyy") & "#"

    Forms!frm_Requisição!tbx_NumPesquisado = DLookup("UltNum", "Tab_ReqNum", vCond)

    If IsNull(Forms!frm_Requisição!tbx_NumPesquisado) Then
        vSQL = "INSERT INTO Tab_ReqNum ( Facility, Data, UltNum ) "
        vSQL = vSQL & "SELECT '" & vFacility & "' AS Expr2, #" & Format(vData, "mm/dd/yyyy") & "# AS Expr3, 1 AS Expr1;"
        DoCmd.RunSQL vSQL
        Result = 1
    Else
        Result = Forms!frm_Requisição!tbx_NumPesquisado + 1
        DoCmd.RunSQL "UPDATE Tab_ReqNum SET Tab_ReqNum.UltNum = " & Result & " WHERE (((Tab_ReqNum.Facility)='" & vFacility & "') AND ((Tab_ReqNum.Data)=#" & Format(vData, "mm/dd/yyyy") & "#));"
    End If

    PrxNumero = Right(vFacility, 5) & Format(vData, "yy") & Format(Month(vData), "00") & Format(vData, "dd") & Format(Result, "000")

    Costumamos dizer que o Access em intruções em SQL com data é muito patriota.
    Ficamos aguardar retorno.
    Abraço

    Josué Carvalho
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 38
    Registrado : 06/10/2015

    Re: [Resolvido]Atualização de Datas via SQL

    Mensagem  Josué Carvalho em Qua 09 Mar 2016, 10:48

    Agora sim! Funcionou!

    Obrigado pelo apoio!

    Aproveito para parabenizar à equipe responsável pelo fórum, pela excelência do serviço prestado, e a todos pela atenção e parceria.

    Abraços!

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3214
    Registrado : 15/03/2013

    Re: [Resolvido]Atualização de Datas via SQL

    Mensagem  ahteixeira em Qua 09 Mar 2016, 10:56

    Olá Josué Carvalho,
    Obrigado pelo retorno, os utilizadores do fórum agradecem.

    Esta é a razão do fórum, uma inter-ajuda e partilha do conhecimento.
    Com o MaximoAccess é sempre aprender. Wink

    Abraço

      Data/hora atual: Qui 08 Dez 2016, 14:07