Não grava os dados no Banco Access
Tenho uma aplicação simples no delphi conectado ao access pelo ADO e os métodos de inserção, exclusao e consulta funcionam corretamente. O de alteração não da erro mas tambem nao grava na tabela de dados.
O procedimento criado abaixo
procedure alterarproduto(codigobarraPr: String; GrupoPr: Integer; CodigoPr: Integer; DescricaoPr: String; CustoPr: Currency; VendaPr: Currency; StatusPr: String; PrateleiraPr: STring);
É chamado no DelpHi:
alterarproduto(txtCodigoBarra.Text, StrToInt(txtGrupo.Text), StrToInt(txtCodigo.Text), txtDescricao.Text, StrToCurr(txtCusto.Text), StrToCurr(txtVenda.Text), statusproduto, CbPrateleira.Text);
Procedimento de Atualização
WITH Dados.TProdutos DO
begin
Close;
SQL.Clear;
SQL.Add('UPDATE Produtos SET CodigoBarra = :codigobarraPR, Grupo = :GrupoPR, Codigo = :CodigoPr, Descricao = :DescricaoPr, Custo = :CustoPr, Venda = :VendaPr, Status = :StatusPr, Prateleira = :PrateleiraPr');
SQL.Add('WHERE Grupo = :GrupoPR AND Codigo = :CodigoPr');
Parameters.ParamByName('codigobarraPr').Value := codigobarraPr;
Parameters.ParamByName('GrupoPR').Value := GrupoPR;
Parameters.ParamByName('CodigoPr').Value := CodigoPr;
Parameters.ParamByName('DescricaoPr').Value := DescricaoPr;
Parameters.ParamByName('CustoPr').Value := CustoPr;
Parameters.ParamByName('VendaPr').Value := VendaPr;
Parameters.ParamByName('StatusPr').Value := StatusPr;
Parameters.ParamByName('PrateleiraPr').Value := PrateleiraPr;
ExecSQL;
Não da erro, quando faço passo a passo, e passa a segunda linha de parametros, o parametro GRUPOPR perde o valor e recebe = Variable 'GrupoPr' inaccessible here due to optimization
Algo acontece e nao é executado.
Alguem daria alguma sugestão para acertar isso ??
O procedimento criado abaixo
procedure alterarproduto(codigobarraPr: String; GrupoPr: Integer; CodigoPr: Integer; DescricaoPr: String; CustoPr: Currency; VendaPr: Currency; StatusPr: String; PrateleiraPr: STring);
É chamado no DelpHi:
alterarproduto(txtCodigoBarra.Text, StrToInt(txtGrupo.Text), StrToInt(txtCodigo.Text), txtDescricao.Text, StrToCurr(txtCusto.Text), StrToCurr(txtVenda.Text), statusproduto, CbPrateleira.Text);
Procedimento de Atualização
WITH Dados.TProdutos DO
begin
Close;
SQL.Clear;
SQL.Add('UPDATE Produtos SET CodigoBarra = :codigobarraPR, Grupo = :GrupoPR, Codigo = :CodigoPr, Descricao = :DescricaoPr, Custo = :CustoPr, Venda = :VendaPr, Status = :StatusPr, Prateleira = :PrateleiraPr');
SQL.Add('WHERE Grupo = :GrupoPR AND Codigo = :CodigoPr');
Parameters.ParamByName('codigobarraPr').Value := codigobarraPr;
Parameters.ParamByName('GrupoPR').Value := GrupoPR;
Parameters.ParamByName('CodigoPr').Value := CodigoPr;
Parameters.ParamByName('DescricaoPr').Value := DescricaoPr;
Parameters.ParamByName('CustoPr').Value := CustoPr;
Parameters.ParamByName('VendaPr').Value := VendaPr;
Parameters.ParamByName('StatusPr').Value := StatusPr;
Parameters.ParamByName('PrateleiraPr').Value := PrateleiraPr;
ExecSQL;
Não da erro, quando faço passo a passo, e passa a segunda linha de parametros, o parametro GRUPOPR perde o valor e recebe = Variable 'GrupoPr' inaccessible here due to optimization
Algo acontece e nao é executado.
Alguem daria alguma sugestão para acertar isso ??
Alan Pitta
Curtidas 0
Respostas
Raylan Zibel
01/05/2016
Em vez de .value nos parâmetros, tenta usar .asString .asInteger e .asFloat pra ver se você consegue visualizar os valores enquanto debuga, pra validar se estão certos.
Costumo separar as cláusulas where entre parenteses, pra desencargo de consciência rs...
Costumo separar as cláusulas where entre parenteses, pra desencargo de consciência rs...
GOSTEI 0
Alan Pitta
01/05/2016
Como eu passo por parametros nao tem como eu definir o tipo, uma vez que ele ja esta definido no escopo, se ele é Integer, String...
Enquanto a debug eu coloco o visualizador do Delphi pra trabalhar
Todos os valores são trazidos conforme pode ver na imagem abaixo, menos o valor passado do Grupo.
http://prntscr.com/azadhr
Enquanto a debug eu coloco o visualizador do Delphi pra trabalhar
Todos os valores são trazidos conforme pode ver na imagem abaixo, menos o valor passado do Grupo.
http://prntscr.com/azadhr
GOSTEI 0