Erro com Delphi XE + Zeos + MySql (Input parameter count is less then expected)

Delphi

15/10/2011

Colegas;
Tenho um sistema feito em Delphi 2006 onde eu uso o Zeos para conectar no MySql. Recentemente instalei o Delphi XE e baixei uma versão mais nova do Zeos. Está funcionando normalmente, mas identifiquei um erro no componente ZQuery. Quando eu tento fazer um insert passando parâmetros, o componente não reconhece os parâmetros referentes aos campos Integer, Smallint, Tinyint, etc...Segue exemplo:

Estrutura da tabela:

CREATE TABLE USUARIOS (
	NOMEUSUARIO VARCHAR(20) NOT NULL,
	SENHA       VARCHAR(20) NOT NULL,
	ATIVO       TINYINT(1)  NOT NULL,
	CONSTRAINT  PRIMARY KEY (NOMEUSUARIO)
)


Código Delphi:

procedure TForm1.Button1Click(Sender: TObject);
begin
  ZConnection1.Connect;
  with ZQuery1 do
  begin
    Connection := ZConnection1;
    SQL.Clear;
    Sql.Add(INSERT INTO USUARIOS( );
    Sql.Add(  NOMEUSUARIO,        );
    Sql.Add(  SENHA,              );
    Sql.Add(  ATIVO)              );
    Sql.Add(VALUES(               );
    Sql.Add(  :pNOMEUSUARIO,      );
    Sql.Add(  :pSENHA,            );
    Sql.Add(  :pATIVO)            );
    Params.ParamByName(pNOMEUSUARIO).Value := Teste;
    Params.ParamByName(pSENHA      ).Value := 1234;
    Params.ParamByName(pATIVO      ).Value := 1;
    ExecSQL;
  end;
end;


Se eu retirar o parâmetro pATIVO, e valorizar o campo diretamente na string, ele funciona. Mas da forma como estou fazendo ele da o seguinte erro:

Input parameter count is less then expected. Isso é problema do componente, pois uso esse mesmo código no Delphi 2006 e funciona perfeitamente.

Alguém mais está tendo esse problema?

Abraço!
Mauricio S.

Mauricio S.

Curtidas 0

Respostas

Gustavo Bretas

Gustavo Bretas

15/10/2011

Tenta setar as propriedades Params.DataType de acordo com o tipo do campo, e o Params.ParamType como ptInput.
GOSTEI 0
Mauricio S.

Mauricio S.

15/10/2011

Nossa, eu nem tinha pensando nisso. E realmente funcionou, bastou setar o DataType.

Muito obrigado!
GOSTEI 0
POSTAR