Fórum Required - Mudar via codigo #300518
24/10/2005
0
tem o seguinte codigo:
dspadrao.dataset.open;
dspadrao.dataset.fields.fieldbyname(´codigo´).required := false;
panel2.visible := false;
isto não funciona quando tento gravar, então coloquei o codigo assim
dspadrao.dataset.append;
dspadrao.dataset.fields.fieldbyname(´codigo´).required := false;
dspadrao.dataset.post;
data.cdcliente.applyupdates(0);
o erro acontece na linha do post;
o que posso fazer, não gostaria de adicionar os fields nos componentes.
Parece que a aplicação fica mais pesada, e não posso reaproveitar o
componente depois.
Valeu
Emarcolongo
Curtir tópico
+ 0Posts
24/10/2005
Marlon Spiess
0 - valor padrão (não requerido)
1 - valor alterado (obrigatório)
Espero ter ajudado
Gostei + 0
25/10/2005
Firekiller
var
NumCampo:Integer;
Campos:TStringList;
Campos := TStringList.Create;
dspadrao.dataset.GetFieldNames(Campos);
NumCampo := Campos.IndexOf( ´NomeDoCampo´ );
Campos.Free;
if NumCampo >= 0 then
dspadrao.dataset.fields[ NumCampo ].Required := True //Ou False
else
Showmessage(´Campo Não Localizado!´);
Testei diretamente com FieldByName e o erro acontece (principalmente com ClientDataSet) quando a busca é pelo nome do campo, porém quando a busca é pelo índice, funciona normal.
Pelo que percebi no código (me corrija se eu estiver errado) você tá tentando definir o required do campo do Dataset (deve ser algum componente do DBExpress tipo SQLDataset) para ele não exigir o campo no cadastro do ClientDataset, se for, creio que o trecho acima irá ajudar.
Gostei + 0
25/10/2005
Emarcolongo
sofrendo com isto
deixe-me explicar a situação corretamente. No Data Module, tenho um
slqconnection, um sqldataset, um datasetprovider e um clientdataset
todos conectados entre si nesta ordem.
No sqldataset, no commandtext esta assim: select * from cliente
No form de cadastro de cliente tenho um datasource que esta ligado ao
meu clientdataset do datamodule.
Quando abro a tela esta assim: datasource1.dataset.open;
já tentei colocar o não requerido aqui.
O codigo do botão inserir esta assim: datasource1.dataset.append;
e o do botão gravar esta assim:
datasource1.dataset.post;
datamodule.clientdataset.applyupdates(0);
tentei colocar o codigo que passei anteriormente antes do post, que é
onde o sistema trava, mas não funcionou.
tentei também colocar assim: datasource1.dataset.fields[0].requerid := false, mas também não adiantou.
tentei nas procedures beforeinsert e beforepost do clientdataset também.
E agora ? estou sem idéias.
Gostei + 0
25/10/2005
Firekiller
Gostei + 0
26/10/2005
Emarcolongo
Gostei + 0
28/10/2005
Emarcolongo
Gostei + 0
30/10/2005
Firekiller
No evento AfterOpen do SQLDATASET você troca o valor da propriedade Required:
SQLDATASET.Fields[0].Required := False;
ou
SQLDATASET.FieldByName(´NomeDoCampo´).Required := False;
Isso fará com que o clientdataset pegue automaticamente o valor dessa restrição do sqldataset. Se não funcionar, poste novamente.
Gostei + 0
31/10/2005
Emarcolongo
Funcionou perfeitamente. Se precisar de alguma coisa pode contar.
Valeu.
Gostei + 0
06/01/2006
Emarcolongo
e o codigo não funciona mais.
Alguma sugestão ??
Grato
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)