[firebase-br] RES: insert/update/delete usando argumento string.

Carlos H. Cantu listas em warmboot.com.br
Ter Set 21 11:20:17 -03 2010


Essa "limitação" que vc reporta não existe. Se tanto o parametro, como
o campo, são varchar(20), ele tem que encontrar, a não ser que seja um
bug da versão especifica do FB que vc está usando.

[]s
Carlos H. Cantu
www.FireBase.com.br - www.firebirdnews.org
www.warmboot.com.br - blog.firebase.com.br

CS> Pessoal!

CS> Vi uma luz no fim do túnel...

CS> O que está acontecendo é o seguinte, tanto no select, update, insert..etc:

CS> Meu campo na tabela (nr_serie_impressora) foi definido como varchar(20),
CS> quando eu passo como parametro uma variável como no exemplo abaixo:

CS> select cd_empresa from impressora where nr_serie_impressora = :ls_msg;

CS> ele não encontra registro, isso pq passei na ls_msg os 20
CS> caracteres... '01234567890123456789'

CS> agora se eu der um update na base tirando o ultimo caracter e executar o mesmo comando, porém
CS> com 19 caracteres.. ele irá encontrar o registro.

CS> ls_msg = '0123456789012345678'

CS> select cd_empresa from impressora where nr_serie_impressora = :ls_msg;

CS> Ou seja, o que tá acontecendo é que não posso passar por
CS> argumento o total de caracteres que o 
CS> campo possui.. ou seja, se o campo é varchar(20) não posso passar
CS> os 20 caracteres na variavel de parametro... se eu colocar fixo,
CS> encontra... como no exemplo abaixo:

CS> select cd_empresa from impressora where nr_serie_impressora = '01234567890123456789';

CS> mas com o parametro ele não aceita.. nem select, nem update e nem insert...

CS> Tenho um campo id_situacao varchar(1)

CS> quando faço o comando abaixo passando no parametro ls_msg = 'B',
CS> ele dá update, mas joga valor null no id_situacao:

CS> update impressora set id_situacao = :ls_msg;

CS> Se puderem me ajudar, agradeço muito.

CS> Clayton Silva





CS> ----- Mensagem original -----
CS> De: Jose Aparecido da Silva - Fasystem <listas em fasystem.com.br>
CS> Para: 'FireBase' <lista em firebase.com.br>
CS> Enviadas: Mon, 20 Sep 2010 22:54:16 -0300 (GMT-03:00)
CS> Assunto: [firebase-br] RES:  insert/update/delete usando argumento string.


CS> Provavelmente voce definiu o campo como char.
CS> Esse tipo de campo guarda o conteúdo que você gravou e preenche o restante
CS> do campo com espaços. Ex: 
CS> Campo char(10) e você atribui o valor '1'. No campo ele será guardado assim:
CS> '1         '. Entendeu? 
CS> Provavelmente seja esse o problema.

CS> [ ]'s
CS> Jose Aparecido da Silva
CS> Fasystem


CS> -----Mensagem original-----
CS> De: lista-bounces em firebase.com.br
CS> [mailto:lista-bounces em firebase.com.br] Em
CS> nome de Clayton Silva
CS> Enviada em: segunda-feira, 20 de setembro de 2010 18:54
CS> Para: FireBase
CS> Assunto: Re: [firebase-br] insert/update/delete usando argumento string.

CS> Renan,

CS> Primeiro quero agradecer a atenção...

CS> mas o que você me disse, não deu certo...

CS> este comando não é executado dentro de uma procedure e sim dentro de uma
CS> função na
CS> minha aplicação... e o que me deixa mais intrigado é que quando é um campo
CS> numerico na 
CS> base de dados... encontra o registro corretamente... por exemplo:

CS> se executo isso: 
CS> long ll_empresa
CS> ll_empresa = 1
CS> select * from impressora_fiscal where cd_empresa = :ll_empresa;

CS> este comando... ele encontra na base, mas se o campo for string na base de
CS> dados nao encontra.

CS> Entendeu? Acredito que o problema seja a STRING, mas sinceramente, não sei o
CS> que pode ser...
CS> e nao estou conseguindo resolver...

CS> Se puder me ajudar, agradeço..

CS> Clayton Silva


CS> ----- Mensagem original -----
CS> De: Renan Cruz de Almeida <renan.aju em terra.com.br>
CS> Para: FireBase <lista em firebase.com.br>
CS> Enviadas: Sat, 18 Sep 2010 09:56:24 -0300 (GMT-03:00)
CS> Assunto: Re: [firebase-br] insert/update/delete usando argumento string.



CS> Prezado, se lembro bem, a variável dentro da procedure não deveria ser
CS> referendada com os dois pontos ...

CS> 2- ls_msg = 'ABC123'

CS>      select * from impressora_fiscal where nr_serie_impressora = :ls_msg;


CS> Deveria ser :

CS> 2- ls_msg = 'ABC123'

CS>      select * from impressora_fiscal where nr_serie_impressora = ls_msg;




CS> E no caso os dois pontos você usará quando a variável for parâmetro da
CS> procedure ...

CS> create procedure impressora(ls_msg varchar(6))
CS> ...
CS> ...
CS> as
CS> begin
CS>   ...
CS>   ....
CS>   select * from impressora_fiscal where nr_serie_impressora = :ls_msg;
CS>   ....
CS>   ...
CS> end



CS> Espero ter ajudado.

CS> []'s
CS> Renan


>> Pessoal, boa tarde!
>>
>>
>>
>> Estou com o seguinte problema,
>>
>> Quando executo o comando 1 na minha função, ele retorna o registro
>> encontrado,
>>
>> 1 - Select * from impressora_fiscal where nr_serie_impressora = 'ABC123';
>>
>>
>>
>> Porém se passo uma variavel ou estrutura (comando 2) é retornado do banco
>> que não encontrou o registro, SQLCODE = 100 e SQLDBCODE = 3
>>
>> 2- ls_msg = 'ABC123'
>>
>>      select * from impressora_fiscal where nr_serie_impressora = :ls_msg;
>>
>>
>>
>> Se faço o comando 3, ele realiza update corretamente...
>>
>> 3 - Update impressora_fiscal set id_situacao = 'P'
>>
>>       where nr_serie_impressora = 'ABC123';
>>
>>
>>
>> Se faço o comando 4, ele realiza o update SQLCODE = 0 e SQLNROWS = 1,
CS> porém
>>
>> na base ele muda o id_situacao para nulo...
>>
>> 4 - ls_msg = 'ABC123'
>>
>>       Update impressora_fiscal set id_situacao = :ls_msg
>>
>>       where nr_serie_impressora = 'ABC123';
>>
>>
>>
>> Ou seja, não consigo fazer update nem select utilizando estrutura ou uma
>> variável que vem populada de outra função, desde que o campo na tabela
CS> seja
>> string....já que os comandos 5 e 6 funcionam corretamente...
>>
>> 5 - update impressora_cupom_fiscal set id_nota_fiscal = id_nota_fiscal +
>> 1000;
>>
>> 6 - astr_impressora_cupom_fiscal.id_nota_fiscal = 1000
>>
>>       update impressora_cupom_fiscal set id_nota_fiscal = id_nota_fiscal -
>> :astr_impressora_cupom_fiscal.id_nota_fiscal;
>>
>>
>>
>> Com isso detectei que o problema é com string... mas sinceramente... to
>> doido aqui...
>>
>> nao sei o q pode ser...
>>
>>
>>
>> Se alguem puder me ajudar,,, desde já agradeço..
>>
>>
>>
>>
>> Max Ferreira Silva
>> Telefone: +55 (34) 3235-9233
>>
>> informa em informasistemas.com.br
>> informaic em netsite.com.br
>>
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
CS> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>>
>>
CS> ----------------------------------------------------------------------------
CS> -----------------------
>> Texto inserido por Panda IS 2010:
>>
>>   Trata-se de uma mensagem não solicitada (SPAM), clique no link para
CS> classificá-la novamente:
CS> http://localhost:6083/Panda?ID=pav_5510&SPAM=true&path=C:\Documents%20and%20
CS> Settings\renan\Configurações%20locais\Dados%20de%20aplicativos\Panda%20Secur
CS> ity\Panda%20Internet%20Security%202010\AntiSpam
>>
CS> ----------------------------------------------------------------------------
CS> -----------------------
>>
>>



CS> ______________________________________________
CS> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
CS> Para saber como gerenciar/excluir seu cadastro na lista, use:
CS> http://www.firebase.com.br/fb/artigo.php?id=1107
CS> Para consultar mensagens antigas: http://firebase.com.br/pesquisa


CS> ______________________________________________
CS> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
CS> Para saber como gerenciar/excluir seu cadastro na lista, use:
CS> http://www.firebase.com.br/fb/artigo.php?id=1107
CS> Para consultar mensagens antigas: http://firebase.com.br/pesquisa



CS> ______________________________________________
CS> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
CS> Para saber como gerenciar/excluir seu cadastro na lista, use:
CS> http://www.firebase.com.br/fb/artigo.php?id=1107
CS> Para consultar mensagens antigas: http://firebase.com.br/pesquisa


CS> ______________________________________________
CS> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
CS> Para saber como gerenciar/excluir seu cadastro na lista, use:
CS> http://www.firebase.com.br/fb/artigo.php?id=1107
CS> Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista