[firebase-br] RES: Array no firebird

MAR - Secretario Geral da ACRA secretariadogeral em acra.pt
Qua Jan 25 14:26:46 -03 2012


Não companheiro,

O problema é numa Store Procedure que procersse um ficheiro Ascii (flat
file) que me é enviado de formar mas que domino o ofrmato e os tipos de
registo. Chama-se PS2 (short para "PSC-Prestação de Serviço a Clientes que
na versão 2 passou a PS2).
Por exemplo os registo tipo 2 tratam pagamentos. Te *mando* um exemplo:

"PS2"=TIPO DE FICHEIRO 3 BYTES
    "2"=TIPO DE REGISTO  1
   "61"=TIPO DE SERVIÇO 2bytes
   "00"= Tipo de Erro (00 não há erro foi paga) 2 bytes

mas depois os erros vão do 00-a-23 e como tenho de processar o ficheiro com
For Select.....do begin end evitava uma 2.ª Procedure e ia acomulando para
um array de numerc(18,2) os valores de cada erro.
PS2261000112900000000256666633000000000100000000001316        ACRA02 2011
QTA00
PS2261030112900000004587777640000000000100000000089586        ACRA02 2011
QTA00
PS2261000112900000124444698650000000000100000000090265        ACRA02 2011
QTA00
PS2261030112900004529254727005000000000100000000090459        ACRA02 2011
QTA00
PS2261060112900001234588890887000000000100000000093757        ACRA02 2011
QTA00
PS2261060112900000012345688805000000000100000000105882        ACRA02 2011
QTA00
PS2261030112900000001236554676000000000100000000107143        ACRA02 2011
QTA00
PS2261100112900000203212222221000000000100000000107725        ACRA02 2011
QTA00
Assim vou recorrer a uma segunda Procedure com  um:

Select CodigoErro,sum(ValorTotalPago) from ficheiro
Group By CodigoErro





2012/1/25 Felix - SOL Informática <felix em soltecnologia.com.br>

> Não entendi a dificuldade, pois estou visualizando o seguinte:
>
> Cliente marca em um grid (?) os códigos:
> [X] 2F
> [X] 5D
> [X] 6R
>
> xcondicao := '';
> while not TabeladoGrid.Eof do
>        if campo_ta_marcado then
>                xcondicao := xcondicao +
> quotedstr(tabeladogrid.fieldbyname('codigo').asstring) + ', ';
>        tabeladogrid.next;
> end;
> if xcondicao <> '' then
>        Xcondicao := ' where codigo in (' +
> Copy(xcondicao,1,length(xcondicao)-2) +')';
>
> Query.sql.close;
> Query.sql.clear;
> Query.sql.add('select * from tabela'+xcondicao);
> Query.Open;
>
> Ou algo parecido. Não funcionaria ?
>
> Fco. Felix
> www.soltecnologia.com.br
>
> -----Mensagem original-----
> De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br]
> Em
> nome de Hélio Oliveira
> Enviada em: quarta-feira, 25 de janeiro de 2012 12:09
> Para: lista em firebase.com.br
> Assunto: Re: [firebase-br] Array no firebird
>
> Boa tarde Rafael!
>
> A forma de você conseguir isto é através de uma SP onde você passa os
> paramentros para mesma.
>
> Internamente na sua SP você monta a estrutura de sua consulta e faz um
> execute statement.
>
> > Bom dia amigos
> >
> >
> >
> > Espero conseguir explicar minha duvida que é a seguinte:
> >
> > Quero trazer na consulta todos os cadastro que possuam determinados
> > códigos,
> >
> >           Ex: 2F,5D,6R e 8S somente
> >
> >
> >
> > Até aí beleza,
> >
> >           WHERE CODIGO IN ('2F','5D','6R','8S')
> >
> >
> >
> > Mas a dificuldade está que preciso que receba os valores que o usuário
> > scolher, É uma consulta personalizável, a qual o usuário escolhe na
> > tela quais códigos ele quer.
> >
> >
> >
> > Tentei com parâmetro
> >
> >           WHERE CODIGO IN (:CODIGOS)
> >
> >
> >
> > Mas nada feito, firebird aceita apenas um valor por vez.
> >
> > Procurei por array no firebird, mas o que encontrei até agora não
> > consegui entender direito.
> >
> >
> >
> > Gostaria de saber se alguém já montou algo parecido, ou se tem alguma
> > ideia de como solucionar esse caso.
> >
> >
> >
> > Agradeço desde já a atenção.
> >
> >
> >
> > []s
> >
> >
> >
> > Rafael Voltani
> >
> > Firebird 2.5
> >
> > Delphi 2010
> >
> >
> >
> >
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
>
>
> --
> []'s,
>
> Hélio Oliveira
> Bel. Ciência da Computação
> Técnico em Contabilidade
> e-mail : hpensador em gmail.com
> Skype : hpensador
> http://hpensador.blogspot.com/
> www.hpensador.net
> (71) 9975-9176
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



-- 
Com os meus melhores cumprimentos
Mário  Reis

Esta mensagem contém informação de natureza confidencial e é
exclusivamente dirigida ao(s) destinatário(s) indicado(s). Se, por engano,
receber este email agradecemos que não o copie nem o reenvie e que nos
notifique do ocorrido através do email de resposta.



Mais detalhes sobre a lista de discussão lista