GARANTIR DESCONTO

Fórum Inserir dados em tabela atraves do DBGrid #356583

04/04/2008

0

caros colegas, tenho um DBGrid onde eu edito as informaçoes de uma tabela ´detalhe´. o fato é que existe um campo (not null) nessa tabela que é o id da tabela mestre, denominado (idAmostra). no DBGrid eu deixo ele como (visible := false), pois o usuário nao deverá ve-lo.

o id da tabela mestre eu armazeno numa variavel global chamada idAmostra

eu gostaria que quando o usuário estivesse inserindo um novo dado nessa tabela detalhe por meio do DBGrid, que automaticamente fosse atribuido a variavel idAmostra no campo idAmostra da tabela...

estou usando o delphi 2007 + dbExpress + firebird 2.0

alguem saberia como fazer isso?
abraços a todos!


Mahdak

Mahdak

Responder

Posts

04/04/2008

Mahdak

bom em alguns minutos eu consegui escrevendo o seguinte codigo no evento ColEnter do DBGrid:

if DM.cdsAmostras01.State = dsInsert  then
  begin
    DM.cdsAmostras01ID_AMOSTRA.AsInteger := StrToInt(idAmostra);
  end;



nao sei se esse é o melhor procedimento a ser usado, por isso se alguem tiver alguma sugestão, por favor poste aqui.

obrigado a todos!


Responder

Gostei + 0

04/04/2008

Catunda

Basta que vc atribua o valor no evento OnNewRecord do ClientDataSet.
Lá não precisa testar se está em modo de inclusão. Apenas coloque a linha abaixo dentro do evento.

DM.cdsAmostras01ID_AMOSTRA.AsInteger := StrToInt(idAmostra);

Da maneira que está no colenter do dbgrid, ele vai atribuir o valor cada vez que vc mudar de coluna durante a inclusão do registro.


Responder

Gostei + 0

14/04/2008

Mahdak

certo, funcionou perfeitamente, porém nesse mesmo ClientDataSet eu tenho tambem um campo do tipo Lookup, no qual no dbGrid aparece como um ComboBox que recupera um determinado campo (campo descriçao) de uma tabela. eu tambem necessitaria recuperar o valor de um determinado campo (campo limite) dessa tabela ligada ao Lookup.

se eu fizer isso no evento OnNewRecord do ClientDataSet, o valor que foi inserido no ultimo registro, se repete no proximo. eu precisaria que ao escolher o registro no combobox do dbgrid, seja inserido no mesmo o valor recuperado da tabela relacionada ao lookup. nao sei qual o evento mais apropriado para fazer isso...

atualmente fasso assim:

procedure TDM.cdsClassf02NewRecord(DataSet: TDataSet);
begin
cdsClassf02ID_CLASSF01.AsInteger := StrToInt(frmCadClassificacao.idClassificacao); // insere o ID 
cdsClassf02LIMITE.AsString  := DM.cdsRAnF_LIMITE_MAXIMO.AsString; //aqui os valores se repetem quando insiro um novo registro
  end;
end;


obrigado pela atençao!
um forte abraço!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar