editar os dados de um dbgrid em outro form
Olá pessoal, estou aqui dando seguimento ao desenvolvimento do meu tcc e tenho uma duvida..
Assim, tenho uma Dbgrid que realiza as consultas ok > frmconsultar
quando eu clico em um registro setado na grid abre um form > frmalterar
tenho edits e uma combobox no frmalterar...
o frmalterar esta ligada ao frmconsultar via query > data source ok
o problema é que os dados não estão aparecendo dos edits para poder alterar..
Já olhei muitos topicos mas não sei onde colocar as informações..
Desde já agradeço a ajuda.
Assim, tenho uma Dbgrid que realiza as consultas ok > frmconsultar
quando eu clico em um registro setado na grid abre um form > frmalterar
tenho edits e uma combobox no frmalterar...
o frmalterar esta ligada ao frmconsultar via query > data source ok
o problema é que os dados não estão aparecendo dos edits para poder alterar..
Já olhei muitos topicos mas não sei onde colocar as informações..
Desde já agradeço a ajuda.
Mauricio Nicoli
Curtidas 0
Respostas
Deivison Melo
29/08/2012
Vc está utilizando edit ou dbedit? Caso seja edit e eles deverão está com rotinas para que retornem os dados, caso sejam componentes dataware (dbedit e etc...) basta que eles estejam ligados ao dataset.
GOSTEI 0
Wesley Yamazack
29/08/2012
Olá meu caro, realmente como o amigo Deivison falou, tem que ver se você está usando o TEdit ou o TDBEdit.
Caso utilize o TDBEdit, deve associar o mesmo ao seu DataSource nas propriedades 'DataSource' e 'DataField' aos campos correspondentes.
Um abraço
Caso utilize o TDBEdit, deve associar o mesmo ao seu DataSource nas propriedades 'DataSource' e 'DataField' aos campos correspondentes.
Um abraço
GOSTEI 0
Mauricio Nicoli
29/08/2012
bem, liguei os campos conforme foi sugerido, apenas para facilitar minha vida, coloquei apenas dbedits e uma combobox..
quando eu clicar duas (2) vezes no registro setado no grid tem que abrir um form com todos os campos
preenchidos, porem quando eu clico no grid abre o form com os campos vazios..
no evento onchange do frmalterar do dbedit1.text do codigo eu coloquei o seguinte código..>> já está ligado ao DM.datasource
procedure Tfrmalterar.DBEdit1Change(Sender: TObject);
begin
DM.ClientDataSet.Locate('codigo.ADOQuerySQL.fieldByName(codigo).asstring],[loCaseInsensitive, loPartialKey)]');
end;
e da erro " Not enough actual parameters"
Observei que não consigo colocar a palavra "codigo" no DataField pois dá outro erro AdoQuerySql: Missing SQL property
Até onde eu sei falta comandos sql aqui, por isso o erro..
mas não to conseguindo descobrir quais são estes comandos..
quando eu clicar duas (2) vezes no registro setado no grid tem que abrir um form com todos os campos
preenchidos, porem quando eu clico no grid abre o form com os campos vazios..
no evento onchange do frmalterar do dbedit1.text do codigo eu coloquei o seguinte código..>> já está ligado ao DM.datasource
procedure Tfrmalterar.DBEdit1Change(Sender: TObject);
begin
DM.ClientDataSet.Locate('codigo.ADOQuerySQL.fieldByName(codigo).asstring],[loCaseInsensitive, loPartialKey)]');
end;
e da erro " Not enough actual parameters"
Observei que não consigo colocar a palavra "codigo" no DataField pois dá outro erro AdoQuerySql: Missing SQL property
Até onde eu sei falta comandos sql aqui, por isso o erro..
mas não to conseguindo descobrir quais são estes comandos..
GOSTEI 0
Armando Filho
29/08/2012
Se usares Edit em vez de DBEdit podes atribuir os valores no evento OnDataChange do Datasource ligado ao grid.
GOSTEI 0
Mauricio Nicoli
29/08/2012
amigo é o seguinte..
ai eu fiz um teste e coloquei assim..
procedure Tfrmalterar.DBEdit1Change(Sender: TObject);
begin
DM.ClientDataSet.Locate('codigo', DBedit1.text, [loCaseInsensitive, loPartialKey]);
end;
funcionou em partes..
o Dbedit monitor e o codigo não retornaram os campos, os demais todos
retornaram.
o codigo do Dbgrid..
procedure Tfrmconsultar.btnconsultarClick(Sender: TObject);
begin
DM.ClientDataSet.close;
DM.ADOQuerySQL.SQL.CLEAR;
DM.ADOQuerySQL.SQL.ADD('select codigo, filial, ip, nomepc, placamae, modelo, processador, placavideo, hd, placasom, memoria, placarede, monitor, sistemaop, soquete from componentes_filiais where filial like :filial');
DM.ADOQuerySQL.Parameters.ParamByName('filial').Value:= combobox.text;
DM.ClientDataSet.Open;
ai eu fiz um teste e coloquei assim..
procedure Tfrmalterar.DBEdit1Change(Sender: TObject);
begin
DM.ClientDataSet.Locate('codigo', DBedit1.text, [loCaseInsensitive, loPartialKey]);
end;
funcionou em partes..
o Dbedit monitor e o codigo não retornaram os campos, os demais todos
retornaram.
o codigo do Dbgrid..
procedure Tfrmconsultar.btnconsultarClick(Sender: TObject);
begin
DM.ClientDataSet.close;
DM.ADOQuerySQL.SQL.CLEAR;
DM.ADOQuerySQL.SQL.ADD('select codigo, filial, ip, nomepc, placamae, modelo, processador, placavideo, hd, placasom, memoria, placarede, monitor, sistemaop, soquete from componentes_filiais where filial like :filial');
DM.ADOQuerySQL.Parameters.ParamByName('filial').Value:= combobox.text;
DM.ClientDataSet.Open;
GOSTEI 0