TCPDF ERROR: Some data has already been output, can't send PDF file

Estou utilizando uma aplicacao BLANK que faz consulta ao banco Oracle.

Esse codigo abaixo estava funcionado normalmente.

[font=verdana][font=courier]$sql =
"SELECT
curso.ano_realizacao,
curso.evt,
curso.prioridade,
area_conhecimento.descricao,
curso.nome_curso,
cargo.descricao,
curso.projeto_pesquisa,
instituicao.nome || ’ ’ ||instituicao.cidade || ’ ’ || instituicao.pais,
curso.duracao,
om.nome,
om.nome,
curso.numero_participantes || ’ ’ || curso.publico,
curso.vinculo

		FROM 
			curso, area_conhecimento, tipo_curso, cargo, instituicao, om
		WHERE 
			curso.area_conhecimento = area_conhecimento.idarea_conhecimento
		AND    
			curso.tipo_curso_idtipo_curso = tipo_curso.idtipo_curso
		AND    
			curso.cargo_idcargo = cargo.idcargo
		AND    
			curso.local = instituicao.idinstituicao
		AND    
			curso.omp = om.idom
		AND
			curso.ano_realizacao = ".$counter;

sc_select(rs, $sql);  [/font][/font]

Tive que adicionar mais alguns campos no where e apareceu esse erro:
Atenção
Undefined offset: 0
TCPDF ERROR: Some data has already been output, can’t send PDF file

Já tentei de tudo e nâo consegui resolver o problema. Alguem tem alguma ideia?

[font=verdana]"SELECT
curso.ano_realizacao,
curso.evt,
curso.prioridade,
area_conhecimento.descricao,
curso.nome_curso,
cargo.descricao,
curso.projeto_pesquisa,
instituicao.nome || ’ ’ ||instituicao.cidade || ’ ’ || instituicao.pais,
curso.duracao,
om.nome,
om.nome,
curso.numero_participantes || ’ ’ || curso.publico,
curso.vinculo

		FROM 
			curso, area_conhecimento, tipo_curso, cargo, instituicao, om
		WHERE 
			curso.area_conhecimento = area_conhecimento.idarea_conhecimento
		AND    
			curso.tipo_curso_idtipo_curso = tipo_curso.idtipo_curso
		AND    
			curso.cargo_idcargo = cargo.idcargo
		AND    
			curso.local = instituicao.idinstituicao
		AND    
			curso.omp = om.idom
		[color=red]AND
			instituicao.pais = 'Brasil'
		AND
			tipo_curso.descricao = 'Stricto-sensu'[/color]
                    AND
			curso.ano_realizacao = ".$counter;


            sc_select(rs, $sql);

Não tem aspas sobrando " ?
Dá uma olhada.

Todo campo que é mesclado (campo + outro campo) deve ter o AS e o um alias pra identificar. Tipo:

CONCAT (instituicao.nome, ’ - ’ , instituicao.cidade,’ - ‘,instituicao.pais) AS instituicao,
CONCAT (curso.numero_participantes,’ ', curso.publico) AS num_participantes,

Tinha colocado o codigo errado, ja corrigi. Tentei essa dica do CONCAT mas nâo deu certo.
Dá a impressão que a variavel $sql que armazena o consulta está estourando o limite, pq sem aquelas duas linhas em vermelho funciona. Rodei o codigo da consulta direto no banco Oracle e funcionou normalmente.

Essa mensagem esta dando por que como você adicionou filtros na SQL, se não tiver campos com os critérios ele não vai trazer nada.

Ai você tem que fazer um tratametno se o retorno do SQL vir nulo.
Undefined offset: 0

Depois do sc_select(rs, $sql); trate ele com isso:

/* Macro sc_select */

sc_select(meus_dados, "
SELECT
    CodigoClienteID,
    NomeCliente,
    CPF
FROM
    clientes
");

/* Erro no select */
if ({meus_dados} === false) {
     // Sua Base + _erro
	 sc_error_message("Ocorreu um erro no acesso ao<BR>banco de dados: {meus_dados_erro}.<BR>");
}
else {

	 /* Inclua aqui sua rotina de processamento */

	 // Qtde de Registros Retornados.
	 $QtdeRegistros=$meus_dados->RecordCount();

     if ($meus_dados->EOF) {

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

		 while (!$meus_dados->EOF) {
		 
				{CodigoClienteID} = $meus_dados->fields[0];
				{NomeCliente} = $meus_dados->fields[1];
				{CPF} = $meus_dados->fields[2];
				
				// Avança para o próximo registro do BANCO DE DADOS.
				$meus_dados->MoveNext();
				
		 } // while (!$meus_dados->EOF)
	 
	 } // if ($meus_dados->EOF)	 

} // sc_select(meus_dados,    ** Nao deixar aspas aqui...

// Limpa tudo até a conexão
$meus_dados->Close();

Voce tinha razao. Aquele erro esta aparecendo quando nao encontra nenhum resultado na consulta.
Eu tentei fazer o tratamento do erro (sem resultado) verificando se o rs estava vazio, mas não deu certo. Quando tem resultado na consulta os dados são preenchidos corretamente, mas quando nao tem aparece o erro: Undefined offset: 0

	sc_select(rs, $sql);  


	if ( $rs->fields[0]  )
	{
		$hasResult = true;

		$pdf->Write(0, 'ANO DE '.$counter, '', 0, 'C', true, 0, false, false, 0);
		
		if ( $i < 3 )
			$pdf->Write(0, 'Evento no País', '', 0, 'C', true, 0, false, false, 0);
		else
			$pdf->Write(0, 'Evento no Exterior', '', 0, 'C', true, 0, false, false, 0);
			
		switch ( $i % 3 ) {
		
			case 0: 
		$pdf->Write(0, 'Stricto-Sensu', '', 0, 'L', true, 0, false, false, 0);
					break;
			
			case 1: 
		$pdf->Write(0, 'Lato-Sensu', '', 0, 'L', true, 0, false, false, 0);
					break;
			
			case 2: 
		$pdf->Write(0, 'Qualificação Profissional', '', 0, 'L', true, 0, false, false, 0);
					break;
		
		}
		
		$pdf->ln();


		//------------------------------------------
		//Generating the HEADER Table
		//

		$tbl = '<table border="1" align="center">
			<tr bgcolor="#DDDDDD" valign="middle">
				<th rowspan="2">ANO<br></th>
				<th rowspan="2">EVT<br></th>
				<th rowspan="2">PRIORIDADE</th>
				<th rowspan="2">ÁREA DE CONHECIMENTO<br></th>
				<th rowspan="2">CURSO/ESTÁGIO<br></th>
				<th colspan="2">FINALIDADE<br></th>
				<th rowspan="2" width="80">LOCAL (INSTITUIÇÃO/CIDADE)<br></th>
				<th rowspan="2">DURAÇÃO (SEMANAS)<br></th>
				<th rowspan="2">OMOT<br></th>
				<th rowspan="2">OMP<br></th>
				<th rowspan="2">PÚBLIVO ALVO<br></th>
				<th rowspan="2">VÍNCULO/DISSEMINAÇÃO DESEJADA<br></th>		
			</tr>
			<tr bgcolor="#DDDDDD" valign="middle">
				<td>CARGO/FUNÇÃO EM TL</td>
				<td>PROJETO/PESQUISA A'.$counter.'</td>
			</tr>';

		//</table>';



		while (!$rs->EOF)
		{
			$tbl = $tbl . "<tr>";
				$tbl = $tbl . "<td>".$rs->fields[0]."</td>";
				$tbl = $tbl . "<td>".$rs->fields[1]."</td>";
				$tbl = $tbl . "<td>".$rs->fields[2]."</td>";
				$tbl = $tbl . "<td>".$rs->fields[3]."</td>";
				$tbl = $tbl . "<td>".$rs->fields[4]."</td>";
				$tbl = $tbl . "<td>".$rs->fields[5]."</td>";
				$tbl = $tbl . "<td>".$rs->fields[6]."</td>";
				$tbl = $tbl . "<td>".$rs->fields[7]."</td>";
				$tbl = $tbl . "<td>".$rs->fields[8]."</td>";
				$tbl = $tbl . "<td>".$rs->fields[9]."</td>";
				$tbl = $tbl . "<td>".$rs->fields[10]."</td>";
				$tbl = $tbl . "<td>".$rs->fields[11]."</td>";
				$tbl = $tbl . "<td>".$rs->fields[12]."</td>";
			$tbl = $tbl . "</tr>";

			$rs->MoveNext();
		}
		$tbl = $tbl . "</table>";

		
		$pdf->writeHTML($tbl, true, false, false, false, '');
		$pdf->ln();

	}//;
	$rs->Close();
	if ($newPage && $hasResult ){
		$pdf->AddPage();
		$pdf->LastPage();	
	}

} // end for
	
$counter++;

}//end while

Tentei fazer desse jeito que voce falou mas tambem nao consegui. POderia me dar uma ajuda?

É só na blank colocar ele para validar se tem dados antes de gerar o pdf se não tiver aborta com uma mensagem acusando que não existe dados e faz um desvio dos códigos que iriam gerar o pdf.

Uma coisa que achei estranho é que esse mesmo codigo no banco mysql funciona normalmente. Já no Oracle apresenta esse problema Undefined offset: 0