1
Good Afternoon, I have a problem in my code, use Rad Studio XE6 connected to a base SQLITE, when I insert values with point in the table occurs the following error for example = 'near "6.75":syntax error' being 6.75 the value, when I put in quotes in the Insert appears "'6.75", now when I put the comma it inserts normal because the SQLITE can convert when entering direct, I just need to calculate the 6.75 with other values and the comma won’t let me calculate, so I want to insert it with a dot. Anyone can help ??
My code:
//q_insere_itens_pedido é uma Query do tipo TSQLQuery
//todos os valores estão sendo inseridos como tipo string
//tentei inserir como inteiro(cod_pedido, cod_produto) e real(quantidade, unitario subtotal)
//mas a query aceita apenas string
//FAZER CONTAS E INSERIR
//========================================================================
valor := l_produto.Text;
subtotal := FloatToStr(StrToFloat(valor) * StrToFloat(l_quantidade.Text));
SUBTOTALFORMATADO := FormatFloat('0.00', subtotal.ToExtended);
VALORFORMATADO := FormatFloat('0.00', VALOR.ToExtended);
codigo_pedido := IntToStr(q_pedidoCODIGO.Value);
codigo_produto := l_produto_codigo.Text;
descricao_produto := bt_busca_produto.Text.QuotedString;
quantidade := l_quantidade.Text;
q_insere_itens_pedido.SQL.Clear;
q_insere_itens_pedido.SQL.Add('insert into ITENS_PEDIDO(COD_PEDIDO, COD_PRODUTO, PRODUTO, QUANTIDADE, UNITARIO, SUBTOTAL)');
q_insere_itens_pedido.SQL.Add('values('+codigo_pedido+
','+codigo_produto+
','+descricao_produto+
','+quantidade+
','+valorformatado+
','+subtotalformatado+')');
ShowMessage(q_insere_itens_pedido.SQL.Text);
q_insere_itens_pedido.ExecSQL;
Update your question by stating the line where you declare
q_insere_itens_pedido
. Knowing the type of this variable we can provide an example of your code using parameters instead of concatenating the values in the SQL command.– Caffé
What kind of
q_insere_itens_pedido
? Failed to paste line declaring variable.– Caffé
@Caffé q_insere_itens_requested is the name of the Tsqlquery component, thanks for the hint of sql Injection, but still continues the error : near "6.75" syntax error. This error occurs when I unquote, when I quote another error occurs: unrecognized token: "'6.75", with 3 quotes at the beginning and then 2
– Gian Eric
I edited my answer based on the code you added to your question. Don’t worry about quote, quotes, decimal separator... Instead, use variables with the data type you want to handle (rather than string), use parameters instead of concatenating values in the query, and let Delphi do the hard work for you.
– Caffé