none
Converter em SQL Access RRS feed

  • Pergunta

  • Amigos tenho esse modulo em access, e queria converter o mesmo em instrução SQL para Usar no prórprio access em uma consulta.

    Comecei a fazer em SQL, não conseguir terminar:
    UPDATE Pendências SET Pendências.Status = IIf(DataPrevista>Now(),'Em andamento','Atrasado');

    Modulo:
    Function ChkStatus(Previsto As Date, Optional Concluso) As String
    If IsNull(Concluso) Then
    If Previsto >= Date Then
    ChkStatus = "Em andamento"
    Else
    ChkStatus = "Atrasada"
    End If
    Else
    If Previsto >= Concluso Then
    ChkStatus = "Concluído"
    Else
    ChkStatus = "Concluído com atraso"
    End If
    End If
    End Function

    Att, Estanislau Frade msn: lauedele@hotmail.com email: estanislaufrade@yahoo.com.br estanislau.frade@vale.com

    quarta-feira, 8 de fevereiro de 2012 20:51

Respostas

  • Prezados,

    consegui assim:

    UPDATE Pendências SET Pendências.Status = IIf(DATAENTREGA Is Null And DATAPREVISTA>NOW(),'Em Andamento',IIf(DATAENTREGA Is Null And DATAPREVISTA<NOW(),'Atrasado',IIf(DATAENTREGA Is Not Null And DATAPREVISTA>=DATAENTREGA,'Concluída',IIf(DATAENTREGA Is Not Null And DATAPREVISTA<DATAENTREGA,'Concluída com Atraso'))));


    Att, Estanislau Frade msn: lauedele@hotmail.com email: estanislaufrade@yahoo.com.br estanislau.frade@vale.com

    • Marcado como Resposta Estanislau Frade sexta-feira, 10 de fevereiro de 2012 01:24
    sexta-feira, 10 de fevereiro de 2012 01:24

Todas as Respostas

  • Amigos,

    tentei assim e tá dando um erro no ISNULL, erro de Sintaxe (Operador Faltando)

    UPDATE Pendências SET Pendências.Status =
    CASE(WHEN ISNULL(concluso) THEN (CASE(WHEN previsto >= now() THEN 'Em andamento' ELSE 'Atrasado'))
    ELSE (CASE(WHEN previsto >= concluso) THEN 'Concluído' ELSE 'Concluído com atraso')));


    Att, Estanislau Frade msn: lauedele@hotmail.com email: estanislaufrade@yahoo.com.br estanislau.frade@vale.com


    quarta-feira, 8 de fevereiro de 2012 22:49
  • Estanislau, boa noite

    Acho que você está confundindo as funções.

    Caso você queira substituir um valor nulo por outro valor especificado você utiliza ISNULL.

    Ex:

    DECLARE @Valor INT

    SET @Valor = NULL

    SELECT ISNULL(@Valor,0)

    O exemplo acima substitui o valor nulo por zero.

    Caso queira verificar se um valor é nulo você deve utilizar IS NULL conforme exemplo abaixo:

    DECLARE @Valor INT

    SET @Valor = NULL

    IF @Valor IS NULL

    PRINT 'O valor é nulo'

    ELSE

    PRINT 'O valor é ' + CONVERT(VARCHAR(10),@Valor)

    Espero ter ajudado,

    Até mais.


    Rafael Godoi Sabadin
    http://www.linkedin.com/in/rafaelgodoisabadin


    Classifique as respostas. O seu feedback é essencial.

    quarta-feira, 8 de fevereiro de 2012 23:31
  • Não consegui, a questão, tenho uma tabela no access e preciso fazer um update nela pelo SQL toda vez q eu acessar a mesma pelo VB2008. Montei essa consulta e ela quer rodar, pois preciso do seguinte.

     Se dataprevista > agora então "em andamento" caso contrário "Atrasada"

     Se dataprevista > dataentrega "concluida com atraso" caso contrário "Concluída"

    Não sei como fazer isso em SQL para aplicar no access.

    Até a linha abaixo deu certo, mas ficou faltando os dois ultimos status.

    UPDATE Pendências SET Pendências.Status = IIf(DataPrevista>Now(),'Em andamento','Atrasado');


    Att, Estanislau Frade msn: lauedele@hotmail.com email: estanislaufrade@yahoo.com.br estanislau.frade@vale.com

    quarta-feira, 8 de fevereiro de 2012 23:49
  • Estanislau, bom dia,

    Aqui está o código que você postou:

    UPDATE Pendências SET Pendências.Status =
    CASE(WHEN ISNULL(concluso) THEN (CASE(WHEN previsto >= now() THEN 'Em andamento' ELSE 'Atrasado'))
    ELSE (CASE(WHEN previsto >= concluso) THEN 'Concluído' ELSE 'Concluído com atraso')));

    Segue como fica no SQL:

    UPDATE    Pendencia
    SET        Status =    CASE WHEN concluso IS NULL    THEN (CASE WHEN previsto >= GETDATE() THEN 'Em andamento' ELSE 'Atrasado' END)
    ELSE (CASE WHEN previsto >= concluso THEN 'Concluído' ELSE 'Concluído com atraso' END) END

    Att,


    Rafael Godoi Sabadin
    http://www.linkedin.com/in/rafaelgodoisabadin


    Classifique as respostas. O seu feedback é essencial.

    quinta-feira, 9 de fevereiro de 2012 11:06
  • Prezados,

    consegui assim:

    UPDATE Pendências SET Pendências.Status = IIf(DATAENTREGA Is Null And DATAPREVISTA>NOW(),'Em Andamento',IIf(DATAENTREGA Is Null And DATAPREVISTA<NOW(),'Atrasado',IIf(DATAENTREGA Is Not Null And DATAPREVISTA>=DATAENTREGA,'Concluída',IIf(DATAENTREGA Is Not Null And DATAPREVISTA<DATAENTREGA,'Concluída com Atraso'))));


    Att, Estanislau Frade msn: lauedele@hotmail.com email: estanislaufrade@yahoo.com.br estanislau.frade@vale.com

    • Marcado como Resposta Estanislau Frade sexta-feira, 10 de fevereiro de 2012 01:24
    sexta-feira, 10 de fevereiro de 2012 01:24