Fórum type mismatch in expression! esse erro de novo #142096

28/02/2003

0

uso um banco de dados DBF
e toda a vez que chamo o evento
dá o seguinte errro:´ type mismatch in expression´
c1,d1,a1:Integer;
begin
som.Close;
som.SQL.Clear;
som.SQL.Add(´Select count(valor) as Hq,Sum(VALOR)As TOTAL´);
som.SQL.Add(´From VENDAS1´);
som.SQL.Add(´Where MES =´+MES1.Text);
som.Open;
a1:= som.fieldbyname(´TOTAL´).asInteger;
d1:= som.fieldbyname(´Hq´).asInteger;
Valo.Caption:=FormatFloat(´R$ #,,0.00 ´, a1);
Liq1.Caption:=FormatFloat(´R$ ,,0.00 ´, c1);
QNT1.Caption:=FormatFloat(´,,0´, d1);
som.Close;


Well

Well

Responder

Posts

28/02/2003

Anonymous

Experimenta em vez de Integer, declara as variáveis como Double. E em vez de .asinteger use .asfloat


Responder

Gostei + 0

03/03/2003

Anonymous

som.SQL.Add(´Select count(valor) as Hq,Sum(VALOR)[color=red:6cec6a5286] As [/color:6cec6a5286]TOTAL´);


Responder

Gostei + 0

03/03/2003

Aroldo Zanela

uso um banco de dados DBF e toda a vez que chamo o evento dá o seguinte errro:´ type mismatch in expression´ c1,d1,a1:Integer; begin som.Close; som.SQL.Clear; som.SQL.Add(´Select count(valor) as Hq,Sum(VALOR)As TOTAL´); som.SQL.Add(´From VENDAS1´); som.SQL.Add(´Where MES =´+MES1.Text); som.Open; a1:= som.fieldbyname(´TOTAL´).asInteger; d1:= som.fieldbyname(´Hq´).asInteger; Valo.Caption:=FormatFloat(´R$ #,,0.00 ´, a1); Liq1.Caption:=FormatFloat(´R$ ,,0.00 ´, c1); QNT1.Caption:=FormatFloat(´,,0´, d1); som.Close;


Caro Well,

Não há nada de errado com seu código, pois não é necessário um espaço entre o fechar parentese e o ´As´, bem como, os valores do tipo currency obtidos na consulta SQL são truncados para inteiro pelo método AsInteger.
A única ´coisa estranha´ é a declaração de C1 para inteiro e no fragmento enviado não há nenhuma atribuição para o mesmo.
Qual a versão do Delphi? Em que linha o depurador interrompe?

var i: Integer;
begin
  query1.Close;
  query1.SQL.Clear;
  query1.SQL.Add(´SELECT sum(salary)as Salario´);
  query1.SQL.Add(´FROM  Employee´);
  query1.SQL.Add(´WHERE EmpNo >= ´+Edit1.Text);
  query1.Open;
  i := query1.Fields[0].AsInteger;
  pnlValor.Caption := FormatFloat(´R$ ,0.00;R$ (,0.00)´,i);



Se algém mais quise ´tentar´, segue o DFM:
  object Button1: TButton
    Left = 22
    Top = 40
    Width = 75
    Height = 25
    Caption = ´Button1´
    TabOrder = 0
    OnClick = Button1Click
  end
  object pnlValor: TPanel
    Left = 158
    Top = 20
    Width = 185
    Height = 41
    Caption = ´pnlValor´
    TabOrder = 1
  end
  object Edit1: TEdit
    Left = 56
    Top = 90
    Width = 121
    Height = 21
    TabOrder = 2
    Text = ´Edit1´
  end
  object Query1: TQuery
    DatabaseName = ´DBDEMOS´
    Left = 258
    Top = 104
  end



Responder

Gostei + 0

03/03/2003

Cdaraujo

Caro amigo,

O que tá acontecendo contigo, é que, vc está tentando somar uma coluna que não é número, pra vc usar esse tipo de função é necessário uma coluna do tipo número.

SELECT SUM(TIPO NÚMERO) FROM TABELA

Atenciosamente,

Daniel Araújo
ICQ:111769805
www.cdinformatica.hpg.com.br

uso um banco de dados DBF e toda a vez que chamo o evento dá o seguinte errro:´ type mismatch in expression´ c1,d1,a1:Integer; begin som.Close; som.SQL.Clear; som.SQL.Add(´Select count(valor) as Hq,Sum(VALOR)As TOTAL´); som.SQL.Add(´From VENDAS1´); som.SQL.Add(´Where MES =´+MES1.Text); som.Open; a1:= som.fieldbyname(´TOTAL´).asInteger; d1:= som.fieldbyname(´Hq´).asInteger; Valo.Caption:=FormatFloat(´R$ #,,0.00 ´, a1); Liq1.Caption:=FormatFloat(´R$ ,,0.00 ´, c1); QNT1.Caption:=FormatFloat(´,,0´, d1); som.Close;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar