Undefined offset: 0.

Estou tentando pegar os dados de um select apenas se retornar resultados. Porém quando não há retorno da erro de Undefined offset: 0.
Veja:

sc_lookup(dtvaloritens,“SELECT
SUM(i.fatvalortotal)
FROM
tbl_faturamento_x_itens AS i
WHERE
i.fatcod = ‘[var_fatcod]’
AND
i.fatserie = ‘[var_fatserie]’
AND
i.orgcod = ‘[var_orgcod]’
AND
i.prodcod =
(SELECT p.prodcod
FROM
tbl_produtos AS p
WHERE
p.prodcod = i.prodcod
AND
p.prodgerafinanceiro = ‘1’)”);

if (isset({dtvaloritens[0][0]})) {
$varvalortotal={dtvaloritens[0][0]};
$varvalorparcela = $varvalortotal/$varfatnumeroparcelas;
}

Mesmo assim continua aparecendo o erro Undefined offset: 0.

Use este código para fazer o sc_lookup:

/* Macro sc_lookup */

$sql ="
SELECT
CodigoClienteID,
NomeCliente,
CPF
FROM
clientes
";

sc_lookup(cli, $sql);

/* Erro no lookup /
if (FALSE === {cli}) {
sc_error_message(“Ocorreu um erro no acesso ao banco de dados.
”);
}
elseif (empty({cli})) { /
EOF */

sc_error_message("Nenhum valor foi retornado pelo banco.<BR>");

}
else {

/* Inclua aqui sua rotina de processamento */

$_CodigoClienteID = {cli[0][0]};
$_NomeCliente = {cli[0][1]};
$_CPF = {cli[0][2]};

}

http://www.scriptcase.com.br/forum/index.php/topic,8878.msg78730.html#msg78730

Veja bem, vou tratar por aqui pra ficar mais organizado. Desculpe ter tramitado no outro.
Seguinte… Para o Kleyber:

1 - Execute a tua query com os valores nas variáveis pra ver se está funcionando corretamente;
R-> executa normalmente e traz nulo a soma, devido não existir nenhum produto com o parâmetro passado.

2 - Caso esteja funcionando corretamente, verifique as variáveis que estão sendo passadas para a query pra saber se estão de fato todas preenchidas;
R-> testei elas alterando o parâmetro para um existente e não deu o erro.

3 - Coloque todo o teu select em uma variável e coloque essa variável no sc_lookup. Depois use o if (isset({dtvaloritens}[0][0])).
R-> segue abaixo o código alterado conforme orientação. Mesmo assim continua o erro.

$sql = “SELECT
SUM(i.fatvalortotal)
FROM
tbl_faturamento_x_itens AS i
WHERE
i.fatcod = ‘[var_fatcod]’
AND
i.fatserie = ‘[var_fatserie]’
AND
i.orgcod = ‘[var_orgcod]’
AND
i.prodcod =
(SELECT p.prodcod
FROM
tbl_produtos AS p
WHERE
p.prodcod = i.prodcod
AND
p.prodgerafinanceiro = ‘1’)”; /* aqui é o parâmetro que estou passando para verificar se irá gerar ou não o financeiro. que neste caso não irá gerar, porém não pode ocorrer erro*/

sc_lookup(dtvaloritens,$sql);
$varvalortotal = 0;

if (isset({dtvaloritens}[0][0])) { /aqui tentei dessa forma que está e assim: {dtvaloresitens[0][0]}/
$varvalortotal={dtvaloritens[0][0]};
$varvalorparcela = $varvalortotal/$varfatnumeroparcelas;
}

Tentei também fazer Jailton passou e ocorreu o mesmo erro.
O resultado do select em questão é NULO.

Aqui está o problema. Onde estão definidas estas variáveis: $varvalorparcela e $varfatnumeroparcelas?

Segue o código desse metodo completo para melhor entendimento:

sc_exec_sql(“DELETE FROM tbl_recebimento_x_parcelas WHERE fatcod = [var_fatcod] AND fatserie = [var_fatserie] AND orgcod = [var_orgcod]”);

sc_lookup(rstfatura,“SELECT
fatdtlancamento,
fatnumeroparcelas
FROM
tbl_faturamento
WHERE
fatcod = [var_fatcod]
AND
fatserie = [var_fatserie]
AND
orgcod = [var_orgcod]”);

$varfatdtlancamento={rstfatura[0][0]};
$varfatnumeroparcelas={rstfatura[0][1]};

$sql = “SELECT
SUM(i.fatvalortotal)
FROM
tbl_faturamento_x_itens AS i
WHERE
i.fatcod = ‘[var_fatcod]’
AND
i.fatserie = ‘[var_fatserie]’
AND
i.orgcod = ‘[var_orgcod]’
AND
i.prodcod =
(SELECT p.prodcod
FROM
tbl_produtos AS p
WHERE
p.prodcod = i.prodcod
AND
p.prodgerafinanceiro = ‘1’)”;

sc_lookup(dtvaloritens,$sql);
$varvalortotal = 0;

if (isset({dtvaloritens[0][0]})) {
$varvalortotal={dtvaloritens[0][0]};
$varvalorparcela = $varvalortotal/$varfatnumeroparcelas;
}

if ($varvalortotal > 0) {

for ($parc = 1; $parc <= $varfatnumeroparcelas; $parc++) {
	$dias=30*$parc;
	//$vardtvencimento = sc_data(date("dmY"), "ddmmaaaa", "+", $dias, 0, 0);
	$vardtvencimento = sc_data($varfatdtlancamento, "aaaa-mm-dd", "+", $dias, 0, 0);
	//$vardtvencimento = sc_date_conv($vardtvencimento,"ddmmaaaa","db_format");
	$now = date('Y-m-d H:i:s');

	sc_exec_sql("insert into tbl_recebimento_x_parcelas

(recparcela,orgcod,fatcod,fatserie,recdtlancamento,recdtvencimento,recvalorprincipal,recvalortotal,login) VALUES
($parc,[var_orgcod],[var_fatcod],[var_fatserie],’$varfatdtlancamento’,’$vardtvencimento’,’$varvalorparcela’,’$varvalorparcela’,’[usr_login]’)");
}
}

Não falei, mas minha versão do SC é 8.1.
Para o Jailton segue o codigo alterado conforme vc orientou:

sc_exec_sql(“DELETE FROM tbl_recebimento_x_parcelas WHERE fatcod = [var_fatcod] AND fatserie = [var_fatserie] AND orgcod = [var_orgcod]”);

sc_lookup(rstfatura,“SELECT
fatdtlancamento,
fatnumeroparcelas
FROM
tbl_faturamento
WHERE
fatcod = [var_fatcod]
AND
fatserie = [var_fatserie]
AND
orgcod = [var_orgcod]”);

$varfatdtlancamento={rstfatura[0][0]};
$varfatnumeroparcelas={rstfatura[0][1]};

$sql = “SELECT
SUM(i.fatvalortotal)
FROM
tbl_faturamento_x_itens AS i
WHERE
i.fatcod = ‘[var_fatcod]’
AND
i.fatserie = ‘[var_fatserie]’
AND
i.orgcod = ‘[var_orgcod]’
AND
i.prodcod =
(SELECT p.prodcod
FROM
tbl_produtos AS p
WHERE
p.prodcod = i.prodcod
AND
p.prodgerafinanceiro = ‘1’)”;

sc_lookup(dtvaloritens,$sql);
$varvalortotal = 0;
$_dtvaloritens = {dtvaloritens[0][0]};

if (empty($_dtvaloritens)) {
//está entrando aqui, mas está dando o mesmo erro.
$varvalortotal=0;
$varvalorparcela=0;
} else {
$varvalortotal=$_dtvaloritens;
$varvalorparcela=$varvalortotal/$varfatnumeroparcelas;
sc_error_message(‘Depois: ‘.$varvalortotal.’-’);
}

if ($varvalortotal > 0) {

for ($parc = 1; $parc <= $varfatnumeroparcelas; $parc++) {
	$dias=30*$parc;
	//$vardtvencimento = sc_data(date("dmY"), "ddmmaaaa", "+", $dias, 0, 0);
	$vardtvencimento = sc_data($varfatdtlancamento, "aaaa-mm-dd", "+", $dias, 0, 0);
	//$vardtvencimento = sc_date_conv($vardtvencimento,"ddmmaaaa","db_format");
	$now = date('Y-m-d H:i:s');

	sc_exec_sql("insert into tbl_recebimento_x_parcelas

(recparcela,orgcod,fatcod,fatserie,recdtlancamento,recdtvencimento,recvalorprincipal,recvalortotal,login) VALUES
($parc,[var_orgcod],[var_fatcod],[var_fatserie],’$varfatdtlancamento’,’$vardtvencimento’,’$varvalorparcela’,’$varvalorparcela’,’[usr_login]’)");
}
}

mesmo erro.

Salva seu código original em arquivo texto e testa com este:

sc_exec_sql(“DELETE FROM tbl_recebimento_x_parcelas WHERE fatcod = [var_fatcod] AND fatserie = [var_fatserie] AND orgcod = [var_orgcod]”);

sc_lookup(rstfatura,“SELECT
fatdtlancamento,
fatnumeroparcelas
FROM
tbl_faturamento
WHERE
fatcod = [var_fatcod]
AND
fatserie = [var_fatserie]
AND
orgcod = [var_orgcod]”);

$varfatdtlancamento={rstfatura[0][0]};
$varfatnumeroparcelas={rstfatura[0][1]};

/* Macro sc_lookup */

$sql ="
SELECT
SUM(i.fatvalortotal)
FROM
tbl_faturamento_x_itens AS i
WHERE
i.fatcod = ‘[var_fatcod]’ AND i.fatserie = ‘[var_fatserie]’ AND
i.orgcod = ‘[var_orgcod]’ AND i.prodcod = (SELECT
p.prodcod
FROM
tbl_produtos AS p
WHERE
p.prodcod = i.prodcod
AND
p.prodgerafinanceiro = ‘1’)
";

sc_lookup(tot, $sql);

$_fatvalortotal={tot[0][0]};

if (empty($_fatvalortotal)) {
$_fatvalortotal=0;
$varvalorparcela=0;
} else {
$varvalorparcela = $_fatvalortotal/$varfatnumeroparcelas;
}

sc_exec_sql("DELETE FROM tbl_recebimento_x_parcelas WHERE fatcod = [var_fatcod] AND fatserie = [var_fatserie] AND orgcod = [var_orgcod]");

sc_lookup(rstfatura,"SELECT
                                 fatdtlancamento,
                                 fatnumeroparcelas
                              FROM
                                 tbl_faturamento
                              WHERE
                                 fatcod = [var_fatcod]
                              AND
                                 fatserie = [var_fatserie]
                              AND
                                 orgcod = [var_orgcod]");

$varfatdtlancamento={rstfatura[0][0]};
$varfatnumeroparcelas={rstfatura[0][1]};


/* Macro sc_lookup */

$sql ="
SELECT
	SUM(i.fatvalortotal)
FROM
    tbl_faturamento_x_itens AS i
WHERE
    i.fatcod = '[var_fatcod]' AND i.fatserie = '[var_fatserie]' AND
    i.orgcod = '[var_orgcod]' AND i.prodcod = (SELECT
                                                    p.prodcod 
                                                FROM 
                                             		tbl_produtos AS p
                     							WHERE 
                        							p.prodcod = i.prodcod
                     							AND
                        							p.prodgerafinanceiro = '1')
";

sc_lookup(tot, $sql);

$_fatvalortotal={tot[0][0]};

if (empty($_fatvalortotal)) {
    $_fatvalortotal=0;
	$varvalorparcela=0;
} else {
    $varvalorparcela = $_fatvalortotal/$varfatnumeroparcelas;
}

Jailton, copiei e colei exatamente o código que me mandou no tramite 7 e continua o mesmo erro.
A versão do SC é 8.1 e PHP 5.2, não seria questão de versão não ?

Copie e guarde o seu código atual em um arquivo texto, o erro esta no inicio do seu código em:
$varfatdtlancamento={rstfatura[0][0]};
$varfatnumeroparcelas={rstfatura[0][1]};

Use este código no lugar para fazer o teste e depois complemente com a parte que falta dentro dele:
$sql ="
DELETE FROM
tbl_recebimento_x_parcelas
WHERE
fatcod = [var_fatcod] AND fatserie = [var_fatserie] AND orgcod = [var_orgcod]
";

sc_exec_sql($sql);

/* Macro sc_lookup */

$sql ="
SELECT
fatdtlancamento,
fatnumeroparcelas
FROM
tbl_faturamento
WHERE
fatcod = [var_fatcod] AND fatserie = [var_fatserie]
AND orgcod = [var_orgcod]
";

sc_lookup(fatura, $sql);

/* Erro no lookup /
if (FALSE === {fatura}) {
sc_error_message(“Ocorreu um erro no acesso ao banco de dados.
”);
}
elseif (empty({fatura})) { /
EOF */

sc_error_message("Nenhuma Fatura Encontrada!<BR>");

}
else {

/* Inclua aqui sua rotina de processamento */

$varfatdtlancamento = {fatura[0][0]};
$varfatnumeroparcelas = {fatura[0][1]};

// COLOCAR OS OUTROS CÓDIGOS e CONTINUAR AQUI... para ele prosseguir com a lógica se somente achar os dados

}

$sql ="
DELETE FROM
	tbl_recebimento_x_parcelas
WHERE
	fatcod = [var_fatcod] AND fatserie = [var_fatserie] AND orgcod = [var_orgcod]
";

sc_exec_sql($sql);


/* Macro sc_lookup */

$sql ="
SELECT
	fatdtlancamento,
	fatnumeroparcelas
FROM
	tbl_faturamento
WHERE
	fatcod = [var_fatcod] AND fatserie = [var_fatserie]
	AND orgcod = [var_orgcod]
";

sc_lookup(fatura, $sql);

/* Erro no lookup */
if (FALSE === {fatura}) {
	sc_error_message("Ocorreu um erro no acesso ao banco de dados.<BR>");
}
elseif (empty({fatura})) { /* EOF */

	sc_error_message("Nenhuma Fatura Encontrada!<BR>");
}
else {

	/* Inclua aqui sua rotina de processamento */

    $varfatdtlancamento = {fatura[0][0]};
    $varfatnumeroparcelas = {fatura[0][1]};
	
	// COLOCAR OS OUTROS CÓDIGOS e CONTINUAR AQUI... para ele prosseguir com a lógica se somente achar os dados
	
	
}

SC 8.1 só deve ser usado com PHP 5.6

Mesmo erro Jailton. Veja o código como ficou agora:

$sql=“DELETE FROM tbl_recebimento_x_parcelas WHERE fatcod = [var_fatcod] AND fatserie = [var_fatserie] AND orgcod = [var_orgcod]”;

sc_exec_sql($sql);

$sql=“SELECT
fatdtlancamento,
fatnumeroparcelas
FROM
tbl_faturamento
WHERE
fatcod = [var_fatcod]
AND
fatserie = [var_fatserie]
AND
orgcod = [var_orgcod]”;

sc_lookup(rstfatura,$sql);

if (FALSE === {rstfatura}) {
sc_error_message(“Ocorreu um erro no acesso ao banco de dados.
”);
}
elseif (empty({rstfatura})) { /* EOF */

sc_error_message(“Nenhuma Fatura Encontrada!
”);
}
else {
$varfatdtlancamento={rstfatura[0][0]};
$varfatnumeroparcelas={rstfatura[0][1]};

$sql=“SELECT
SUM(i.fatvalortotal)
FROM
tbl_faturamento_x_itens AS i
WHERE
i.fatcod = ‘[var_fatcod]’
AND
i.fatserie = ‘[var_fatserie]’
AND
i.orgcod = ‘[var_orgcod]’
AND
i.prodcod =
(SELECT p.prodcod
FROM
tbl_produtos AS p
WHERE
p.prodcod = i.prodcod
AND
p.prodgerafinanceiro = ‘1’)”;

sc_lookup(dtvaloritens,$sql);

if (FALSE === {dtvaloritens}) {
   sc_error_message("Ocorreu um erro no acesso ao banco de dados.<BR>");
}
elseif (empty({dtvaloritens})) { /* EOF */

   sc_error_message("Nenhuma Fatura Encontrada!<BR>");
}
else {
	$varvalortotal={dtvaloritens[0][0]};
	$varvalorparcela=$varvalortotal/$varfatnumeroparcelas;

   if ($varvalortotal > 0) {

		for ($parc = 1; $parc <= $varfatnumeroparcelas; $parc++) {
			$dias=30*$parc;
			//$vardtvencimento = sc_data(date("dmY"), "ddmmaaaa", "+", $dias, 0, 0);
			$vardtvencimento = sc_data($varfatdtlancamento, "aaaa-mm-dd", "+", $dias, 0, 0);
			//$vardtvencimento = sc_date_conv($vardtvencimento,"ddmmaaaa","db_format");
			$now = date('Y-m-d H:i:s');

			sc_exec_sql("insert into tbl_recebimento_x_parcelas
			(recparcela,orgcod,fatcod,fatserie,recdtlancamento,recdtvencimento,recvalorprincipal,recvalortotal,login) VALUES 
	($parc,[var_orgcod],[var_fatcod],[var_fatserie],'$varfatdtlancamento','$vardtvencimento','$varvalorparcela','$varvalorparcela','[usr_login]')");
		}
	}  
}

}

Ative modo Debug e veja o retorno das SQL para ver qual Query SQL não esta retornando os campos, corretamente, teste apenas
partes do código para ficar mais fácil achar, guarde ele todo em um arquivo texto, vá colando e testando pequenos trechos.
$varfatdtlancamento={rstfatura[0][0]};
$varfatnumeroparcelas={rstfatura[0][1]};

$varvalortotal={dtvaloritens[0][0]};

Observe as Query retornadas copie elas e execute no seu gerenciar de Banco de Dados, para validar elas:

Faz mais de ano que não trabalha com o SC e fiquei bastante enferrujado.
Acredito que encontrei o que era, realmente com as funções que passou já é suficiente para resolver esse problema.
Era outro método que não estava me atentando a ele, que dependia desse método que analisamos aqui.

Agora sobre o debug, se tiver algum link ou procedimento de como debugar a aplicação eu gostaria muito de ver sobre. Pois facilitaria muito pra mim.

Desculpe pelo equivoco de minha parte e obrigado.

Alem dos debugs do Scriptcase ‘Telas que passei a print-screen’, você pode fazer isso também:

Pode colocar nos códigos para ver o resultado:

  1. echo 'SQL = '.$sql."
    ";
    break;

  2. var_dump($sql);
    break;

Ou usar essa biblioteca dBug que é um var_dump aperfeiçoado:
https://github.com/ospinto/dBug

Download: https://raw.githubusercontent.com/ospinto/dBug/master/dBug.php

Debugging é A arte de encontrar e resolver bugs.

Muito obrigado. Acredito que terei mais sucesso para analisar os bugs.
Situação resolvida.