GARANTIR DESCONTO

Fórum SQL - Insert #162758

27/05/2003

0

olá!

Quero inserir dados de outra tabela.
O que estou fazendo de errado?????
Obrigado!

with DmNF.ADOQ_INF_SaidaCadastro do
begin
close;
sql.Clear;
sql.add(´Insert into Tab_INF_Saida´);
sql.add(´(Num_Nf,Num_Pro,Qtd,Valor_Unit,Dt_Cad)´);
sql.add(´values (´ + inttostr (DmNf.ADOQ_NF_SaidaCadastroNum_NF_Emp.Value) + ´,´
+ inttostr(Dm.ADOQ_PedProPed_Num_Prod.Value) + ´,´
+ inttostr(Dm.ADOQ_PedProPed_Qtd_Prod.Value) + ´,´
+ floattostr(Dm.ADOQ_PedProPed_Valor_Prod.Value) + ´,´
+ datetostr(Date) + ´)´);
ExecSql;
end;


Vscruz

Vscruz

Responder

Posts

27/05/2003

Andersonc

Os erros são os seguintes:
1 - O float to str converte para o tipo float definido em configurações regionais, portanto dois e meio seriam 2,5 mas o banco de dados aceita somente 2.5
2 - Com a data ocorre a mesma coisa, vc deve utilizar o formato definido no banco de dados, o padrão di IB é MM-DD-AAAA.
Sugestão: use parâmetros.

Exemplo:
with DmNF.ADOQ_INF_SaidaCadastro do
begin
close;
sql.Clear;
sql.add(´Insert into Tab_INF_Saida´);
sql.add(´(Num_Nf,Num_Pro,Qtd,Valor_Unit,Dt_Cad)´);
sql.add(´values (:NumNF, :Num_Pro, :Qtd, :Valor_Unit, :Dt_Cad) ´);
Params.ParamByName(´NumNF´).Value := DmNf.ADOQ_NF_SaidaCadastroNum_NF_Emp.Value;
Params.ParamByName(´Num_Pro´).Value := Dm.ADOQ_PedProPed_Num_Prod.Value;
Params.ParamByName(´Qtd´).Value := Dm.ADOQ_PedProPed_Qtd_Prod.Value;
Params.ParamByName(´Valor_Unit´).Value := Dm.ADOQ_PedProPed_Valor_Prod.Value;
Params.ParamByName(´Dt_Cad´).Value := Date
ExecSql;
end;

Desta forma o Delphi se vira para realizar as conversões de tipos de dados.


Responder

Gostei + 0

27/05/2003

Ninorvdc

OI.... COSTUMO ERRAR MUITO NO TIPO DE INFORMAÇÃO.
SE É STRING USE ASPAS... MAS O QUE MAIS COSTUMA NO ENGANAR É A INSERÇÃO DE CAMPOS DATA, CONSIDERANDO QUE CADA BANCO DE DADOS TRATA DATA DE UMA FORMA DIFERENTE.

VERIFIQUE SE ESSE BANCO DE DADOS QUE USA NÃO SE DEVE INVERTER
O MÊS COM O DIA. (EX. 05/21/2003) OU SE DEVE USAR ASPAS OU NÃO.
EXEMPLO INSERT INTO TABLE DATA VALUES ´01/01/2003´

Ou tira a data só pra certificar-se que o problema não é a data.


Responder

Gostei + 0

27/05/2003

Vscruz

Deu certo!!

Obrigado!!

Victor


Responder

Gostei + 0

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

Aceitar