[RESOLVIDO] Erro Undefined offset:13 na consulta

Prezados bom dia, venho lutando com esse problema e não sei mais o que fazer para resolver, então estou aqui para solicitar de vocês a ajuda que for necessária para a solução do mesmo.

Uso o scriptcase 8.1

O problema está nesse código, especificamente em calcular a idade
$current_date = date(‘d-m-Y’);
//Calcula Idade do Filiado;
$periodo = sc_date_dif_2({dataNascimento}, “aaaa-mm-dd”, $current_date, “dd/mm/aaaa”, 1);
{idade} = $periodo[2];

//Calcula o tempo de progreesão do Filiado;
$periodo = sc_date_dif_2({dataFiliacao}, “aaaa-mm-dd”, $current_date, “dd/mm/aaaa”, 1);
{tempo} = $periodo[2];

Tenho no evento onRecord da grid umas rotinas mas até onde percebi, somente no calculo de data é que está dando “zica das grossas”, como dá pra vê na imagem o tempo e a idade está calculando, mas aparece esse dito erro abaixo de cada registro, foi consultar na internet e diz que eu estou procurando uma posição do array que não existe, mas não acho que seja isso, porquê um array de data vai trazer 3 posições, 0,1,2 e eu estou pegando a 2.

Desde já agradeço a atenção de todos.

faz assim

{idade} = 0;
{tempo} = 0;
//Calcula Idade do Filiado;
if(!empty({dataNascimento}))
{
$periodo = sc_date_dif_2({dataNascimento}, “aaaa-mm-dd”, $current_date, “dd/mm/aaaa”, 1);
{idade} = $periodo[2];
}

//Calcula o tempo de progreesão do Filiado;
if(!empty({dataFiliacao}))
{
$periodo = sc_date_dif_2({dataFiliacao}, “aaaa-mm-dd”, $current_date, “dd/mm/aaaa”, 1);
{tempo} = $periodo[2];
}

Ok, vou fazer e retorno aqui. Já fico agradecido pela dica

1 Curtida

Prezado, fiz o teste, e ficou seis por meia dúzia, continuou a mesma coisa como se eu não tivesse feito nada no código.

Fiz esse procedimento:
$current_date = date(‘d-m-Y’);
//Calcula Idade do Filiado;

{idade} = ‘0’;
if(!empty({dataNascimento})){
$periodo = sc_date_dif_2({dataNascimento}, “aaaa-mm-dd”, $current_date, “dd/mm/aaaa”, 1);
{idade} = $periodo[2];
}

//Calcula o tempo de progreesão do Filiado;
{tempo} = ‘0’;
if(!empty({dataFiliacao})){
$periodo = sc_date_dif_2({dataFiliacao}, “aaaa-mm-dd”, $current_date, “dd/mm/aaaa”, 1);
{tempo} = $periodo[2];
}

Continua o mesmo erro

Me parece que está informando o formato da $current_date errado na macro.

$current_date = date(‘d-m-Y’);

Tenta assim:
sc_date_dif_2({dataNascimento}, “aaaa-mm-dd”, $current_date, “dd-mm-aaaa”, 1);

ou assim

$current_date = date(‘Y-m-d’);
sc_date_dif_2({dataNascimento}, “aaaa-mm-dd”, $current_date, “aaaa-dd-mm”, 1);

Já tentei isso, eu inclusive fui no exemplo da macro copiar a sintax de lá para ter certeza que não estava fazendo errado, mas vou tentar novamente com esse formato que você informou só pra ter a certeza. Estou pensando em usar alguma outra forma sem ser com macro, peguei na internet, mas não deu certo, alguma coisa também dá errado não sei se é a versão do php ou o que pode ser; :grimacing:

é amigo, tem zica nessa coisa, não funcionou :sob: :sob:

Já debugou?

offset 13, parece ser erro no sql no campo 13, só tem 12 campos na tela.

Acho que se fosse erro na macro o campo idade não apareceria no primeiro registro.
Do segundo registro em diante não dá para ver na imagem postada.

Na instrução sql o último campo é progredir?

Cara não é inconsistência na quantidade de campo não, se eu comentar o calculo da data de nascimento, ele passa, se der alguma coisa na outra data é muita muito pouca, pra ser exagerado, a questão está nos cálculos de data, pois se eu popular estas informações das datas manual, ele passa normal sem erro nenhum

eu estou pensando em substituir a macro por o seguinte código:

$datetime1 = date_create(‘1973-10-11’);
$datetime2 = date_create(‘2021-10-13’);
$interval = date_diff($datetime1, $datetime2);

//print_r($interval);
echo $interval->y;

mas não sei como passar estas datas pois uma é um campo já no tipo data e a outra é uma variável do tipo date(‘Y-m-d’);

e o código parece que está criando as datas passadas como string.

Prezados, consegui resolver. De qualquer forma a dispensa do tempo de vocês em tentar me ajudar foi muito útil pois me fez pensar junto com vocês as formas e as possibilidades de acontecer algo e como resolver.

Segue abaixo a solução:
$current_date = date(‘Y-m-d’);

//Calcula Idade do Filiado;
if(!empty({dataNascimento})){
$nascimento = date_create({dataNascimento});
$hoje = date_create($current_date);
$interval = date_diff($nascimento, $hoje);
{idade} = $interval->y;
//print_r($interval);
}

//Calcula o tempo de progreesão do Filiado;
if(!empty({dataFiliacao})){
$filiacao = date_create({dataFiliacao});
$hoje = date_create($current_date);
$interval = date_diff($filiacao, $hoje);
{tempo} = $interval->y;
}

Uma forma mais simples para ver a idade:

$DataInicio = "2019-07-14";
$DataFim = date('Y-m-d');
$data1 = new DateTime( $DataInicio );
$data2 = new DateTime( $DataFim );

$Idade = $data1->diff( $data2 );

echo $Idade->y." anos, ".$Idade->m." meses e ".$Idade->d." dias";

Perfeito, amigo, é bom ter várias opções, eu utilizei a outra porque desde sexta-feira que eu estou com a cabeça branca com esse problema. Mas será muito útil pra mim também essa sua dica. Com certeza vou aproveitar em novas ocasiões.

Obrigado