GARANTIR DESCONTO

Fórum raised exception class tdbxerror with message ´conversion error from string ´ #561697

29/08/2016

0

Estou tentando abrir o Dataset após passar uma instrução SQL no CommandText, porém da esse erro:
raised exception class tdbxerror with message ´ conversion error from string ´´0´´

Estou passando assim:
DM.CDS_Estoque.Close;
  DM.CDS_Estoque.CommandText :=  ´ SELECT * FROM TB_ESTOQUE´ +
    ´ INNER JOIN TB_PRODUTO ON(TB_ESTOQUE.ID_PRODUTO =TB_PRODUTO.ID)´ +
    ´ WHERE tb_estoque.datacompra between ´ + FormatDateTime(´dd/mm/yyyy´,(DateTimePicker1.Date))+
    ´ and ´+ FormatDateTime(´dd/mm/yyyy´,(DateTimePicker2.Date))+
     ´ and TB_PRODUTO.descricao LIKE ´ + QuotedStr(Edit1.Text + ´%´);
  DM.CDS_Estoque.Open;


Quando abro o Dataset que acontece o erro, alguém pode me ajudar?
Ademar Júnior

Ademar Júnior

Responder

Post mais votado

30/08/2016

Teste seu código utilizando parâmetros:

    With DM.CDS_Estoque do
      begin
        Close;
        CommandText := 'SELECT * FROM TB_ESTOQUE INNER JOIN TB_PRODUTO ON ' +
          '(TB_ESTOQUE.ID_PRODUTO = TB_PRODUTO.ID)' +
          ' WHERE TB_ESTOQUE.datacompra between :dataini and :datafim ' +
          ' and TB_PRODUTO.descricao LIKE :desc ';
        Params.ParamByName('dataini').Value := FormatDateTime('dd/mm/yyyy', (DateTimePicker1.Date));
        Params.ParamByName('datafim').Value := FormatDateTime('dd/mm/yyyy', (DateTimePicker2.Date));
        Params.ParamByName('desc').AsString := '%' + Edit1.Text + '%';
        Open;
      end;

Natanael Ferreira

Natanael Ferreira
Responder

Gostei + 3

Mais Posts

30/08/2016

Raimundo Pereira

Caso não funcione tente
Trocar isso (DateTimePicker1.Date) por StrToDate(DateTimePicker1.Date)

Caso estiver usando campo no formato date deverá formatar o tipo de data 01/01/2016 para 01.01.2016
Se haver necessidade, basta criar duas variáveis string


VAR
VD_INICIAL,VD_FINAL:STRING;
BEGIN
VD_INICIAL:=StrToDate(DateTimePicker1.Date);
VD_FINAL:=StrToDate(DateTimePicker2.Date);

VD_INICIAL:= StringReplace(VD_INICIAL, '/', '.', [rfReplaceAll, rfIgnoreCase]);
VD_FINAL:= StringReplace(VD_FINAL, '/', '.', [rfReplaceAll, rfIgnoreCase]);

Seu novo SQL ficará:
With DM.CDS_Estoque do
begin
Close;
CommandText := 'SELECT * FROM TB_ESTOQUE INNER JOIN TB_PRODUTO ON ' +
'(TB_ESTOQUE.ID_PRODUTO = TB_PRODUTO.ID)' +
' WHERE TB_ESTOQUE.datacompra between :dataini and :datafim ' +
' and TB_PRODUTO.descricao LIKE :desc ';
Params.ParamByName('dataini').Value := VD_INICIAL;
Params.ParamByName('datafim').Value :=VD_FINAL;
Params.ParamByName('desc').AsString := '%' + Edit1.Text + '%';
Open;
end;

Posta o resultado ou novidades
Responder

Gostei + 2

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

Aceitar