SQLDataSet Não suporta operação.

03/12/2003

2

Estou criando um código para incluir un novo registro na tabela e atualiza-la com instruções SQL, só que me retorna um erro que não estou conseguindo resolver, eis o código.


procedure TFrmEnt_estoque_1.BitBtn1Click(Sender: TObject);
Var
 Valor_convertido : String;
 Qtde_entrada : Integer;
 Preco_unitario,Perc_Icms,Frete,Outros : Double;
 Frete_Unitario, Outros_custos_Unit, ICMS_Unit, Custo_unit_Entrada : Double;
begin
 With DmBasedados do
     begin
       Sqldent_estoque.CommandText:=
        ´INSERT INTO Entrada_Estoque (D_H_Entrada, Num_Nota_Fisc, Cod_Prod, Quant, Prec_unit, Perc_Icms, Valor_frete, Outras_desp, Responsavel, OBS)Values(:Data_Hora, :documento, :Produto, :Quantidade, :Preco, :Icms, :Frete, :Outras, :responsa, :Observa)´;
          sqldent_estoque.ParamByName(´data_hora´).AsString:=FormatDateTime(´yyyy/mm/dd,hh:mm:ss´,Now);
          Sqldent_Estoque.ParamByName(´Documento´).AsString:=edtCod.Text;
          Sqldent_estoque.ParamByName(´Produto´).AsString:=maskedit1.Text;
          Qtde_entrada:=strToint(Maskedit2.Text);
          sqldent_estoque.ParamByName(´Quantidade´).AsInteger:=Qtde_Entrada;
// Elimina separador de milhar
       Valor_convertido:=maskedit3.Text;
       While ( Pos(Thousandseparator,valor_Convertido)>0) do
               delete(valor_Convertido,pos(Thousandseparator,Valor_Convertido),1);
               Preco_unitario:=StrToFloat(Valor_Convertido);
       Sqldent_estoque.ParamByName(´Preco´).AsFloat:=Preco_Unitario;
// Elimina separador de milhar
       Valor_Convertido:= Maskedit4.Text;
       While ( Pos(Thousandseparator,valor_Convertido)>0) do
               delete(valor_Convertido,pos(Thousandseparator,Valor_Convertido),1);
               Perc_Icms:=StrtoFloat(Valor_Convertido);
       Sqldent_estoque.ParamByName(´ICMS´).AsFloat:=Perc_Icms;
// Elimina Separador de Milhar
       Valor_Convertido:= Maskedit5.Text;
       While ( Pos(Thousandseparator,valor_Convertido)>0) do
               delete(valor_Convertido,pos(Thousandseparator,Valor_Convertido),1);
               Frete:=StrToFloat(Valor_Convertido);
       Sqldent_estoque.ParamByName(´frete´).AsFloat:=Frete;
// Elimina separador de milhar
       Valor_Convertido:= Maskedit6.Text;
       While ( Pos(Thousandseparator,valor_Convertido)>0) do
               delete(valor_Convertido,pos(Thousandseparator,Valor_Convertido),1);
               Outros:=StrToFloat(Valor_Convertido);
       Sqldent_estoque.ParamByName(´outras´).AsFloat:=Outros;
       Sqldent_estoque.ParamByName(´Responsa´).AsString:=Edit1.Text;
       Sqldent_estoque.ParamByName(´OBServa´).AsMemo :=Memo1.Text;
       Sqldent_Estoque.ExecSQL;
// Atualiza Posição do produto no estoque
       Frete_Unitario        := Frete/qtde_Entrada;
       Outros_Custos_Unit    := Outros/Qtde_Entrada;
       Icms_Unit             := Preco_Unitario*(Perc_Icms/100);
       Custo_Unit_Entrada    := Preco_Unitario+Frete_Unitario+Outros_Custos_Unit-ICMS_Unit;

       DmBasedados.SQLDEnt_Estoque_1.CommandText:=´UPDATE ESTOQUE set Prec_Custo=((Quantidade*Prec_Custo) + :Valor_Entrada) / (Quantidade + :Nova_Qtde_Entrada), ´+´ Quantidade=Quantidade + :Nova_Qtde_Entrada, ´+´Prec_Venda=Prec_Custo*(1+(Perc_Remar/100))´ + ´Where Cod_Barras= :Cod_Barras_prod´;
       Dmbasedados.SQLDEnt_Estoque_1.ParamByName(´Nova_Qtde_Entrada´).AsInteger:=Qtde_Entrada;
       DmBasedados.SQLDEnt_Estoque_1.ParamByName(´Valor_Entrada´).AsFloat:=Custo_Unit_Entrada*qtde_Entrada;
       DmBasedados.SQLDEnt_Estoque_1.ParamByName(´Cod_Barras_Prod´).AsString:=maskEdit1.Text;
       DmBaseDados.SQLDEnt_Estoque_1.ExecSQL;
// Limpa Variáveis e muda foco para lançamento de outros intens
       maskedit1.Text:=´´;
       maskedit2.Text:=´0´;
       maskedit3.Text:=´0´;
       maskedit4.Text:=´0´;
       maskedit5.Text:=´0´;
       maskedit6.Text:=´0´;
       Memo1.Clear;
       Label10.Caption:=´´;
       EdtCod.SetFocus;
      end;
end;

O erro que me retorna é este:
[color=red:0a716d2cb6][/color:0a716d2cb6]SQLDent_estoque: Cannot Perform This Operation on an open dataSet[color=red:0a716d2cb6][/color:0a716d2cb6].
Ou seja ele responde que o SQL em destaque não pode realizar esta operção sobre um dataset aberto.
alguém pode me ajudar.
Erivan marinho.[/code]


Responder

Posts

03/12/2003

Peninha

Por favor alguém me ajude com esta Query, estou precisando muito dar andamento ao meu trabalho, por favor.
Erivan marinho.


Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar