Fórum Usando o LOCATE com campos secundários e em INCLUSAO #269441
21/02/2005
0
Oi Pessoal,
Estou usando Access com ADO e um Data Module onde coloco todos os meus DataSources e as suas respectivas ADOTables.
No momento em que estou incluindo um registro em uma Tabela X, eu preciso fazer uma validação de um campo não chave (Tenho o indice secundario), mas quando uso o comando LOCATE nessa mesma tabela, o evento BEFOREPOST é chamado e surge o erro ´Operação de várias etapas gerou um erros. Verifique cada valor de Status.´
Gostaria de saber como posso fazer para que o comando LOCATE funcione quando estou em inclusão, me sugeriram copiar um DATASET e usar o método CLONECURSOR, mas não entendi bem o que devo fazer.
Se puderem me passar os detalhes ficarei grato,
Aqui a rotina onde uso o LOCATE:
/ Verifica se o Cheque já não está na Tabela
if not DataSource_Despesas_Diarias2.DataSet.Locate(´DES_BANCO;DES_AGENC;DES_CHEQUE´,
VarArrayOf([DataMod.ADOTable_Despesas_DiariasDES_Banco.Value,
DataMod.ADOTable_Despesas_DiariasDES_Agenc.Value,
DataMod.ADOTable_Despesas_DiariasDES_Cheque.Text]),[]) then
begin
FNum_Cheque.Items.Add(FormatCurr(´0000000000´, I));
end;
Esta rotina é chamada quando o comando LOCATE é chamado e ocorre o erro:
procedure TDataMod.ADOTable_Despesas_DiariasBeforePost(DataSet: TDataSet);
begin
If (DataMod.ADOTable_Despesas_Diarias.State = DsInsert ) and
(DataMod.ADOTable_Despesas_DiariasDES_TIPO.Text = ´´) then
begin
ShowMessage(´O Tipo de Pagamento precisa ser informado!´);
Form_Despesas_Diarias.FTipoPagto.SetFocus;
ADOTable_Despesas_Diarias.Edit;
end;
end;
end.
Muito Obrigado POR QUALQUER AJUDA,
Alex
Estou usando Access com ADO e um Data Module onde coloco todos os meus DataSources e as suas respectivas ADOTables.
No momento em que estou incluindo um registro em uma Tabela X, eu preciso fazer uma validação de um campo não chave (Tenho o indice secundario), mas quando uso o comando LOCATE nessa mesma tabela, o evento BEFOREPOST é chamado e surge o erro ´Operação de várias etapas gerou um erros. Verifique cada valor de Status.´
Gostaria de saber como posso fazer para que o comando LOCATE funcione quando estou em inclusão, me sugeriram copiar um DATASET e usar o método CLONECURSOR, mas não entendi bem o que devo fazer.
Se puderem me passar os detalhes ficarei grato,
Aqui a rotina onde uso o LOCATE:
/ Verifica se o Cheque já não está na Tabela
if not DataSource_Despesas_Diarias2.DataSet.Locate(´DES_BANCO;DES_AGENC;DES_CHEQUE´,
VarArrayOf([DataMod.ADOTable_Despesas_DiariasDES_Banco.Value,
DataMod.ADOTable_Despesas_DiariasDES_Agenc.Value,
DataMod.ADOTable_Despesas_DiariasDES_Cheque.Text]),[]) then
begin
FNum_Cheque.Items.Add(FormatCurr(´0000000000´, I));
end;
Esta rotina é chamada quando o comando LOCATE é chamado e ocorre o erro:
procedure TDataMod.ADOTable_Despesas_DiariasBeforePost(DataSet: TDataSet);
begin
If (DataMod.ADOTable_Despesas_Diarias.State = DsInsert ) and
(DataMod.ADOTable_Despesas_DiariasDES_TIPO.Text = ´´) then
begin
ShowMessage(´O Tipo de Pagamento precisa ser informado!´);
Form_Despesas_Diarias.FTipoPagto.SetFocus;
ADOTable_Despesas_Diarias.Edit;
end;
end;
end.
Muito Obrigado POR QUALQUER AJUDA,
Alex
Alexsandro
Curtir tópico
+ 0
Responder
Posts
22/02/2005
Alexsandro
SOBE
Responder
Gostei + 0
22/02/2005
Somar
Seguinte - Vc não pode usar o mesmo componente - pois vc perderia o cursor ...
Eu uso um SqlClientDataSet auxiliar - e faço um sql buscando as informaçãoes desejadas . por exemplo
ao cadastrar um produto verifico se o codigo do produto digitado ja não esta cadastrado ...
Mas vc nõa pode fazer isso usando o mesmo componente que esta em insert - pois vc teria que cancelar a operação ..
Se eu entendi sua duvida é isso aí ...
t+
Eu uso um SqlClientDataSet auxiliar - e faço um sql buscando as informaçãoes desejadas . por exemplo
ao cadastrar um produto verifico se o codigo do produto digitado ja não esta cadastrado ...
Mas vc nõa pode fazer isso usando o mesmo componente que esta em insert - pois vc teria que cancelar a operação ..
Se eu entendi sua duvida é isso aí ...
t+
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)