RESOLVIDO: Dificuldade na Concatenação de Dados

Prezados,

Sou novo no Scriptcase e estou com uma dificuldade…

No evento OnBeforeInsert eu preciso concatenar dados no sistema seguindo o padrão: 20140100001.
Preciso concatenar o ano atual: 2014
O ID de uma tabela do banco: 01
E um número sequencial: 00001

Tentei concatená-los dentro de um sc_lookup usando o sc_concat, mas não consegui…

Estou tentado há 4 dias resolver isso, sem sucesso, e o meu prazo de avaliação está expirando.

Caso possam me ajudar eu agradeço.

Supondo que você tenha os 4 campos:

{Ano}
{Id}
{Sequencial}

{NewId} <- campo da tabela principal do formulário.

evento onbeforeinsert:

{NewId}={Ano}.str_pad({Id}, 2, “0”, STR_PAD_LEFT).str_pad({Sequencial}, 5, “0”, STR_PAD_LEFT);

Olá Haroldo,

Muito obrigado, a dica foi perfeita! :slight_smile:
O código ficou assim:

sc_lookup(id,“SELECT id FROM membros ORDER BY id DESC”);

if(empty({id[0][0]}))
{
	{id} = 1;
}
else
{
	$seq = {id[0][0]} + 1;
}

sc_lookup(local,“SELECT id FROM local”);
$loc = {local[0][0]};

sc_lookup(anoatual,“SELECT YEAR(NOW())”);
$ano = {anoatual[0][0]};

{matricula} = $ano.str_pad($loc, 2, “0”, STR_PAD_LEFT).str_pad($seq, 5, “0”, STR_PAD_LEFT);


O ScriptCase está meio maluco…
Tem hora que gera o sequencial direito, salvando os dados, hora gera mostrando no formulário, mas dá simplesmente “ERRO.” não salvando no banco, e outras vezes a seguinte mensagem: “Undefined variable: seq” ou a mesma mensagem para cada variável (ano, loc e sec).

Você sabe o porquê? O meu código está errado?

que tal tentar:

sc_lookup(id,“SELECT max(id) FROM membros”);

Mesmo resultado…

ERRO.
Undefined variable: seq

vc nao esta testando o resultset do select.

Como faço isso?

Sc_lookup(ds, “select max(id) from tabela”);
If (!empty({ds})) {
Echo {ds[0][0[0]};
}

O if testa se houve retorno do select se não houve e vc usar o array ds da o erro informado.

Tudo OK: :slight_smile:
Ficou assim:

sc_lookup(ds, “select max(id) from membros”);
if (!empty({ds})) {
$seq = {ds[0][0]} + 1;
}

sc_lookup(ds,“SELECT id FROM local”);
if (!empty({ds})) {
$loc = {ds[0][0]};
}

sc_lookup(ds,“SELECT YEAR(NOW())”);
if (!empty({ds})) {
$ano = {ds[0][0]};

{matricula} = $ano.str_pad($loc, 2, “0”, STR_PAD_LEFT).str_pad($seq, 5, “0”, STR_PAD_LEFT);


Muito obrigado Haroldo, por sua ajuda! Que Deus te abençoe!

Att. André Silveira