[RESOLVIDO] Percorrer DataSet

Olá pessoal,

Estou tentando montar um html retornando todos os dados de uma consulta. Para isso fiz as funções abaixo. O problema é que está retornando esta mensagem de erro:

Atenção Undefined variable: ds Atenção Undefined variable: ds

Seguem as funções:

function consulta($parametro) { $sql = "SELECT ME_ID, ME_RazaoSocial, ME_Fantasia, ME_CNPJ, ME_Endereco, ME_Numero, ME_Complemento, ME_Bairro, ME_Cep, ME_Cidade, ME_Estado, ME_Fone, ME_Celular, ME_Email, ME_Site, ME_Facebook, ME_Observacao FROM a004_minhaempresa ";
if(!empty($parametro)) {$sql .= "WHERE $parametro ";};

$sql .= "ORDER BY ME_RazaoSocial ";

sc_select(Ds, $sql);

if({Ds} === true)
{	
	while (!$Ds->EOF)
	{		
		$id = $Ds->fields[0];
		$nome = $Ds->fields[1];
		$fantasia = $Ds->fields[2];
		$cnpj = $Ds->fields[3];
		$endereco =$Ds->fields[4];
		$numero = $Ds->fields[5];
		$complemento = $Ds->fields[6];
		$bairro = $Ds->fields[7];
		$cep = $Ds->fields[8];
		$cidade = $Ds->fields[9];
		$estado =$Ds->fields[10];
		$fone = $Ds->fields[11];
		$celular = $Ds->fields[12];
		$email = $Ds->fields[13];
		$site = $Ds->fields[14];
		$facebook = $Ds->fields[15];
		$observacao = $Ds->fields[16];
	
		montaficha($id, $nome, $fantasia, $cnpj, $endereco, $numero, $complemento, $bairro, $cep, $cidade, $estado, $fone, $celular, $email, $site, $facebook,$observacao);
		$Ds->MoveNext();
	};
	$Ds->Close();
	
} else
	if({Ds} === false)
	{
		echo "Nenhuma informação foi retornada.";
	};

};

function montaficha($id, $nome, $fantasia, $cnpj, $endereco, $numero, $complemento, $bairro, $cep, $cidade, $estado, $fone, $celular, $email, $site, $facebook,$observacao)
{

echo "	
<div class='bordaarredonda'>
  <table width='100%' border='0' cellpadding='0' cellspacing='0'>
    <tr><td width='48%'>Código</td><td width='4%'>&nbsp;</td><td width='48%'>Número do CNPJ:</td></tr>
	<tr><td width='48%'><div class='campopq'>$id</div></td><td width='4%'>&nbsp;</td><td width='48%'><div class='campomd'>$cnpj</div></td></tr>
	<tr><td width='48%'>Razão Social</td><td width='4%'>&nbsp;</td><td width='48%'>Nome de Fantasia:</td></tr>
	<tr><td width='48%'><div class='campogd'>$nome</div></td><td width='4%'>&nbsp;</td><td width='48%'><div class='campogd'>$fantasia</div></td></tr>
	<tr><td width='48%'>Endereço:</td><td width='4%'>&nbsp;</td><td width='48%'>Número:</td></tr>
	<tr><td width='48%'><div class='campogd'>$endereco</div></td><td width='4%'>&nbsp;</td><td width='48%'><div class='campogd'>$numero</div></td></tr>
	<tr><td width='48%'>Complemento:</td><td width='4%'>&nbsp;</td><td width='48%'>Bairro:</td></tr>
	<tr><td width='48%'><div class='campogd'>$complemento</div></td><td width='4%'>&nbsp;</td><td width='48%'><div class='campogd'>$bairro</div></td></tr>
	<tr><td width='48%'>Cidade:</td><td width='4%'>&nbsp;</td><td width='48%'>Estado:</td></tr>
	<tr><td width='48%'><div class='campogd'>$cidade</div></td><td width='4%'>&nbsp;</td><td width='48%'><div class='campopq'>$estado</div></td></tr>
	<tr><td width='48%'>Telefone:</td><td width='4%'>&nbsp;</td><td width='48%'>Celular:</td></tr>
	<tr><td width='48%'><div class='campomd'>$fone</div></td><td width='4%'>&nbsp;</td><td width='48%'><div class='campomd'>$celular</div></td></tr>
	<tr><td width='48%'>E-mail:</td><td width='4%'>&nbsp;</td><td width='48%'>Home Page:</td></tr>
	<tr><td width='48%'><div class='campogd'>$email</div></td><td width='4%'>&nbsp;</td><td width='48%'><div class='campogd'>$site</div></td></tr>
	<tr><td width='48%'>Facebook:</td><td width='4%'>&nbsp;</td><td width='48%'>Observação:</td></tr>
	<tr><td width='48%'><div class='campogd'>$facebook</div></td><td width='4%'>&nbsp;</td><td width='48%'><div class='campogd'>$observacao</div></td></tr>
  </table>

</div>
";

};

Grato,

Ilano.

acredito que o problema esta em Ds-> e internamente ele criou como ds->
eh oque o erro sugere.

Olá Haroldo,

Mais uma vez muito obrigado por sua atenção. Cara, eu troquei $Ds para $ds e ainda assim continua dando o mesmo problema. Tem mais alguma sugestão?

Qual o tipo de aplicação?

Essas funções são métodos php da aplicação?

Em qual evento esta chamando essas funções?

Haroldo,

Consegui resolver o problema, mas fiz uma alteração no código. Mas antes, vou responder seus questionamentos, assim outras pessoas inexperientes como eu terão a chance de ver as explicações para a questão do post e conhecer melhor o scriptcase. Eu, pelo menos, ainda tenho que comer muito feijão pra ter o nível de conhecimento que vocês têm.

  1. O tipo de aplicação é Blank;
  2. Sim, essas funções são métodos php;
  3. Está sendo chamado no onExecute.

Depois de algumas pesquisas, eis minha solução:

function consulta($parametro) { $sql = "SELECT ME_ID, ME_RazaoSocial, ME_Fantasia, ME_CNPJ, ME_Endereco, ME_Numero, ME_Complemento, ME_Bairro, ME_Cep, ME_Cidade, ME_Estado, ME_Fone, ME_Celular, ME_Email, ME_Site, ME_Facebook, ME_Observacao FROM a004_minhaempresa ";
if(!empty($parametro)) {$sql .= "WHERE $parametro ";};

$sql .= "ORDER BY ME_RazaoSocial ";

sc_lookup(Ds, $sql);
			
		foreach({Ds} as $_ds)
		{
			$id = $_ds[0];
			$nome = $_ds[1];
			$fantasia = $_ds[2];
			$cnpj = $_ds[3];
			$endereco = $_ds[4];
			$numero = $_ds[5];
			if(!empty($_ds[6])) {$complemento = $_ds[6];} else {$complemento = '&nbsp;';};
			$bairro = $_ds[7];
			$cep = $_ds[8];
			$cidade = $_ds[9];
			$estado = $_ds[10];
			$fone = $_ds[11];
			if(!empty($_ds[6])) {$celular = $_ds[12];} else {$celular = '&nbsp;';};
			$email = $_ds[13];
			if(!empty($_ds[14])) {$site = $_ds[14];} else {$site = '&nbsp;';};
			if(!empty($_ds[15])) {$facebook = $_ds[15];} else {$facebook = '&nbsp;';};
			if(!empty($_ds[16])) {$observacao = $_ds[16];} else {$observacao = '&nbsp;';};
			
			montaficha($id, $nome, $fantasia, $cnpj, $endereco, $numero, $complemento, $bairro, $cep, $cidade, $estado, $fone, $celular, $email, $site, $facebook,$observacao);
		};

};

Mais uma vez, muitíssimo obrigado.

Me desculpe, mas vejo como uso melhor o sc_select do que o sc_lookup quando o select retorna mais de um registro.

Pois é, só que nessa estrutura, se eu mudar sc_lookup porsc_select, me retorna o erro abaixo:

Atenção Undefined variable: ds Atenção Invalid argument supplied for foreach()

E se eu voltar à estrutura no início do post, volta àquele erro inicial:

Atenção Undefined variable: ds Atenção Undefined variable: ds

Mas, Haroldo, qual a diferença de um pro outro? Essa estrutura corre o risco de não funcionar por conta daquela cláusula? Quais os impactos na minha aplicação mantendo essa última estrutura?

Na macro sc_select tem que mudar de $id = $_ds[0]; para $id->fields[0];, só um exemplo, tem que alterar para todos os campos.

Tem mais algumas alterações, estude a macro.

Galera, deu tudo certo! Obrigado pela atenção.