Copy(Campo,1,1) em SQL ???

Firebird

17/03/2006

Olá porgramadores,
Como faço para determinar os valores a serem somados em um plano de contas? O campo de Valor é único, não tem campo para Débito ou Crédito. O sistema entende que créditos são todas as contas iniciadas por ´1´ e débitos todas as contas iniciadas por ´2´. As contas são tipo 1.1.00.001 ou 2.2.01.001.

A instrução SQL:
with qSoma do begin
   Close;
   SQL.Text := ´Select Sum(Valor) as pEntradas from CaixaLanca where Copy(Conta,1,1) = "1" ´;
   Open;
end;
ShowMessage(FormatFloat(´#,.00´, qSoma.FieldByName(´pEntradas´).AsCurrency));


Más está dando erro!

Qualquer ajuda será muito vem vinda.

Augusto.


Zangado

Zangado

Curtidas 0

Respostas

Denis

Denis

17/03/2006

Olá,

Não existe a função copy no sql. Qual o banco de dados está usando ? Existem funções para isso. Cada banco trabalha de uma forma.
Por exemplo. no sql server seria assim :

Select Sum(Valor) as pEntradas from CaixaLanca where substring(Conta,1,1) = ´1´


GOSTEI 0
Angelnoa

Angelnoa

17/03/2006

Em Informix, por exemplo, vc poderia fazer assim:
´Select SUM(Valor) as pEntradas from CaixaLanca where Conta[1,1] = "1" 



GOSTEI 0
Acacio

Acacio

17/03/2006

Existe sim, Coloca assim
substring(campo from 1 for 4)
por exemplo

Exemplo
select subtring(nomCli from 1 for 10)
from tabcli

Vai aparecer 10 caracteres no nome do cliente


GOSTEI 0
Martins

Martins

17/03/2006

Existe sim, Coloca assim substring(campo from 1 for 4) por exemplo Exemplo select subtring(nomCli from 1 for 10) from tabcli Vai aparecer 10 caracteres no nome do cliente


A solução com [b:29b8c1ea9b]Substring[/b:29b8c1ea9b] funciona sim, agora, temos q ver qual o banco de dados do colega.


GOSTEI 0
Sremulador

Sremulador

17/03/2006

será que tem pro firebird alguma coisa assim ?


GOSTEI 0
Denis

Denis

17/03/2006

Para firebird use :

Substr(campo,1,1)


GOSTEI 0
Thomaz_prg

Thomaz_prg

17/03/2006

Para firebird use : Substr(campo,1,1)


Isso se você quiser usar UDF´s (que acompanhm o Firebird) senão pode usar a função nativa mesmo:

select substring(campo from 1 to 1) from tabela



GOSTEI 0
Martins

Martins

17/03/2006

[quote:d4f27c85d8]Para firebird use : Substr(campo,1,1)


Isso se você quiser usar UDF´s (que acompanhm o Firebird) senão pode usar a função nativa mesmo:

select substring(campo from 1 to 1) from tabela
[/quote:d4f27c85d8]

verdade amigo [b:d4f27c85d8]thomaz_prg[/b:d4f27c85d8], acho mais negócio usar a função nativa.

valew!!!


GOSTEI 0
Mmoreira

Mmoreira

17/03/2006

O correto nao seria:

select substring(campo from 1 for 1) from tabela



GOSTEI 0
Thomaz_prg

Thomaz_prg

17/03/2006

Verdade.... :lol:

Desculpem a falha. :oops:


GOSTEI 0
POSTAR