SQLDataSet Não suporta operação.

03/12/2003

1

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