Autor Tópico: Problema com campos subselect, com mais de um digito salvo no banco  (Lida 1111 vezes)

rodolfo73

  • Novato
  • *
  • Mensagens: 44
Problema com campos subselect, com mais de um digito salvo no banco
« Online: Março 12, 2014, 04:36:05 pm »
Boa Tarde Pessoal,

Tenho um campo subselect num reportPDF, que retorna os pratos que o candidato sabe fazer ((pdo-mysql): SELECT PRAT_Id FROM candidata_prato WHERE CAND_Id = 1), e na hora de imprimir ele só retorna o primeiro digito salvo no banco de dados.

Coloquei no modo debug, e verifiquei o problema:

(pdo-mysql): SELECT PRAT_Nome FROM prato WHERE PRAT_Id = 2 ORDER BY PRAT_Nome   
(pdo-mysql): SELECT PRAT_Nome FROM prato WHERE PRAT_Id = 3 ORDER BY PRAT_Nome   
(pdo-mysql): SELECT PRAT_Nome FROM prato WHERE PRAT_Id = 7 ORDER BY PRAT_Nome   
(pdo-mysql): SELECT PRAT_Nome FROM prato WHERE PRAT_Id = 1 ORDER BY PRAT_Nome   
(pdo-mysql): SELECT PRAT_Nome FROM prato WHERE PRAT_Id = 3 ORDER BY PRAT_Nome   
(pdo-mysql): SELECT PRAT_Nome FROM prato WHERE PRAT_Id = 3 ORDER BY PRAT_Nome   
(pdo-mysql): SELECT PRAT_Nome FROM prato WHERE PRAT_Id = 3 ORDER BY PRAT_Nome

Fiz a consulta no MySQL, e a mesma deveria retornar o seguinte resultado:

SELECT PRAT_Id FROM candidata_prato WHERE CAND_Id =1

2
3
7
17
30
31
33

Repare que onde tem mais de um digito, o relatório só está pegando o primeiro dígito.

OBS: Procurando no forum, achei um post de 2012 relatando esse bug, gostaria de saber se já existe uma solução para esse problema.

Post: http://www.scriptcase.com.br/forum/index.php/topic,5224.msg22897.html#msg22897
« Última modificação: Março 12, 2014, 04:40:15 pm por rodolfo73 »

rodolfo73

  • Novato
  • *
  • Mensagens: 44
Re:Problema com campos subselect, com mais de um digito salvo no banco
« Responder #1 Online: Março 13, 2014, 03:31:13 pm »
Pessoal,

Esse já é o terceiro bug por mim relatado do SC, e como a NM nunca resolveu nenhum, estou postando uma "gambiarra" para resolver esse problema e continuar trabalhando.

Em vez de usar a consulta: "SELECT PRAT_Id FROM candidata_prato WHERE CAND_Id = 1", e depois usar um Lookup Automático para trazer o nome do "prato" em vez do seu id: "SELECT PRAT_Nome FROM prato WHERE PRAT_Id = '{Pratos.PRAT_Id}'
ORDER BY PRAT_Nome", resolvi usar a seguinte consulta:

SELECT
    SUBSTR(p.PRAT_Nome, 1, LENGTH(p.PRAT_Nome)) AS Nome_prato
FROM
   candidata_prato cp
INNER JOIN
    prato p on (cp.PRAT_Id = p.PRAT_Id)
WHERE
    cp.CAND_Id = {CAND_Id}
ORDER BY
    p.PRAT_Nome

Só assim consegui resolver o problema em que o SC só pegava o primeiro digito do campo.

alexandreabreu

  • Novato
  • *
  • Mensagens: 1
    • Email
Re:Problema com campos subselect, com mais de um digito salvo no banco
« Responder #2 Online: Novembro 04, 2014, 11:04:31 pm »
Olá à todos!

Quebrei muito a cabeça para tentar descobrir como resolver o problema de um dígito no campo SUBSELECT... depois de várias horas, eis a solução encontrada:

Eu tinha um PDF que listava todos os dependentes de uma pessoa. Precisava colocar um contador de linha para que pudesse identificar o dependente pelo número da linha.

1º Na tabela CONTADOR eu tinha dois campos: ID e Num_Linha. Então alterei o campo Num_Linha como tipo TEXTO;

2º No SQL do campo SUBSELECT eu solicitei:  ID e Num_Linha na pesquisa do BD;

3º No sc_lookup do campo SUBSELECT eu troquei o campo ID por Num_Linha... pronto! Funcionou depois de dias tentando e nada de achar a solução aqui na internet...

Sei que ficou meio enrolado o texto, mas é que já varei a madrugada para resolver este problema e espero que tenha ajudado em alguma coisa... é bem simples! me senti um idiota quando descobri!rs

Abraços à todos!