Possuo uma aplicação relatório pdf, um contra cheque, devido a estrutura das tabelas necessitei que alguns campos fossem listados através do lookup em sentenças SQL.
O que ocorre, essas sentenças no SQL funcionam perfeitamente, a mesma sentença, dentro do scriptcase funciona para 4 dos 5 campos ( a sentença é a mesma, mudando apenas o valor buscado) o estranho é que se eu for neste campo lookup e trocar o campo descrição do evento contra cheque, que é o que eu desejo, pelo campo código do evento, aí carrega, apenas substituindo o campo, e aí, alguém tem alguma ideia?
Estou tentando adicionar uma imagem pra visualização mas tá difícil…
coloque aplicação em modo debug e apresente aqui o sql que não esta retornando os dados que deseja.
Boa tarde Haroldo,
Grato pelo retorno,
Não sei se é isto que pediu visto que não localizei um menu específico para fazer o debug e a geração do código fonte não liberou na tela nenhuma informação disso, mas fuçando achei o menu que exibe o código fonte da aplicação explorei o que lá tinha e achei isso:
Obs: Meu banco é SQL Server 2008 e se por exemplo trocar descricao por ref, um outro campo da tabela os dados são exibidos.
function lookup_descricao(&$conteudo , $usr_login, $Ano, $Mes, &$nm_array_retorno_lookup)
447| {
448| $nm_array_retorno_lookup = array();
449| $conteudo = “”;
450| $nm_comando = “SELECT
451| descricao
452| FROM (SELECT
453| FINANC.CHAPA,
454| FINANC.ANOCOMP AS ANO,
455| FINANC.MESCOMP AS MES,
456| CODIGO,
457| DESCRICAO,
458| PROVDESCBASE,
459| CASE WHEN PROVDESCBASE = ‘P’ THEN CAST(VALOR AS VARCHAR(10)) ELSE ’ ’ END AS PROVENTOS,
460| CASE WHEN PROVDESCBASE = ‘D’ THEN CAST(VALOR AS VARCHAR(10)) ELSE ’ ’ END AS DESCONTOS
461| FROM FINANC
462| JOIN EVENTO ON EVENTO.CODIGO=FINANC.CODEVENTO
463| AND EVENTO.CODCOLIGADA = FINANC.CODCOLIGADA
464| AND PROVDESCBASE IN ( ‘P’,‘D’)
465| AND VALOR>0
466| AND FINANC.CODCOLIGADA = 1
467| AND FINANC.NROPERIODO <>99
468| )TAB
469| WHERE CHAPA = " . $_SESSION[‘usr_login’] . "
470| AND ANO = " . $_SESSION[‘Ano’] . "
471| AND MES = " . $_SESSION[‘Mes’] . "
472| ORDER BY PROVDESCBASE DESC,CODIGO” ;
473| $_SESSION[‘scriptcase’][‘sc_sql_ult_comando’] = $nm_comando;
474| $_SESSION[‘scriptcase’][‘sc_sql_ult_conexao’] = ‘’;
475| if ($rx = $this->Db->Execute($nm_comando))
476| {
477| $y = 0;
478| $a = 0;
479| $x = 0;
480| $nm_count = $rx->FieldCount();
481| while (!$rx->EOF)
482| {
483| if ($y == 1)
484| {
485| $conteudo .= “
”;
486| $y = 0;
487| $x = 0;
488| }
489| $y++;
490| if ($x != 0)
491| {
492| $conteudo .= “”;
493| }
494| for ($x = 0; $x < $nm_count; $x++)
495| {
496| $nm_array_retorno_lookup[$a] [$x]= trim($rx->fields[$x]);
497| if ($x != 0)
498| {
499| $conteudo .= “”;
500| }
501| $conteudo .= trim($rx->fields[$x]);
502| }
503| $a++;
504| $rx->MoveNext();
505| }
506| $rx->Close();
507| }
508| elseif ($GLOBALS[“NM_ERRO_IBASE”] != 1)
509| {
510| $this->Erro->mensagem(FILE, LINE, “banco”, $this->Ini->Nm_lang[‘lang_errm_dber’], $this->Db->ErrorMsg());
511| exit;
512| }
513| }
$SC_Label = (isset($this->New_label['descricao'])) ? $this->New_label['descricao'] : "DESCRICAO";
561| if ($Cada_col == “descricao” && (!isset($this->NM_cmp_hidden[$Cada_col]) || $this->NM_cmp_hidden[$Cada_col] != “off”))
562| {
563| if (!NM_is_utf8($SC_Label))
564| {
565| $SC_Label = sc_convert_encoding($SC_Label, “UTF-8”, $_SESSION[‘scriptcase’][‘charset’]);
566| }
567| $SC_Label = str_replace(’<’, ‘<’, $SC_Label);
568| $SC_Label = str_replace(’>’, ‘>’, $SC_Label);
569| $this->Texto_tag .= “
function NM_export_descricao()
1401| {
1402| $this->descricao = html_entity_decode($this->descricao, ENT_COMPAT, $_SESSION[‘scriptcase’][‘charset’]);
1403| $this->descricao = strip_tags($this->descricao);
1404| if (!NM_is_utf8($this->descricao))
1405| {
1406| $this->descricao = sc_convert_encoding($this->descricao, “UTF-8”, $_SESSION[‘scriptcase’][‘charset’]);
1407| }
1408| $this->descricao = str_replace(’<’, ‘<’, $this->descricao);
1409| $this->descricao = str_replace(’>’, ‘>’, $this->descricao);
1410| $this->Texto_tag .= “
$this->xml_registro = “<COMPROVANTEPAGAMENTO_01.4”;
162| $this->chapa = $rs->fields[0] ;
163| $this->coligada = $rs->fields[1] ;
164| $this->contapagamento = $rs->fields[2] ;
165| $this->banco = $rs->fields[3] ;
166| $this->agencia = $rs->fields[4] ;
167| $this->dataadmissao = $rs->fields[5] ;
168| $this->endereco = $rs->fields[6] ;
169| $this->comprovante = $rs->fields[7] ;
170| $this->salario = $rs->fields[8] ;
171| $this->salario = str_replace(",", “.”, $this->salario);
172| $this->salario = (string)$this->salario;
173| $this->mat = $rs->fields[9] ;
174| $this->cnpj = $rs->fields[10] ;
175| $this->func = $rs->fields[11] ;
176| $this->cargo = $rs->fields[12] ;
177| $this->periodo = $rs->fields[13] ;
178| $this->emp = $rs->fields[14] ;
179| $this->seccao = $rs->fields[15] ;
180| $this->vt = $rs->fields[16] ;
181| $this->vr = $rs->fields[17] ;
182| $this->admissao = $rs->fields[18] ;
183| $this->sal = $rs->fields[19] ;
184| $this->bco = $rs->fields[20] ;
185| $this->ag = $rs->fields[21] ;
186| $this->cc = $rs->fields[22] ;
187| $this->cod = $rs->fields[23] ;
188| $this->descr = $rs->fields[24] ;
189| $this->reff = $rs->fields[25] ;
190| $this->prov = $rs->fields[26] ;
191| $this->desco = $rs->fields[27] ;
192| $this->salbase = $rs->fields[28] ;
193| $this->salinss = $rs->fields[29] ;
194| $this->totprov = $rs->fields[30] ;
195| $this->totdesc = $rs->fields[31] ;
196| $this->basefgtss = $rs->fields[32] ;
197| $this->fgtsdomes = $rs->fields[33] ;
198| $this->baseir = $rs->fields[34] ;
199| $this->liq = $rs->fields[35] ;
200| $this->funcionario = $rs->fields[36] ;
201| $this->nome = $rs->fields[37] ;
202| $this->descricao = $rs->fields[38] ;
203| $this->endd = $rs->fields[39] ;
Modo debug:
Aplicação > Configuração.
Ativar Modo debug ( Sim )
Executar aplicação.
Não me lembro (posso estar falando besteira), mas os nomes da coluna não devem estar na mesma caixa como foram criados originalmente?
SELECT DESCRICAO em vez de SELECT Descricao?
Oi Haroldo,
Eu havia escrito em caixa alta antes e não funcionava, mas por desencargo alterei e gerei de novo…vai que fosse isso?
Mas continua a mesma coisa, marquei a opção orientada pelo Ronyan, aliás obrigado, e retornou a sentença depois de alterada:
(mssql):
SELECT DESCRICAO
FROM (SELECT FINANC.CHAPA,
FINANC.ANOCOMP AS ANO,
FINANC.MESCOMP AS MES,
CODIGO,
DESCRICAO,
PROVDESCBASE,
CASE WHEN PROVDESCBASE = ‘P’ THEN CAST(VALOR AS VARCHAR(10)) ELSE ’ ’ END AS PROVENTOS,
CASE WHEN PROVDESCBASE = ‘D’ THEN CAST(VALOR AS VARCHAR(10)) ELSE ’ ’ END AS DESCONTOS
FROM FINANC
JOIN EVENTO ON EVENTO.CODIGO=FINANC.CODEVENTO
AND EVENTO.CODCOLIGADA = FINANC.CODCOLIGADA
AND PROVDESCBASE IN ( ‘P’,‘D’),
AND VALOR>0
AND
FINANC.CODCOLIGADA = 1
AND FINANC.NROPERIODO <>99 )TAB
WHERE CHAPA = 00005435
AND ANO = 2016
AND MES = 8
ORDER BY PROVDESCBASE DESC,CODIGO
vc pode criar uma view desse???:
SELECT FINANC.CHAPA,
FINANC.ANOCOMP AS ANO,
FINANC.MESCOMP AS MES,
CODIGO,
DESCRICAO,
PROVDESCBASE,
CASE WHEN PROVDESCBASE = ‘P’ THEN CAST(VALOR AS VARCHAR(10)) ELSE ’ ’ END AS PROVENTOS,
CASE WHEN PROVDESCBASE = ‘D’ THEN CAST(VALOR AS VARCHAR(10)) ELSE ’ ’ END AS DESCONTOS
FROM FINANC
JOIN EVENTO ON EVENTO.CODIGO=FINANC.CODEVENTO
AND EVENTO.CODCOLIGADA = FINANC.CODCOLIGADA
AND PROVDESCBASE IN ( ‘P’,‘D’),
AND VALOR>0
AND
FINANC.CODCOLIGADA = 1
AND FINANC.NROPERIODO <>99 )
Boa tarde,
Haroldo,
Obrigado pela ajuda, mas eu só consegui resolver refazendo a aplicação, não toda, peguei um export que havia feito, importei para um projeto novo e aí funcionou, só fica a frustração de não conseguir entender o que ocorreu.
vou te dizer uma coisa que acontece e é bom entender para tomar cuidado nas proximas vezes.
quando vc cria um select em consulta ou report pdf o sc guarda cada cooluna do select em registros separadas dentro de sua base:
Ex: Selec 1+1 as soma …
ele vai criar um registro com o nome da coluna (soma) e vai guardar a expressão 1+1 em outro campo desse registro.
Se vc mudar o select para 1+2 as soma …
ele vai entender que o select não foi alterado e não vai atualizar suas bases.
hoje, eu acho que para funcionar essa alteração vc deve excluir a colunar soma, salvar e cria-la novamente.
em versões anteriores nem isso funcionava. ou tínhamos que recriar a aplicação ou acertar direto na base do sc (o que é um risco para quem não conhece).