Erro Unable to find record
08/03/2013
0
Unable to find record. No key specific.
Andre Ucella
Posts
08/03/2013
Perivaldo Martins
Unable to find record. No key specific.
Em qual parte do código está aparecendo esse erro? Se você puder nos fornecer mais informações talvez seja mais fácil encontrar uma solução? Você está debugando o código para ver o que está causando esse erro?
Boa sorte e bons códigos!
09/03/2013
Andre Ucella
unit uFrmCadProduto;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uFrmCadPadrao, uFrameBotaoVertical, ExtCtrls, ComCtrls,
ActnList, DB, StdCtrls, Mask, DBCtrls, Grids, DBGrids;
type
TFrmCadProduto = class(TFrmCadPadrao)
PageControl1: TPageControl;
Panel1: TPanel;
FrameBotaoVertical1: TFrameBotaoVertical;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
DbID: TDBEdit;
DbDescricao: TDBEdit;
DbUnid: TDBEdit;
DbEan: TDBEdit;
DBEdit6: TDBEdit;
DbPreco: TDBEdit;
DbEstoque: TDBEdit;
DbTributacao: TDBRadioGroup;
DbFracionado: TDBCheckBox;
GroupBox2: TGroupBox;
RadioOpcao: TRadioGroup;
GroupBox3: TGroupBox;
EdtLocalizar: TEdit;
DBGrid1: TDBGrid;
procedure FormShow(Sender: TObject);
procedure ActIncluirExecute(Sender: TObject);
procedure ActConfirmarExecute(Sender: TObject);
procedure DbIDKeyPress(Sender: TObject; var Key: Char);
procedure EdtLocalizarExit(Sender: TObject);
procedure ActionList1Update(Action: TBasicAction;
var Handled: Boolean);
private
{ Private declarations }
function VerificaDadosProduto:boolean;
public
{ Public declarations }
end;
var
FrmCadProduto: TFrmCadProduto;
implementation
Uses uLibrary,uDM;
{$R *.dfm}
procedure TFrmCadProduto.FormShow(Sender: TObject);
begin
inherited;
DataWork.DataSet := DM.CdsProdutos;
DM.AbreTabelaProdutos('0',1);
PageControl1.TabIndex := 0;
end;
procedure TFrmCadProduto.ActIncluirExecute(Sender: TObject);
begin
inherited;
DbDescricao.SetFocus;
end;
procedure TFrmCadProduto.ActConfirmarExecute(Sender: TObject);
begin
if not VerificaDadosProduto then
Abort;
inherited;
end;
function TFrmCadProduto.VerificaDadosProduto: boolean;
begin
Result := true;
if (DataWork.DataSet.FieldByName('PRECO').AsFloat < 0) or
(DataWork.DataSet.FieldByName('ESTOQUE').AsFloat < 0) then
begin
MessageDlg('O Preco e o Estoque não podem ser negativos!!!', mtError, [mbOK], 0);
Result := false;
end;
end;
procedure TFrmCadProduto.DbIDKeyPress(Sender: TObject; var Key: Char);
begin
inherited;
TabEnter(Self,Key);
end;
procedure TFrmCadProduto.EdtLocalizarExit(Sender: TObject);
begin
inherited;
if EdtLocalizar.Text <> '' then
begin
DM.AbreTabelaProdutos(EdtLocalizar.Text,RadioOpcao.ItemIndex);
end;
end;
procedure TFrmCadProduto.ActionList1Update(Action: TBasicAction;
var Handled: Boolean);
begin
inherited;
AbilitaFrame(FrameBotaoVertical1,DataWork.DataSet);
end;
end.
------------------------------------------------------
O erro esta aqui, quando mando incluir um produto;
procedure TFrmCadProduto.ActIncluirExecute(Sender: TObject);
begin
inherited;
DbDescricao.SetFocus;
end;
09/03/2013
Perivaldo Martins
procedure TFrmCadProduto.ActIncluirExecute(Sender: TObject);
begin
inherited;
DbDescricao.SetFocus;
DBDescrição é um componente DBEdit? A tabela utilizada nessa inclusão usa chave primária, se usar, configure a opção pfInkey = True na propriedade Providerflags do seu Data Set, no DataSetProvider deve mudar a propriedade UpdateMode para upWhereKeyOnly. Veja assim dá certo.
Boa sorte e bons códigos!
09/03/2013
Andre Ucella
09/03/2013
Perivaldo Martins
Quais campos são chave primária nessa tabela? O erro acontece quando esse DBEdit recebe o foco?
Boa sorte e bons códigos!
09/03/2013
Andre Ucella
09/03/2013
Perivaldo Martins
Você está trabalhando com herança, esse problema só acontece nesse form? Quais componentes de acesso você está utilizando? Tem algum código para DataSet no form original?
Boa sorte e bons códigos!
09/03/2013
Andre Ucella
09/03/2013
Andre Ucella
procedure Grava_Dados(pDataDados: TDataSet);
begin
Randomize;
IniciaTransacao;
if TClientDataSet(pDataDados).Active then
begin
if TClientDataSet(pDataDados).State in [dsInsert,dsEdit] then
TClientDataSet(pDataDados).Post;
if TClientDataSet(pDataDados).ChangeCount > 0 then
TClientDataSet(pDataDados).ApplyUpdates(0); <-------------ERRO ACONTECE AQUI...!!!!!!!!!
end;
ConexaoDados.Commit(Transc);
end;
09/03/2013
Perivaldo Martins
Como está ocnfigurado o seu DataSetProvider na opção UpdatMode? E o providerFlags do seu DataSet?
No caso do SQLQuery.
Boa sorte e bons códigos!
Clique aqui para fazer login e interagir na Comunidade :)