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:
Quando abro o Dataset que acontece o erro, alguém pode me ajudar?
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
Curtir tópico
+ 0
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
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
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
Clique aqui para fazer login e interagir na Comunidade :)