DBGrid

Delphi

19/03/2007

Ola galera blz???


Minha primeira duvida!!! hehehe

Sou novado por favor naum riam de mim... heheh

seguinte faço um pesquisa atraves de um query que joga o resultado em um DBGrid, gostaria de saber como pegar um resultado dessa pesuisa e jogar para um DBEdit clicando no DBGrid.. Qual evento?? Codigo???

Abraço.........PH


Pedro.phds

Pedro.phds

Curtidas 0

Respostas

Diegus

Diegus

19/03/2007

No DBEDIT tem a propriedade DataSource...
No DBGRID também...

Liga o DataSource do DBEdit com o mesmo do DBGRID...

Assim q vc selecionar um registro dentro da grid o DataSource irá ponteirar para o registro selecionado...
Assim... o DBEDIT, quem tem o mesmo datasource do DBGRID... irá, automáticamente, ser alterado sem necessidade de código adicional...

Será que resolve?

Att.


GOSTEI 0
Pedro.phds

Pedro.phds

19/03/2007

certo mais o DS do Dgrid é ligado a uma query..
e ds do dbedit é ligado a um clientedataset pois são os mesmo dbedit da tela de cadastro..

Sera que o jeito que fiz esta correto???

Obrigado pela atenção


GOSTEI 0
Michelli88

Michelli88

19/03/2007

Ola Pedro.

Se voce quer jogar o q ta no DBGrid para um TEdit, nao precisa usar um TDBEdit.

no evento OnCellClick do DBGrid1, coloque o seguinte código:

 Edit1.Text := DBGrid1.SelectedField.Text;



GOSTEI 0
Pedro.phds

Pedro.phds

19/03/2007

Ola Michele!!!

Seguinte desse jeito da certo mais eu preciso é para poder editar os campos!!

E estou tentando fazer na mesma tela do cadastro...

VC sabe algum jeito.

Obrigado


GOSTEI 0
Diegus

Diegus

19/03/2007

Vamos ver se eu entendi.

Você tem uma tela com um DBGRID ligado a um datasource... que está ligado a uma query... certo....

Vc tem dbedits ligado a outro datasource.....

Não consegui entender esta parte.... esclarece mais q estou pronto pra te ajudar...

Se vc quer editar os dados do dbgrid pelo dbedit.. é só ligar no mesmo datasource...

Estamos ai...


GOSTEI 0
Pedro.phds

Pedro.phds

19/03/2007

Ola Diego!!!

seguinte tenho uma tela de cadastro com os dbedits ligados a um Data Source por sua vez ligado a um IBCliente Data Set.

Esta funcionando bem..

Nesta tela tenho um botão pesquisar e que chama um tela de pesquisa com um dbgrid e um edit o dgrid é ligado a um data source local que é ligado a uma query para executar os comandos sql.

Quero fazer o seguinte clicar em uma linha do dbgrid e ele jogue osses valores para os dbedit da tela de cadastro para poder editalos e salvalos..

mas se eu jogo como o .text do dbedit assim que clico no dbedit ele volta pra primeira registro da minha tabela naum deixando eu editar o registro selecionado no dbgrid..

Escrevendo é foda mais acho que é isso!!

Obrigado pela atenção


GOSTEI 0
Marco Salles

Marco Salles

19/03/2007

Nesta tela tenho um botão pesquisar e que chama um tela de pesquisa com um dbgrid e um edit o dgrid é ligado a um data source local que é ligado a uma query para executar os comandos sql.


não sei se é o seu caso mas se voce tiver usando o BDE com query , em algumas consultas mais ´complicadas´ , os Registros não são passíveis de edição.
Voce tem que usar o Componente TupdateSql para ´Libera-los´...


GOSTEI 0
Diegus

Diegus

19/03/2007

Ahh.. to começando a entender..

Faz o seguinte então: (Vê se eh isso)

Quando vc selecionar o registro da grid ele vai ter um ID.. salva essa ID numa variável global na tela de pesquisa... (Se quiser)

Quando der ok, da um locate na query da tela de cadastro...

query.locate(´CODIGO´, Pesquisa.ID, []);


Ai a query da tela de cadastro vai estar ponteirada...

Verifique se vc nao esta abrindo a query no activate da tela de cadastro..

Vê se ajuda...

Estamos ae


GOSTEI 0
Pedro.phds

Pedro.phds

19/03/2007

Fiz assim ohh

[/code]DM.DS_Pessoa.DataSet:=DataSource.DataSet;

ai ele seta certinho o registro mais naum deixa editar os dbedts 

o botão editar esta com o fonte assm:

With DM do
begin
if not CDS_Pessoa.Active then
begin
CDS_Pessoa.PacketRecords:= 10;
CDS_Pessoa.Open;
end;

CDS_Pessoa.Edit;
PanelNovo.Visible:=False;
PanelConfirma.Visible:=True;
BitBtnConfirma.Caption:=´&Confirma´;
F_PesqPessoa.ShowModal;
end;

Sera que tme algo errado???



GOSTEI 0
Diegus

Diegus

19/03/2007

Ta meio estranho...

Vc tem uma tela de cadastro e uma tela de pesquisa...

Na tela de cadastro vc tem os procedimentos padrões...
Editar e tal...

Na tela de pesquisa tem outra query somente para a pesquisa.. .

No cadastro tem um DataSource funcionando certo.. quando vc navega nos registros vc consegue alterar....

No botão pesquisar...
Vc vai chamar o form de pesquisa com FrmPesquisa.SHOWMODAL.. ai vai selecionar o dado que vc quer alterar la e dar OK...

O DBGRID ta ligado a esta query local da tela de pesquisa... .

Declara uma variável pública
Public
  ID : integer;


Quando vc der ok...
vc vai fazer o seguinte:

if querypesquisaID.asInteger <> 0 then
  ID := querypesquisaID.asInteger
Close;


Nisso vc salvou o codigo do registro selecionado no grid e fechou a tela de pesquisa e está retornando para a linha seguinde depois do SHOWMODAL que vc deu la em cima...

Depois do ShowModal.. vc vai colocar
queryCadastro.Locate(´CODIGO_TABELA´, ´FrmPesquisa.ID, []);


No botão editar vc vai dar um EDIT normal.. pq pra editar vc tem q ter os dados na tela...

queryCadastro.Edit...

No botao salvar...

queryCadastro.Post;



Uma dica... vejo q vc ta controlando o estado dos botão em cada botão...
Vai no Evento OnEstateChange do DataSource do cadastro e coloca o seguinte:
if queryCadastro.State in [dsInsert, dsEdit] then
begin
  BotaoNovo.Enabled := False;
  BotaoExcluir.Enabled := False;
  BotaoSalvar.Enabled := True;
  BotaoCancelar.Enabled := true;
end else
begin
  BotaoNovo.Enabled := True;
  BotaoExcluir.Enabled := True;
  BotaoSalvar.Enabled := false;
  BotaoCancelar.Enabled := false;
end;


Continuei meio confuso mas vê se isso ajuda...


GOSTEI 0
Pedro.phds

Pedro.phds

19/03/2007

cara quase isso soh que para cadastrar eu uso Cliente data set..

E naum a query!!!


GOSTEI 0
Diegus

Diegus

19/03/2007

cara quase isso soh que para cadastrar eu uso Cliente data set.. E naum a query!!!


Não tem problema.. ao invés de query coloca o nome do CDS..

locate funciona tanto para query como para cds...

att.


GOSTEI 0
Pedro.phds

Pedro.phds

19/03/2007

Cara naume ntendi bem esse codigo:

queryCadastro.Locate(´CODIGO_TABELA´, ´FrmPesquisa.ID, []);


Valew


GOSTEI 0
Diegus

Diegus

19/03/2007

Cara naume ntendi bem esse codigo:
queryCadastro.Locate(´CODIGO_TABELA´, ´FrmPesquisa.ID, []);
Valew


O locate faz a localização (rsrsrs)

os parâmetros são:

[b:41a0fdc577]´CODIGO_TABELA´[/b:41a0fdc577] = Nome da chave primária da sua tabela no CDS... provavelmente deve ter um CODIGO ..
[b:41a0fdc577]FrmPesquisa.ID[/b:41a0fdc577] = Nome da variável quer vc setou la na tela de pesquisa q eu coloquei para vc... quando vc declarou em Public e quando deu o OK vc setou este ID com o valor do registro selecionado....
[b:41a0fdc577][][/b:41a0fdc577] parâmetros para pesquisa... se vc quer pesquisar somente parte ou todo... no caso vazio para nao distinguir...

Estes parâmetros vc vai trocar ai de acordo com os seus dados...

Estamos a disposição!


GOSTEI 0
Pedro.phds

Pedro.phds

19/03/2007

Fiz desse modo mais tem hora que funciona hora naum!!!


GOSTEI 0
Diegus

Diegus

19/03/2007

Fiz desse modo mais tem hora que funciona hora naum!!!


Fala quando dá o erro...
Em qual situação..


GOSTEI 0
Pedro.phds

Pedro.phds

19/03/2007

Hora ele aponta o registro certo hora naum!!!

Valew


GOSTEI 0
Diegus

Diegus

19/03/2007

Coloca o seu codigo fonte inteiro das duas telas aqui.... somente o .Pas...

Ai vou me situar melhor..

Valeu


GOSTEI 0
Pedro.phds

Pedro.phds

19/03/2007

Diegus Valew cara agora deu certo !!!

Desculpa a demora pra responder é que tava com uns problemas aqui...

Abraço ate a proxima.valew


GOSTEI 0
POSTAR