um erro ao tentar gravar
Caros colegas do fórum,
Estou desenvolvendo uma aplicação de cadastro de visitas, as tabelas principais são: Cliente e Visita e tenho a seguinte situação: Pode existir de 1 mesmo cliente fazer várias visitas então fiz o seguinte, ao clicar no botão ´Incluir´, o primeiro campo a ser preenchido deve ser ´Identidade´, caso ainda não exista essa identidade no banco, o novo cadastro é feito normalmente, agora caso contrário, os campos relativos ao cliente, já são todos preenchidos automaticamente, só q na hora de gravar, não posso gravar novamente os mesmos dados na tabelas de Cliente, correto? Devo atualizar apenas o da tabela Visita. Coloquei o seguinte código no evento OnValidate do ClientDataSet:
procedure TDmCadCliente.cdsClienteCLI_IDENTIDADEValidate(Sender: TField);
begin
If not Sender.IsNull Then
Begin
qyInfCliente.ParamByName(´CLI_IDENTIDADE´).Value := Sender.Value;
qyInfCliente.Open;
try
If not qyInfCliente.IsEmpty Then
Begin
cdsCliente.FieldByName(´CLI_CODIGO´).Value := qyInfCliente.FieldByName(´CLI_CODIGO´).Value;
cdsCliente.FieldByName(´CLI_NOME´).Value := qyInfCliente.FieldByName(´CLI_NOME´).Value;
cdsCliente.FieldByName(´CLI_CPF´).Value := qyInfCliente.FieldByName(´CLI_CPF´).Value;
cdsCliente.FieldByName(´CLI_CADAST_POR´).Value := qyInfCliente.FieldByName(´CLI_CADAST_POR´).Value;
cdsCliente.FieldByName(´CLI_EMPRESAORIGEM´).Value := qyInfCliente.FieldByName(´CLI_EMPRESAORIGEM´).Value;
cdsCliente.FieldByName(´CLI_FOTO´).Value := qyInfCliente.FieldByName(´CLI_FOTO´).Value;
qyCliente.FieldByName(´CLI_CODIGO´).ProviderFlags := [pfInKey,pfInWhere];
qyCliente.FieldByName(´CLI_NOME´).ProviderFlags := [pfInWhere];
qyCliente.FieldByName(´CLI_IDENTIDADE´).ProviderFlags := [pfInWhere];
qyCliente.FieldByName(´CLI_CPF´).ProviderFlags := [pfInWhere];
qyCliente.FieldByName(´CLI_CADAST_POR´).ProviderFlags := [pfInWhere];
qyCliente.FieldByName(´CLI_EMPRESAORIGEM´).ProviderFlags := [pfInWhere];
qyCliente.FieldByName(´CLI_FOTO´).ProviderFlags := [pfInWhere];
End;
finally
qyInfCliente.Close;
end;
End;
end;
Só que quando mando gravar, ocorre o seguinte erro: ´Cascaded updates not enabled.´
O q pode está errado?
Obs: O banco é o Firebird.
Estou desenvolvendo uma aplicação de cadastro de visitas, as tabelas principais são: Cliente e Visita e tenho a seguinte situação: Pode existir de 1 mesmo cliente fazer várias visitas então fiz o seguinte, ao clicar no botão ´Incluir´, o primeiro campo a ser preenchido deve ser ´Identidade´, caso ainda não exista essa identidade no banco, o novo cadastro é feito normalmente, agora caso contrário, os campos relativos ao cliente, já são todos preenchidos automaticamente, só q na hora de gravar, não posso gravar novamente os mesmos dados na tabelas de Cliente, correto? Devo atualizar apenas o da tabela Visita. Coloquei o seguinte código no evento OnValidate do ClientDataSet:
procedure TDmCadCliente.cdsClienteCLI_IDENTIDADEValidate(Sender: TField);
begin
If not Sender.IsNull Then
Begin
qyInfCliente.ParamByName(´CLI_IDENTIDADE´).Value := Sender.Value;
qyInfCliente.Open;
try
If not qyInfCliente.IsEmpty Then
Begin
cdsCliente.FieldByName(´CLI_CODIGO´).Value := qyInfCliente.FieldByName(´CLI_CODIGO´).Value;
cdsCliente.FieldByName(´CLI_NOME´).Value := qyInfCliente.FieldByName(´CLI_NOME´).Value;
cdsCliente.FieldByName(´CLI_CPF´).Value := qyInfCliente.FieldByName(´CLI_CPF´).Value;
cdsCliente.FieldByName(´CLI_CADAST_POR´).Value := qyInfCliente.FieldByName(´CLI_CADAST_POR´).Value;
cdsCliente.FieldByName(´CLI_EMPRESAORIGEM´).Value := qyInfCliente.FieldByName(´CLI_EMPRESAORIGEM´).Value;
cdsCliente.FieldByName(´CLI_FOTO´).Value := qyInfCliente.FieldByName(´CLI_FOTO´).Value;
qyCliente.FieldByName(´CLI_CODIGO´).ProviderFlags := [pfInKey,pfInWhere];
qyCliente.FieldByName(´CLI_NOME´).ProviderFlags := [pfInWhere];
qyCliente.FieldByName(´CLI_IDENTIDADE´).ProviderFlags := [pfInWhere];
qyCliente.FieldByName(´CLI_CPF´).ProviderFlags := [pfInWhere];
qyCliente.FieldByName(´CLI_CADAST_POR´).ProviderFlags := [pfInWhere];
qyCliente.FieldByName(´CLI_EMPRESAORIGEM´).ProviderFlags := [pfInWhere];
qyCliente.FieldByName(´CLI_FOTO´).ProviderFlags := [pfInWhere];
End;
finally
qyInfCliente.Close;
end;
End;
end;
Só que quando mando gravar, ocorre o seguinte erro: ´Cascaded updates not enabled.´
O q pode está errado?
Obs: O banco é o Firebird.
Fabiano_aprendiz
Curtidas 0