erro ao alterar sql em reportPDF

(LuizMarin) #1

amigos,

criei um reportPDF, meu primeiro relatorio desde que conheci o ScriptCase. Após criar o dito, fui em “SQL” e apaguei um campo que não quero. O que acontece, acontece para qualquer tabela.

tira teima: peguei outro projeto, bem diferente, criei um reportpdf, exclui um unico campo do sql e mandei gravar.

paff…!!!

Fatal error: Call to a member function GetTag() on a non-object in /opt/nm/www/scriptcase/devel/class/interface/nmApplication.class.php on line 7968

por favor, estou travado com essa coisa.

alguém já passou por isso?

(Haroldo) #2

Sim, temos tópicos aqui relacionados.
Fiz a notificação ao fabricante, e me informaram que a correção estaria na próxima release.

Como solução de contorno, estou estendendo o sql com a sc_lookup no código.

(LuizMarin) #3

interessante, mas isso nao te acrescenta os campos na árvore de “Campos” para voce poder mudar as caracteristicas dele. Como faz entao ?

(Haroldo) #4

Não utilizo a interface nem os campos. Faço manualmente (www.fpdf.org/)
Nada impede de você criar o campo manualmente, alimentá-lo com o resultado do select alternativo, ir em interface e criar uma célula lá e relacioná-la ao campo criado.

(LuizMarin) #5

então vamos ver se o nego aqui aprende a fazer isso…

se tiver dicas estou ouvindo

obrigado

abraços

ps. parece que sai release com correção disso na segunda-feira, mais ou menos.

(LuizMarin) #6

haroldo,

voce teria como ceder apenas uma parte de como voce preenche o item “Codigo” do “Layout PDF” ?

quero criar os campos adicionais porem a dificuldade esta em o que colocar ali (se é que é ali). Um trecho de codigo ajuda a visualizar a forma de estruturar as coisas ali. Lembrando que sou bem xucro em sc ainda…

obrigado

ps. novo release sai lá por segunda corrigindo esse problema.

(Haroldo) #7

LayOut PDF/Código :

$this->Codigo();

Método PHP Codigo:

$this->Pdf->AliasNbPages("@TotPag");
[maxlines]=28;
$PAGINA=1;
$LINHA=0;
$ITENS=0;
$PEDIDOID=[Pedido__Id];
sc_select(ds,
“SELECT ProdutoCodigo,Descricao,Quantidade,Unidade,PrecoUnitario”
.",ROUND((1-(ValorItem/(Quantidade*PrecoUnitario)))*100.00,2),ValorItem"
." FROM pedido_itens"
." WHERE PedidoId = ‘$PEDIDOID’");
If (!Empty($ds)){
while (!$ds->EOF){
$LINHA++;
$ITENS++;
IF ($LINHA==1) {
MontaPreImpresso($PAGINA);
MontaCabecalho();
}
$LINHA=$LINHA+(MontaItem($ds->fields[0],$ds->fields[1],$ds->fields[2],$ds->fields[3],$ds->fields[4],$ds->fields[5],$ds->fields[6],$LINHA));
IF ($LINHA>=[maxlines]) {
IF ($PAGINA==1) MontaTotais();
$PAGINA++;
[maxlines]=38;
PrintCell(05,290,‘Pag ‘.$this->Pdf->PageNo().’/@TotPag’,200,2,‘C’,“Arial,I,8”);
PrintCell(05,290,“Continua na proxima página–>”,205,2,“R”,“Arial,I,7,90”);
IF ($ITENS<{total_itens}) $this->Pdf->AddPage();
$LINHA=0;
}
$ds->MoveNext();
}
$ds->Close();
}
IF ($PAGINA==1 && $LINHA<[maxlines] ) MontaTotais();
PrintCell(05,290,‘Pag ‘.$this->Pdf->PageNo().’/@TotPag’,205,2,‘C’,“Arial,I,8”);

Metodo PHP PrintCell: function PrintCell($x, $y, $txt, $w, $h, $align=‘L’, $font=’’, $multcell=‘N’)

$align=($align==‘0’)?“L”:$align;
$x=$x==0?$this->Pdf->GetX():$x;
$y=$y==0?$this->Pdf->GetY():$y;
$h=$h==‘0’?1:$h;
If (!Empty($font)) {
$font=explode(",",$font);
$this->Pdf->SetFont($font[0],$font[1],$font[2]);
IF (ISSET($font[3])) {
$font[3]=explode(";",$font[3]);
IF (!ISSET($font[3][1])) $font[3][1]=$font[3][0];
IF (!ISSET($font[3][2])) $font[3][2]=$font[3][0];
$this->Pdf->SetTextColor($font[3][0],$font[3][1],$font[3][2]);
}
}

If ($multcell!=‘S’) {
$this->Pdf->SetXY($x,$y);
$this->Pdf->Cell($w,$h,$txt,0,0,$align);
}Else{
$this->Pdf->SetXY($x,$y-($h/2));
$this->Pdf->MultiCell($w,$h,$txt,0,$align);
}

esse app rodando:
utilize pedido__id =1 (não tem imagem de fundo, o layout e desenvolvido todo com código php e recursos da classe fpdf)

http://iw.servehttp.com:8081/sc/iw/app/ERP/vendasPedido_pdf/vendasPedido_pdf_teste.php

(LuizMarin) #8

saudade do clipper…

(Haroldo) #9

Obs.: Fiz alterações no post anterior.

(LuizMarin) #10

muito dez o exemplo haroldo.

percebo que dá para fazer maravilhas nos relatórios com esses recursos. Hoje estou meio sem tempo (estarei fora), porém, vou me dedicar a aprender um pouco mais sobre fpdf utilizando seu exemplo.

novamente,

muito obrigado!

(LuizMarin) #11

nesse dito relatorio tenho os campos normais fornecidos pelo sql.

no entanto, necessito repetir a mesma informações de um ou outro campo em outras partes do formulario.
imagino que devo criar outro campo, por exemplo, cmp_endereco1. Mas como repetir a atribuição?

Veja:

$cell_cmp_sacado = $cell_sacado;
$cell_cmp_endereco1 = $cell_endereco1;
$cell_cmp_endereco2 = $cell_endereco2;

da direita do “=” são os campos fornecidos pelo sql. Desejo reatribuir seus valores em outras variáveis para impressão (ou cálculos, que seja).

como fazer isso ?