RENOMEAR ITENS DE UM COMBOBOX COM ATRIBUTOS DE UMA TABELA
Pessoal estou com um probleminha fiz uma pesquisa baseado nos atributos das minhas tabelas de modo que meu combobox fique assim por exemmplo se a tabela for a de cliente
os itens do combobox vao ficar assim
ID_CLIENTE
NOME
ENDERECO
CIDADE
de acordo com os atributos que tem na minha tabela porem eu quero renomea-los para que fique mais bonito e elegante desse jeito
Cód. Cliente
Nome
Endereço
Cidade
a funcao para levar os atributos ao combobox foram essas
no evento formshow: (lembrando que esse é meu form modelo pois fiz os outros com herança dele)
procedure TF_Modelo.FormShow(Sender: TObject);
var I: integer;
begin
for I := 0 to DtsConsulta.DataSet.FieldCount - 1 do
begin
if DtsConsulta.DataSet.Fields[I].DataType in [ftString, ftWideString, ftInteger, ftFixedChar] then
cbCampo.Items.Add(DtsConsulta.DataSet.Fields[I].FieldName);
e no onclick do botao foi essa (lembrando que esse é meu form modelo pois fiz os outros com herança dele)
if rbcontem.Checked then
_pesquisa := cbCampo.Text + ' Like ' + QuotedStr('%' + edtPesquisar.Text + '%' )
else if rbComeca.Checked then
_pesquisa := cbCampo.Text + ' Like ' + QuotedStr( edtPesquisar.Text + '%' );
with TClientDataSet (dtsconsulta.DataSet) do
begin
close;
CommandText:= _txt + _pesquisa;
open;
end;
QUEM PUDER ME AJUDAR EU AGRADEÇO
ABRAÇO
os itens do combobox vao ficar assim
ID_CLIENTE
NOME
ENDERECO
CIDADE
de acordo com os atributos que tem na minha tabela porem eu quero renomea-los para que fique mais bonito e elegante desse jeito
Cód. Cliente
Nome
Endereço
Cidade
a funcao para levar os atributos ao combobox foram essas
no evento formshow: (lembrando que esse é meu form modelo pois fiz os outros com herança dele)
procedure TF_Modelo.FormShow(Sender: TObject);
var I: integer;
begin
for I := 0 to DtsConsulta.DataSet.FieldCount - 1 do
begin
if DtsConsulta.DataSet.Fields[I].DataType in [ftString, ftWideString, ftInteger, ftFixedChar] then
cbCampo.Items.Add(DtsConsulta.DataSet.Fields[I].FieldName);
e no onclick do botao foi essa (lembrando que esse é meu form modelo pois fiz os outros com herança dele)
if rbcontem.Checked then
_pesquisa := cbCampo.Text + ' Like ' + QuotedStr('%' + edtPesquisar.Text + '%' )
else if rbComeca.Checked then
_pesquisa := cbCampo.Text + ' Like ' + QuotedStr( edtPesquisar.Text + '%' );
with TClientDataSet (dtsconsulta.DataSet) do
begin
close;
CommandText:= _txt + _pesquisa;
open;
end;
QUEM PUDER ME AJUDAR EU AGRADEÇO
ABRAÇO
Fabio
Curtidas 0
Respostas
Felippe Tadeu
27/04/2014
Sobre o nome, você poderá estar alterando a propriedade Display Name de cada field do componente que representa o DataSet.
GOSTEI 0
Fabio
27/04/2014
Cara isso eu ja resolvi mudando o display label dele, e mandando pega-lo em vez do fieldName
agora estou com outro problema :
se o Produto Cadastrado ja Teve Algum movimento (entrada, Saida, Venda) e o sistema tem que proibir a exclusão só que nao qual metodo usar para fazer isso, porque eu tenho a tabela MOVIMENTOS dae queria saber a formula que eu poderia fazer essa validacao se puder me ajudar eu agradeço;
agora estou com outro problema :
se o Produto Cadastrado ja Teve Algum movimento (entrada, Saida, Venda) e o sistema tem que proibir a exclusão só que nao qual metodo usar para fazer isso, porque eu tenho a tabela MOVIMENTOS dae queria saber a formula que eu poderia fazer essa validacao se puder me ajudar eu agradeço;
GOSTEI 0
Felippe Tadeu
27/04/2014
Quais componentes de conexão você usa ?
TADOQuery, TClienteDataSet ?
TADOQuery, TClienteDataSet ?
GOSTEI 0
Fabio
27/04/2014
eu uso ClientDataSet ligado a um provider que é ligado a um SQLdataset que é ligado a um SqlConection
entendeu como funciona?
entendeu como funciona?
GOSTEI 0
Felippe Tadeu
27/04/2014
Boa noite.
Bem cara, existem várias maneiras de se fazer isso.
Uma delas seria vc salvar o código do produto e fazer um filtro no ClientDataSet de movimentação ou a que contenha o código do produto, como por exemplo no evento de clicar no botão de excluir:
Obs: Vc pode ao invés de colocar DataSource vc pode colocar o name do DataModule concatenado com "." e concatenado com o name do ClientDataSet
Bem cara, existem várias maneiras de se fazer isso.
Uma delas seria vc salvar o código do produto e fazer um filtro no ClientDataSet de movimentação ou a que contenha o código do produto, como por exemplo no evento de clicar no botão de excluir:
procedure Form1.btnExcluiOnClick(Sender: TObject);
begin
DataSource.DataSet.Filtered := False;
DataSource.DataSet.Filter := 'ID_PRODUTO = '+IntToStr(CodigoProduto);
DataSource.DataSet.Filtered := True;
if (DataSource.DataSet.RecordCount > 0) then
begin
ShowMessage('Existe movimentação para esse produto, por isso não poderá ser excluído');
Abort;
end;
end;
Obs: Vc pode ao invés de colocar DataSource vc pode colocar o name do DataModule concatenado com "." e concatenado com o name do ClientDataSet
GOSTEI 0
Fabio
27/04/2014
ola amigo o que seria o códigodoProduto?
nessa funcao aqui
+IntToStr(CodigoProduto);??
nessa funcao aqui
+IntToStr(CodigoProduto);??
GOSTEI 0
Fabio
27/04/2014
para facilitar minha tela de cadastro é assim ...[img]http://arquivo.devmedia.com.br/forum/imagem/368071-20140513-002314.jpg[/img]
nao possui nem um dbedit ou edit que armazene o codigo do produto pois estao todos com generator...
nao possui nem um dbedit ou edit que armazene o codigo do produto pois estao todos com generator...
GOSTEI 0
Felippe Tadeu
27/04/2014
Bom dia.
Amigo, quando acontece do usuário clicar 1 ou 2 vezes num registro da TDBGrid, o TDataSet referente a TDBGrid também será setado ou seja, vc terá a sua disposição o código do produto que o usuário escolheu.
Então existe algumas formas de vc fazer isso.
No ClientDataSet da Grid, veja qual é a posição do campo do código do produto. (comece a contar do 0).
Depois que vc achar a posição vá no evento OnClick do botão excluir ou no evento que será programado para excluir o produto e siga a seguinte lógica:
Observações:
1 A variável posição é do Tipo Inteiro e é referente a posição do código do Produto que está no ClientDataSet ligado a Grid.
2 ClientDataSetMovimentacao deverá ser ter o código do produto para que o filtro funcione.
Amigo, quando acontece do usuário clicar 1 ou 2 vezes num registro da TDBGrid, o TDataSet referente a TDBGrid também será setado ou seja, vc terá a sua disposição o código do produto que o usuário escolheu.
Então existe algumas formas de vc fazer isso.
No ClientDataSet da Grid, veja qual é a posição do campo do código do produto. (comece a contar do 0).
Depois que vc achar a posição vá no evento OnClick do botão excluir ou no evento que será programado para excluir o produto e siga a seguinte lógica:
procedure Form1.excluiProdutos;
begin
dm.ClientDataSetMovimentacao.Filtered := False;
dm.ClientDataSetMovimentacao.Filter := 'CODIGOPRODUTO = '+ClientDataSetDaGrid.Fields[posicao].AsString;
dm.ClientDataSetMovimentacao.Filtered := True;
if (dm.ClientDataSetMovimentacao.RecordCount > 0) then
begin
ShowMessage('Produto com movimentação');
Abort;
end
else
begin
// Aqui vc implementa a exclusão do produto conforme desejar
end;
end;
Observações:
1 A variável posição é do Tipo Inteiro e é referente a posição do código do Produto que está no ClientDataSet ligado a Grid.
2 ClientDataSetMovimentacao deverá ser ter o código do produto para que o filtro funcione.
GOSTEI 0
Wilton Júnior
27/04/2014
procedure Form1.excluiProdutos;
begin
dm.ClientDataSetMovimentacao.Filtered := False;
dm.ClientDataSetMovimentacao.Filter := 'CODIGOPRODUTO = '+ClientDataSetDaGrid.Fields[posicao].AsString;
dm.ClientDataSetMovimentacao.Filtered := True;
if (dm.ClientDataSetMovimentacao.RecordCount > 0) then
begin
ShowMessage('Produto com movimentação');
Abort;
end
else
begin
// Aqui vc implementa a exclusão do produto conforme desejar
end;
end;
Tenta assim vê o que da:
procedure Form1.excluiProdutos;
begin
if dm.ClientDataSetMovimentacao.locate('CODIGOPRODUTO';ClientDataSetDaGrid.Fields[posicao].AsString;[]) then
begin
ShowMessage('Produto com movimentação');
Abort;
exit;
end;
end;
begin
dm.ClientDataSetMovimentacao.Filtered := False;
dm.ClientDataSetMovimentacao.Filter := 'CODIGOPRODUTO = '+ClientDataSetDaGrid.Fields[posicao].AsString;
dm.ClientDataSetMovimentacao.Filtered := True;
if (dm.ClientDataSetMovimentacao.RecordCount > 0) then
begin
ShowMessage('Produto com movimentação');
Abort;
end
else
begin
// Aqui vc implementa a exclusão do produto conforme desejar
end;
end;
Tenta assim vê o que da:
procedure Form1.excluiProdutos;
begin
if dm.ClientDataSetMovimentacao.locate('CODIGOPRODUTO';ClientDataSetDaGrid.Fields[posicao].AsString;[]) then
begin
ShowMessage('Produto com movimentação');
Abort;
exit;
end;
end;
GOSTEI 0
Fabio
27/04/2014
para facilitar minha tela de cadastro é assim ...[img]http://arquivo.devmedia.com.br/forum/imagem/368071-20140513-002314.jpg[/img]
nao possui nem um dbedit ou edit que armazene o codigo do produto pois estao todos com generator...
nao possui nem um dbedit ou edit que armazene o codigo do produto pois estao todos com generator...
NO POSICAO COLOQUEI 0 QUE E ONDE ESTA MEU ID_PRODUTO POREM QUANDO CLICQUEI NO BOTAO NADA ACONTECEU SO EXECUTO O COMANDO DEBAIXO QUE EU IMPLANTEI
procedure TF_Produto.btnExcluirClick(Sender: TObject);
begin
inherited;
dm.cds_movi.Open;
dm.cds_movi.Filtered := False;
dm.cds_movi.Filter := 'ID_PRODUTO = '+DMPesq.cds_PesqProduto.Fields[0].AsString;
dm.cds_movi.Filtered := True;
if (dm.Cds_movi.RecordCount > 0) then
begin
ShowMessage('Produto com movimentação');
Abort;
end
else
begin
if MessageDlg('Deseja mesmo excluir este registro?',mtInformation, [mbYes, mbNo],0) = mrYes then
begin
if not DtsConsulta.DataSet.IsEmpty then //Verifica se nao esta vazio
begin
DtsConsulta.DataSet.Delete;
if dtsConsulta.DataSet is TClientDataSet then //compara se dtsconsulta e da classe Tclientdataset
TClientDataSet (dtsconsulta.DataSet).ApplyUpdates(0);// se for da o applyupdt
ShowMessage('Exclusão realizada com Exito');
end;
Leitura('L');
end;
end;
GOSTEI 0
Fabio
27/04/2014
Bom dia.
Amigo, quando acontece do usuário clicar 1 ou 2 vezes num registro da TDBGrid, o TDataSet referente a TDBGrid também será setado ou seja, vc terá a sua disposição o código do produto que o usuário escolheu.
Então existe algumas formas de vc fazer isso.
No ClientDataSet da Grid, veja qual é a posição do campo do código do produto. (comece a contar do 0).
Depois que vc achar a posição vá no evento OnClick do botão excluir ou no evento que será programado para excluir o produto e siga a seguinte lógica:
Observações:
1 A variável posição é do Tipo Inteiro e é referente a posição do código do Produto que está no ClientDataSet ligado a Grid.
2 ClientDataSetMovimentacao deverá ser ter o código do produto para que o filtro funcione.
Amigo, quando acontece do usuário clicar 1 ou 2 vezes num registro da TDBGrid, o TDataSet referente a TDBGrid também será setado ou seja, vc terá a sua disposição o código do produto que o usuário escolheu.
Então existe algumas formas de vc fazer isso.
No ClientDataSet da Grid, veja qual é a posição do campo do código do produto. (comece a contar do 0).
Depois que vc achar a posição vá no evento OnClick do botão excluir ou no evento que será programado para excluir o produto e siga a seguinte lógica:
procedure Form1.excluiProdutos;
begin
dm.ClientDataSetMovimentacao.Filtered := False;
dm.ClientDataSetMovimentacao.Filter := 'CODIGOPRODUTO = '+ClientDataSetDaGrid.Fields[posicao].AsString;
dm.ClientDataSetMovimentacao.Filtered := True;
if (dm.ClientDataSetMovimentacao.RecordCount > 0) then
begin
ShowMessage('Produto com movimentação');
Abort;
end
else
begin
// Aqui vc implementa a exclusão do produto conforme desejar
end;
end;
Observações:
1 A variável posição é do Tipo Inteiro e é referente a posição do código do Produto que está no ClientDataSet ligado a Grid.
2 ClientDataSetMovimentacao deverá ser ter o código do produto para que o filtro funcione.
NO POSICAO COLOQUEI 0 QUE E ONDE ESTA MEU ID_PRODUTO POREM QUANDO CLICQUEI NO BOTAO NADA ACONTECEU SO EXECUTO O COMANDO DEBAIXO QUE EU IMPLANTEI
procedure TF_Produto.btnExcluirClick(Sender: TObject);
begin
inherited;
dm.cds_movi.Open;
dm.cds_movi.Filtered := False;
dm.cds_movi.Filter := 'ID_PRODUTO = '+DMPesq.cds_PesqProduto.Fields[0].AsString;
dm.cds_movi.Filtered := True;
if (dm.Cds_movi.RecordCount > 0) then
begin
ShowMessage('Produto com movimentação');
Abort;
end
else
begin
if MessageDlg('Deseja mesmo excluir este registro?',mtInformation, [mbYes, mbNo],0) = mrYes then
begin
if not DtsConsulta.DataSet.IsEmpty then //Verifica se nao esta vazio
begin
DtsConsulta.DataSet.Delete;
if dtsConsulta.DataSet is TClientDataSet then //compara se dtsconsulta e da classe Tclientdataset
TClientDataSet (dtsconsulta.DataSet).ApplyUpdates(0);// se for da o applyupdt
ShowMessage('Exclusão realizada com Exito');
end;
Leitura('L');
end;
end;
GOSTEI 0
Wilton Júnior
27/04/2014
Por acaso esse seu clientdataset esta ligado a um datasetprovider e ligado numa query que ser for a forma que vc tah fazendo é só par ater dor de cabeça.
GOSTEI 0
Fabio
27/04/2014
nao ta ligado a um provider que é ligado a um sqldataset
GOSTEI 0
Felippe Tadeu
27/04/2014
Quando vc debuga, passa por onde ?
Ele não entra no if do RecordCount ?
Ele não entra no if do RecordCount ?
GOSTEI 0
Wilton Júnior
27/04/2014
O problema é esse Colega vc ta fazendo o client filtrar informação sendo que não a necessidade, chega em um tabela virtual se existe movimento de estoque ou não se existe vc executa outras operações.
GOSTEI 0
Fabio
27/04/2014
sim ele percorre normal como se o produto nao tivesse movimento e dae
pula pra parte debaixo e executa a exclusao
pula pra parte debaixo e executa a exclusao
GOSTEI 0
Fabio
27/04/2014
O problema é esse Colega vc ta fazendo o client filtrar informação sendo que não a necessidade, chega em um tabela virtual se existe movimento de estoque ou não se existe vc executa outras operações.
ja ouvi falar em tabela virtual,
no caso coloca um clientdataset no form adiciona os campos manualmente lá e configura suas propiedades vc quer dizer?
GOSTEI 0
Felippe Tadeu
27/04/2014
Mas qual seria o problema com o filtrar pela client ?
GOSTEI 0
Fabio
27/04/2014
olha tambem nao vejo problema em filtrar pelo CDS porem tem que achar alguma maneira que verifique se o produto selecionado ta na tabela movimento e impedi-lo de excluir, ou
melhor dar a mensagem porque nao exclui por ser foreng key da tabela movimento ...
melhor dar a mensagem porque nao exclui por ser foreng key da tabela movimento ...
GOSTEI 0
Felippe Tadeu
27/04/2014
Quando vc debuga aparece algum valor para DMPesq.cds_PesqProduto.Fields[0].AsString ?
GOSTEI 0
Fabio
27/04/2014
Quando vc debuga aparece algum valor para DMPesq.cds_PesqProduto.Fields[0].AsString ?
cara aparece assim quando eu passo o mous sobre as Asstring:
DMPesq.cds_PesqProduto.Fields[0].Asstring '39'
39 seria o codigo do produto que é o codigo do produto
dae quando eu por cima do zero 0 : 0
GOSTEI 0
Felippe Tadeu
27/04/2014
Existe movimentação para esse produto mesmo ?kkk
GOSTEI 0
Fabio
27/04/2014
sim certeza absoluta kkk
fiz o teste vi na tabela e exclui so pra ver ao atualizar ele volta ali nao exclui
fiz o teste vi na tabela e exclui so pra ver ao atualizar ele volta ali nao exclui
GOSTEI 0
Fabio
27/04/2014
Existe movimentação para esse produto mesmo ?kkk
cara qual outro metodo sera que da pra usar ?
GOSTEI 0
Felippe Tadeu
27/04/2014
Cara, vc pode fazer algo parecido com que eu falei, a única diferença é que ao invés de vc filtrar vc teria que estar usando uma nova query e fazendo um select por essa nova query(pode ser criada em tempo de execução) e fazendo um select com ela e fazer a cláusula where com o código do produto.
Daí vc iria verificar se existe registros ou não.
Assim também funcionaria.
Daí vc iria verificar se existe registros ou não.
Assim também funcionaria.
GOSTEI 0
Fabio
27/04/2014
Cara, vc pode fazer algo parecido com que eu falei, a única diferença é que ao invés de vc filtrar vc teria que estar usando uma nova query e fazendo um select por essa nova query(pode ser criada em tempo de execução) e fazendo um select com ela e fazer a cláusula where com o código do produto.
Daí vc iria verificar se existe registros ou não.
Assim também funcionaria.
Daí vc iria verificar se existe registros ou não.
Assim também funcionaria.
sim eu tambem pensei em uma query porem é meu primeiro programa to formando em ADS esse é meu tcc, dai precisa que se possivel coloca-se um exemplo de código pra
mim seguir e adaptar no meu
GOSTEI 0
Fabio
27/04/2014
Pessoal fiz o Seguinte código funcionou troquei recordcount por isempty ele bloqueia a exclusao porem o produto que nao possui movimentacao ele tambem bloqueia
segue o codigo:
begin
dm.cds_movi.Open;
dm.cds_movi.Filtered := False;
dm.cds_movi.Filter := 'ID_PRODUTO = '+DMPesq.cds_PesqProduto.Fields[0].AsString;
dm.cds_movi.Filtered := True;
if (dm.Cds_movi.IsEmpty) then
begin
MessageDlg('Produto já possui movimentos!',mterror, [mbok],0);
Abort;
end
else
begin
inherited;
end;
end;
o que sera que tem que fazer para ajustar isso?
segue o codigo:
begin
dm.cds_movi.Open;
dm.cds_movi.Filtered := False;
dm.cds_movi.Filter := 'ID_PRODUTO = '+DMPesq.cds_PesqProduto.Fields[0].AsString;
dm.cds_movi.Filtered := True;
if (dm.Cds_movi.IsEmpty) then
begin
MessageDlg('Produto já possui movimentos!',mterror, [mbok],0);
Abort;
end
else
begin
inherited;
end;
end;
o que sera que tem que fazer para ajustar isso?
GOSTEI 0
Fabio
27/04/2014
Cara, vc pode fazer algo parecido com que eu falei, a única diferença é que ao invés de vc filtrar vc teria que estar usando uma nova query e fazendo um select por essa nova query(pode ser criada em tempo de execução) e fazendo um select com ela e fazer a cláusula where com o código do produto.
Daí vc iria verificar se existe registros ou não.
Assim também funcionaria.
Daí vc iria verificar se existe registros ou não.
Assim também funcionaria.
Pessoal fiz o Seguinte código funcionou troquei recordcount por isempty ele bloqueia a exclusao porem o produto que nao possui movimentacao ele tambem bloqueia
segue o codigo:
begin
dm.cds_movi.Open;
dm.cds_movi.Filtered := False;
dm.cds_movi.Filter := 'ID_PRODUTO = '+DMPesq.cds_PesqProduto.Fields[0].AsString;
dm.cds_movi.Filtered := True;
if (dm.Cds_movi.IsEmpty) then
begin
MessageDlg('Produto já possui movimentos!',mterror, [mbok],0);
Abort;
end
else
begin
inherited;
end;
end;
o que sera que tem que fazer para ajustar isso?
GOSTEI 0
Fabio
27/04/2014
procedure Form1.excluiProdutos;
begin
dm.ClientDataSetMovimentacao.Filtered := False;
dm.ClientDataSetMovimentacao.Filter := 'CODIGOPRODUTO = '+ClientDataSetDaGrid.Fields[posicao].AsString;
dm.ClientDataSetMovimentacao.Filtered := True;
if (dm.ClientDataSetMovimentacao.RecordCount > 0) then
begin
ShowMessage('Produto com movimentação');
Abort;
end
else
begin
// Aqui vc implementa a exclusão do produto conforme desejar
end;
end;
Tenta assim vê o que da:
procedure Form1.excluiProdutos;
begin
if dm.ClientDataSetMovimentacao.locate('CODIGOPRODUTO';ClientDataSetDaGrid.Fields[posicao].AsString;[]) then
begin
ShowMessage('Produto com movimentação');
Abort;
exit;
end;
end;
begin
dm.ClientDataSetMovimentacao.Filtered := False;
dm.ClientDataSetMovimentacao.Filter := 'CODIGOPRODUTO = '+ClientDataSetDaGrid.Fields[posicao].AsString;
dm.ClientDataSetMovimentacao.Filtered := True;
if (dm.ClientDataSetMovimentacao.RecordCount > 0) then
begin
ShowMessage('Produto com movimentação');
Abort;
end
else
begin
// Aqui vc implementa a exclusão do produto conforme desejar
end;
end;
Tenta assim vê o que da:
procedure Form1.excluiProdutos;
begin
if dm.ClientDataSetMovimentacao.locate('CODIGOPRODUTO';ClientDataSetDaGrid.Fields[posicao].AsString;[]) then
begin
ShowMessage('Produto com movimentação');
Abort;
exit;
end;
end;
Pessoal fiz o Seguinte código funcionou troquei recordcount por isempty ele bloqueia a exclusao porem o produto que nao possui movimentacao ele tambem bloqueia
segue o codigo:
begin
dm.cds_movi.Open;
dm.cds_movi.Filtered := False;
dm.cds_movi.Filter := 'ID_PRODUTO = '+DMPesq.cds_PesqProduto.Fields[0].AsString;
dm.cds_movi.Filtered := True;
if (dm.Cds_movi.IsEmpty) then
begin
MessageDlg('Produto já possui movimentos!',mterror, [mbok],0);
Abort;
end
else
begin
inherited;
end;
end;
o que sera que tem que fazer para ajustar isso?
GOSTEI 0
Felippe Tadeu
27/04/2014
begin
dm.cds_movi.Open;
dm.cds_movi.Filtered := False;
dm.cds_movi.Filter := 'ID_PRODUTO = '+DMPesq.cds_PesqProduto.Fields[0].AsString;
dm.cds_movi.Filtered := True;
if (dm.Cds_movi.IsEmpty) then
begin
MessageDlg('Produto já possui movimentos!',mterror, [mbok],0);
Abort;
end
else
begin
inherited;
end;
end;
Bom dia.
No caso amigo o if (dm.Cds_movi.IsEmpty) then está querendo dizer: se o cds estiver vazio faça: MessageDlg('Produto já possui movimentos!',mterror, [mbok],0);
Existe um erro na lógica.
GOSTEI 0
Fabio
27/04/2014
poise e com recordcount nao pega :(
sei la o que vou fazer tem que bolar outro jeito com um select
sei la o que vou fazer tem que bolar outro jeito com um select
GOSTEI 0
Fabio
27/04/2014
pessoal a principio consegui resolver o Problema da seguiinte maneira coloquei esse código no evento ReconcileError do meu clientdataset
begin
if Pos('VIOLATION OF FOREIGN KEY',UpperCase(E.Message))>0 then begin
Action := raCancel;
MessageDlg('Registro não pode ser excluido'+#13+
'Produto já Possui Movimentos',mterror,[mbOK],0);
Abort;
Exit;
end
begin
if Pos('VIOLATION OF FOREIGN KEY',UpperCase(E.Message))>0 then begin
Action := raCancel;
MessageDlg('Registro não pode ser excluido'+#13+
'Produto já Possui Movimentos',mterror,[mbOK],0);
Abort;
Exit;
end
GOSTEI 0
Nelson Santos
27/04/2014
ganhe dinheiro com softwares 3D em Delphi 7
http://www.3dsistemas.com.br
http://www.3dsistemas.com.br
GOSTEI 0