Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Andre.Ibt

Project Sistema.exe raised exception class EDatabaseError with message

Recommended Posts

Estou com um problema e não consigo resolver de modo algum...


Estou fazendo um sistema para trabalho da Faculdade, o tema que escolhi foi de agendamento de horário para salão de beleza...

Estou utilizando o Delphi 2010 e o meu banco de dados é o MySQL.

No meu Banco de Dados eu tenho uma tabela de Agendamento e uma tabela de Contas a Receber....

Quando o usuário for realizar um agendamento de horário ele deve informar a forma de pagamento, a data de vencimento e o valor do serviço que será feito, essas informações são devem ser gravadas na tabela de contas a Receber, e no mesmo Form o usuário deve informar o serviço que será realizado, a data que será realizado o serviço, o funcionário que fará o serviço, a hora e o cliente, que serão gravados na tabela de Agenda....


Quando clico no botão salvar o sistema salva o agendamento, mas na hora de salvar a conta aparece o seguinte erro: Project Sistema.exe raised exception class EDatabaseError with message 'Field 'idAgendamento' must have a value'....


Se eu clico no botão continue


Aparece a Mensage: Field 'idAgendamento' must have a value



Pesquise e encontrei alguns fóruns com o mesmo erro, porém não consegui corrigir o meu problema, alguém poderia me ajudar?

A mensagem diz que o idAgendamento não possui um valor, mas quando eu clico em novo eu coloquei um código assim:


EdCodigoConta.Text := IntToStr(0);

onde EdCodigoConta é o nome do DBEdit que recebe o valor para o IdAgenda...


SEGUE O CÓDIGO DO PROCEDURE DO BOTÃO(NO CASO UMA IMAGEM) NOVO:

procedure TFrmAgenda.Image2Click(Sender: TObject);

var

Cod, Cod1: Integer;

begin

ClientDataSetAgenda.Last;

Cod := ClientDataSetAgenda.FieldByName('idAgendamento').AsInteger + 1;

Cod1 := ClientDataSetAgenda.FieldByName('idAgendamento').AsInteger + 1;

ClientDataSetAgenda.Append;

EdCodigo.Text := IntToStr(Cod);

EdAgenda.Text := IntToStr(Cod1);

EdCodigoConta.Text := IntToStr(0);

PageControl1.TabIndex := 1;

end;



NO BOTÃO SALVAR:

procedure TFrmAgenda.Image8Click(Sender: TObject);

begin

ClientDataSetAgenda.Post;

ClientDataSetAgenda.ApplyUpdates(0);

ShowMessage('Registro Salvo Com Sucesso!');

ClientDataSetConta.Insert;

ClientDataSetConta.Post;

ClientDataSetConta.ApplyUpdates(0);

ShowMessage('Conta Gerada com sucesso!');

PageControl1.TabIndex := 0;

Tabela.Visible := True;

end;



Até a linha: ShowMessage('Registro Salvo Com Sucesso!'); o sistema executa normalmente, ou seja, ele salva o agendamento mas não gera a conta...


PARA CONEXÃO COM O BANCO DE DADOS EU UTILIZEI UM DATA MODULE COM OS SEGUINTES COMPONENTES:

--> SQLConnection

--> SQLDataSet (um para cada tabela do meu banco de dados)


NO FORM DE AGENDA:

--> ClientDataSet

--> DataSetProvider

--> DataSource


OS MEUS EDIT's eu adiciono assim: Clico 2 vezes no ClientDataSet e seleciono os componentes e arrasto para o form...


PQ que será que está dando o erro: Project Sistema.exe raised exception class EDatabaseError with message 'Field 'idAgendamento' must have a value', sendo que para cadastrar o agendamento de horário, os clientes, funcionários etc... está funcionando certinho e eu utilizo a mesma forma, pq 1 está dando erro e os outros não
????

Compartilhar este post


Link para o post
Compartilhar em outros sites
Bom dia não sei se Vai ajudar muito mas No Firebird Resolvemos Este erro Criando um generator na sua Base de Dados. E no Evento BeforeAction do Botão Salvar.


Colocamos o Seguinte Código


with nomedoDataModule do

if tabelanome.State = dsInsert then

tabelanomeCODIGO.AsInteger := Gen_ID('GEN_TABELA.CODIGO', 1)


No seu Caso seria com o ClientDataSet que vc usa, lembrando que no Uses do Form tem que referenciar o DataModule e o DB, pois DsInsert é uma funcao existente no no DB.


Veja se há como fazer algo do tipo com o MYSQL.


Atenciosamente!

Júnior Lira

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.