MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

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?
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4650
    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?
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4650
    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!
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4650
    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: Qua 13 Dez 2017, 09:22