Type Mismatch in expression?

18/12/2003

1

Galera....

O Lance é o seguinte:

Tenho uma tabela usada por dois formularios, um de consulta e um de inclusao. Ultimamente troquei o TABLE pelo QUERY, mas agora qdo debugo da um erro assim:

Type Mismatch in expression?


Ja mudei todas as propriedas para o Query ao inves do Table mas mesmo assim ta dando o erro...ja setei as propriedades do DataSource e do Query tb...

Talvez seja uma coisinha boba....

Desde Ja Agradeço

Abraços
Joe Ventrue


Responder

Posts

19/12/2003

Excon

Olá;

Mande-me o código para eu analizar e ver se consigo te ajudar.


Responder

19/12/2003

Nigro

Tipos incompatíveis.
Isso ocorre, quando por exemplo você tentar utilizar campos de tipos diferentes na cláusula where, por exemplo
SELECT * FROM A.NOME, B.SALARIO
FROM FUNCIONARIOS A, BANCO B
WHERE A.NOME = B.SALARIO <<< aqui está o erro, na igualdade de sum campo string com um numérico, mas esse é apenas um exemplo.


Responder

19/12/2003

Imoreira

[color=red:3e29419da4]WHERE A.NOME = B.SALARIO[/color:3e29419da4]

Esta mensagem de erro só acontece se você quizer usar dois tipos difetentes de campos.
Por exemplo nome=string salario=numérico.


Responder

19/12/2003

Joe Ventrue

quando eu debugo ele acusa o seguinte form:

Application.CreateForm(Tfrm_mov_inc, frm_mov_inc);


Olha o codigo dessa Unit:

unit Unit11; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Mask, DBCtrls, Buttons; type Tfrm_mov_inc = class(TForm) Panel1: TPanel; Panel2: TPanel; Panel3: TPanel; Label2: TLabel; DBEdit2: TDBEdit; Label3: TLabel; DBEdit3: TDBEdit; Label1: TLabel; DBEdit4: TDBEdit; Label4: TLabel; DBEdit5: TDBEdit; Label5: TLabel; DBEdit6: TDBEdit; DBEdit7: TDBEdit; BitBtn1: TBitBtn; BitBtn2: TBitBtn; BitBtn3: TBitBtn; BitBtn4: TBitBtn; Label6: TLabel; GroupBox1: TGroupBox; RadioButton1: TRadioButton; RadioButton2: TRadioButton; RadioButton3: TRadioButton; RadioButton4: TRadioButton; Label7: TLabel; DBEdit8: TDBEdit; Label8: TLabel; DBEdit9: TDBEdit; Label9: TLabel; DBEdit10: TDBEdit; Label10: TLabel; Label11: TLabel; DBEdit1: TDBEdit; procedure FormKeyPress(Sender: TObject; var Key: Char); procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); procedure BitBtn3Click(Sender: TObject); procedure BitBtn4Click(Sender: TObject); procedure DBEdit3Enter(Sender: TObject); procedure FormActivate(Sender: TObject); procedure DBEdit9Enter(Sender: TObject); procedure RadioButton1Click(Sender: TObject); procedure RadioButton2Click(Sender: TObject); procedure RadioButton3Click(Sender: TObject); procedure RadioButton4Click(Sender: TObject); procedure DBEdit6Exit(Sender: TObject); procedure DBEdit10Exit(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var frm_mov_inc: Tfrm_mov_inc; implementation uses Unit2; {$R *.DFM} procedure Tfrm_mov_inc.FormKeyPress(Sender: TObject; var Key: Char); begin //funcao para substituir TAB por ENTER if Key = #13 then begin Key := 0; Perform(WM_NEXTDLGCTL, 0, 0); end end; procedure Tfrm_mov_inc.BitBtn1Click(Sender: TObject); begin dm.qr_vom.Post; frm_mov_inc.Close; end; procedure Tfrm_mov_inc.BitBtn2Click(Sender: TObject); begin dm.qr_vom.post; frm_mov_inc.Close; end; procedure Tfrm_mov_inc.BitBtn3Click(Sender: TObject); begin dm.qr_vom.delete; frm_mov_inc.Close; end; procedure Tfrm_mov_inc.BitBtn4Click(Sender: TObject); begin dm.qr_vom.cancel; frm_mov_inc.Close; end; procedure Tfrm_mov_inc.DBEdit3Enter(Sender: TObject); begin DBEdit3.text:=DateToStr(Date); end; procedure Tfrm_mov_inc.FormActivate(Sender: TObject); var data:string; oficial:string; begin //funcao pra manutencao de data label10.caption:=DatetoStr(date); data:=label10.caption; oficial:=FormatDateTime(´dd´, StrtoDate(Data)); label11.caption:=oficial; //Atribui operacao DBEdit7.Text:=´EC´; end; procedure Tfrm_mov_inc.DBEdit9Enter(Sender: TObject); begin DBEdit9.Text:=DateToStr(StrToDate(DBEdit3.Text)+30); end; procedure Tfrm_mov_inc.RadioButton1Click(Sender: TObject); begin DBEdit7.Text:=´EC´; end; procedure Tfrm_mov_inc.RadioButton2Click(Sender: TObject); begin DBEdit7.Text:=´SC´; DBEdit5.Text:=FloatToStr(StrtoFloat(DBEdit5.Text)-(2*StrtoFloat(DBEdit5.Text))); end; procedure Tfrm_mov_inc.RadioButton3Click(Sender: TObject); begin DBEdit7.Text:=´CR´; end; procedure Tfrm_mov_inc.RadioButton4Click(Sender: TObject); begin DBEdit7.Text:=´CP´; end; procedure Tfrm_mov_inc.DBEdit6Exit(Sender: TObject); begin DBEdit8.SetFocus; end; procedure Tfrm_mov_inc.DBEdit10Exit(Sender: TObject); begin BitBtn1.SetFocus; end; procedure Tfrm_mov_inc.FormCreate(Sender: TObject); begin //Atribui operacao DBEdit7.Text:=´EC´; end; end.


o q acham?

tem ainda o outro form:

unit Unit10; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, DBCtrls, StdCtrls, ExtCtrls, Grids, DBGrids, Buttons, Db, DBTables, Menus, Mask, mxtables; type Tfrm_movimento = class(TForm) Panel1: TPanel; Label1: TLabel; DBText1: TDBText; Panel2: TPanel; Panel3: TPanel; DBGrid1: TDBGrid; BitBtn1: TBitBtn; Panel4: TPanel; BitBtn2: TBitBtn; BitBtn3: TBitBtn; PopupMenu1: TPopupMenu; Excluir1: TMenuItem; DBEdit1: TDBEdit; Shape1: TShape; RadioButton1: TRadioButton; Label2: TLabel; RadioButton2: TRadioButton; Label3: TLabel; RadioButton3: TRadioButton; RadioButton4: TRadioButton; Edit3: TEdit; ComboBox1: TComboBox; DBComboBox1: TDBComboBox; procedure BitBtn3Click(Sender: TObject); procedure Excluir1Click(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure RadioButton1Click(Sender: TObject); procedure RadioButton2Click(Sender: TObject); procedure RadioButton3Click(Sender: TObject); procedure RadioButton4Click(Sender: TObject); procedure FormKeyPress(Sender: TObject; var Key: Char); procedure Edit3Change(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var frm_movimento: Tfrm_movimento; implementation uses Unit2, Unit11, Unit9; {$R *.DFM} procedure Tfrm_movimento.BitBtn3Click(Sender: TObject); begin close; end; procedure Tfrm_movimento.Excluir1Click(Sender: TObject); begin dm.qr_vom.Delete; end; procedure Tfrm_movimento.BitBtn1Click(Sender: TObject); var codigo:integer; begin frm_mov_inc.Show; //pega conta atual para a inclusao frm_mov_inc.DBEdit1.Text:=frm_movimento.DBEdit1.Text; //move para o ultimo registro dm.qr_vom.Last; //define variavel codigo e incrementa codigo:=dm.qr_vom.FieldByName(´numero´).AsInteger + 1; //abre novo registro dm.qr_vom.append; //encontra o campo cod_conta e atribui o valor da variavel codigo dm.qr_vom.fieldbyname(´numero´).asInteger:=codigo; //muda as condicoes dos botoes frm_conta_cad.BitBtn1.Enabled:=True; frm_conta_cad.BitBtn2.Enabled:=False; frm_conta_cad.BitBtn3.Enabled:=False; //coloca o cursor no campo numero frm_mov_inc.DBEdit2.setfocus; frm_mov_inc.DBEdit7.Text:=´EC´; end; procedure Tfrm_movimento.RadioButton1Click(Sender: TObject); begin dm.qr_vom.filtered:=True; dm.qr_vom.filter:=´Tipo=´´EC´´´; end; procedure Tfrm_movimento.RadioButton2Click(Sender: TObject); begin dm.qr_vom.filtered:=True; dm.qr_vom.filter:=´Tipo=´´SC´´´; end; procedure Tfrm_movimento.RadioButton3Click(Sender: TObject); begin dm.qr_vom.filtered:=True; dm.qr_vom.filter:=´Tipo=´´CR´´´; end; procedure Tfrm_movimento.RadioButton4Click(Sender: TObject); begin dm.qr_vom.filtered:=True; dm.qr_vom.filter:=´Tipo=´´CP´´´; end; procedure Tfrm_movimento.FormKeyPress(Sender: TObject; var Key: Char); begin //funcao para substituir TAB por ENTER if Key = #13 then begin Key := 0; Perform(WM_NEXTDLGCTL, 0, 0); end end; procedure Tfrm_movimento.Edit3Change(Sender: TObject); begin //fazendo a busca por favorecido dm.qr_vom.close; dm.qr_vom.sql.clear; dm.qr_vom.sql.add(´select * from ciel_vom´); dm.qr_vom.sql.add(´where upper(favorecido) LIKE:Nome´); dm.qr_vom.parambyname(´Nome´).asstring := UpperCase(edit3.text); dm.qr_vom.open; end; procedure Tfrm_movimento.FormActivate(Sender: TObject); begin dm.qr_vom.close; dm.qr_vom.sql.clear; dm.qr_vom.sql.add(´select * from ciel_vom´); dm.qr_vom.sql.add(´where conta LIKE:conta´); dm.qr_vom.parambyname(´conta´).asInteger := StrtoInt(DBedit1.text); dm.qr_vom.open; end; procedure Tfrm_movimento.FormCreate(Sender: TObject); begin dm.qr_vom.close; dm.qr_vom.sql.clear; dm.qr_vom.sql.add(´select * from ciel_vom´); dm.qr_vom.sql.add(´where conta LIKE:conta´); dm.qr_vom.parambyname(´conta´).asInteger := Strtoint(DBedit1.text); dm.qr_vom.open; end; end.


mas eu acho q nao ta nesse o problema...o Unit o qual o debug se refere é o primeiro...

Obrigado pela atencao de vcs...

Abraços
Joe Ventrue


Responder

19/12/2003

Profeta®

Vc olhou todos os Ptos e vírgulas???

Naum dividiu inteiros???


Responder

22/12/2003

Joe Ventrue

ae galera...eu acho q é o seguinte:

eu coloquei o seguinte codigo:
dm.qr_vom.close; dm.qr_vom.sql.clear; dm.qr_vom.sql.add(´select * from ciel_vom´); dm.qr_vom.sql.add(´where conta LIKE:conta´); dm.qr_vom.parambyname(´conta´).asInteger := StrtoInt(DBedit1.text); dm.qr_vom.open;


esse campo conta é do tipo numerico, agora nao sei se era pra mim especificar como Float, Integer...
especifiquei como integer...é obvio q esta correto, mas quem sabe eu to esquecendo de alguma coisa...

Um Abraço a todos...
Joe Ventrue


Responder