[RESOLVIDO] após atualizar retirar de campo data o mês e inserir em campo na tbl

Bom dia! tenho um formulário que ao ser preenchido carrega a data de atualização (21/06/2017), gostaria que ao atualizar fosse atualizado um campo na tabela com o mês (ex: Junho) da data de atualização

Olá,

Podes nos dar maiores informações? Tipo, Qual banco de dados? Qual o tipo de campo no banco de dados?

Olá, obrigado pela ajuda! banco sql server e campo tido datetime

Bem, como eu não sei qual o formato no SC você definiu esse campo, eu faria assim:

  • No evento OnAfterInsert daria um ECHO no teu campo de data, pra ver como o PHP está mostrando.
  • Após isto, usaria o SUBSTR do PHP para pegar a parte do mês e faria o UPDATE no campo que precisas.

obrigado pela ajuda!
o campo está definido como Data Hora

sc_lookup (dataset, “select dta_atualizacao from Cad_Lancamento”);
$mes_atual = {dataset[0][0]};

echo “ATUALIZADO EM …”. $mes_atual;
wait();

ECHO = 2017-06-12 16:01:13.000

e agora? qual seria a configuração para a substr?

{teucampomes} = substr($mes_atual,5,2);

Referência: http://php.net/manual/pt_BR/function.substr.php

no evento OnAfterInsert

sc_lookup (dataset, “select dta_atualizacao from Cad_Lancamento”);
$mes_atual = {dataset[0][0]};

[glo_mes] = substr ($mes_atual, 5,2);

acho que é isso!

Exatamente!!! Deu certo?

Uma outra dica: sempre coloque a query em uma variável e daí coloque a variável dentro do sc_lookup, assim:

$cSql = “select dta_atualizacao from Cad_Lancamento”;
sc_lookup(dataset, $cSql);
$mes_atual = (dataset[0][0]);

[glo_mes] = substr($mes_atual,5,2);

valeu pela dica! até ai tudo bem

agora não sei como fazer o insert na tabela, pode ajudar nisso tbm?

Vai ser INSERT em outra tabela ou UPDATE na mesma?

na mesma tabela, onde vou utilizar esse campo para filtro

$cSql = “select dta_atualizacao from Cad_Lancamento”;
sc_lookup(dataset, $cSql);
$mes_atual = (dataset[0][0]);

[glo_mes] = substr($mes_atual,5,2);

$cUpdate = “UPDATE tabela SET mes = '”.[glo_mes]."’ WHERE id = ".{id}; // Isto supondo que o ID é a PK da tabela
sc_exec_sql($cUpdate);
sc_commit_trans();

Referência: https://suporte.scriptcase.com.br/index.php?/Knowledgebase/Article/View/588/44/utilizando-as-macros-sc_lookup-e-sc_exec_sql

Com a função date vc consegue extrair somente o mês de uma data:

[glo_mes] = date(‘m’, strtotime({dataset[0][0]}));

Boa lembrança, Flávia.

obrigado pela dica! toda contribuição é bem vinda
estou testando! retorno daqui a pouco

$cSql = “select dta_atualizacao from Cad_Lancamentos”;
sc_lookup(dataset, $cSql);
$mes_atual = (dataset[0][0]);

[glo_mes] = substr($mes_atual,5,2);

$cUpdate = “UPDATE Cad_Lancamentos SET mes_lancamento = '”.[glo_mes]."’ WHERE id_lancamento = “.{id_lancamento}.”;
sc_exec_sql($cUpdate);
sc_commit_trans();

poderia por gentileza explicar o porque dos parenteses [glo_mes] e chaves {id_lancamento} no comando update?
apresentou o erro, acho que me enrolei nas aspas
Parse error: syntax error, unexpected ‘[’ in C:\Program Files (x86)\NetMake\v8\wwwroot\scriptcase\app\FGFIN\form_contas_pagar\form_contas_pagar_apl.php on line 4026

Giba, corrige aqui:
//errado
$mes_atual = (dataset[0][0]);
//certo
$mes_atual = {dataset[0][0]};

Isto aqui está errado também:

$cUpdate = “UPDATE Cad_Lancamentos SET mes_lancamento = '”.[glo_mes]."’ WHERE id_lancamento = “.{id_lancamento}.”;

o certo é:

$cUpdate = “UPDATE Cad_Lancamentos SET mes_lancamento = '”.[glo_mes]."’ WHERE id_lancamento = ".{id_lancamento}; // Sem as aspas no final

Quanto a diferença de [] e {} é que [] é usado nas variáveis globais no SC. Já as {} são usadas quando são campos da aplicação. Veja em: http://www.scriptcase.com.br/docs/pt_br/v81/apendice/variaveis-no-scriptcase

1 Curtida

Puxa vida, não tinha me dado conta desse também rsrsrs…valeu

Vou testar!