Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Diaclau

Buscar registros de uma tabela e incluir em outra

Recommended Posts

Olá,Primeiramente vou descrever o que já fiz para depois explicar minha dúvida:Uso o Firebird 1.5 e o delphi 7, criei uma tabela produto que terá, além de outros campos, os campos DESCR_GRUPO e DESC_SUBGRUPO, esse dados pretendo buscar de outras tabelas (GRUPO e SUBGRUPO). A tabela GRUPO possui somente um campo (DECR_GRUPO) e a tabela SUBGRUPO (DESCR_GRUPO e DESCR_SUBGRUPO).No Delphi, com as tabelas GRUPO e SUBGRUPO, criei um MestreDetail, onde GRUPO é mestre e SUBGRUPO é cliente.Criei uma tela de cadastro de produtos que associei a tabela PRODUTO, está incluindo e pesquisando no Banco quando preencho os campos DESCR_GRUPO e DESCR_SUBGRUPO manualmente, porém gostaria de buscar nas tabelas GRUPO e SUBGRUPO os registro para preencher os campos que já informei acima, não estou conseguindo.Para isso criei uma outra tela q busca esses dados nas tabelas informadas, mas não estou conseguindo trazer esses dados para a tela de cadastro de produtos q posteriormente irá gravar no banco de dados.Pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

cria uma tela onde liste todos os grupos de produtos.... e coloca um botao "enviar". ... de deixa ele como Modal Result setado como mrOK ....

 

 

no form q faz o cadastro de produtos, deve ter um botao q chama esse form q lista os grupos, dai no click desse botao você faz assim:

 

 

frmGrupos:= TfrmGrupos.Create(Application); frmGrupos.qry.open; if (frmGrupos.ShowModal = mrOk) then begin  txtIDGrupo.text:= frmGrupos.qryIDGRUPO.text;  txtDesc_Grupo.text:= frmGrupos.qryDESC_GRUPO.text;  FreeAndNil(frmGrupos); end;

bm...axo q isso resolve seu problema... qlquer coisa posta aew ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Rodrigo,Obrigado deu certinho, mas agora estou com um outro problema...Eu estava conseguindo pesquisar na tabela PRODUTO, agora não consigo mais.Está dando um erro com a seguinte mensagem: 'List index out of bounds(0)'; pode me dar mais uma mãozinha?Obrigado... e até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Rodrigo,Segue todos os códigos de pesquisa, acho q o erro está na linha de vermelho.Espero que você possa me ajudar.Obrigado!Criei no firebird uma procedure de pesquisa:BEGIN IF (EXISTS(SELECT COD_PROD FROM PRODUTO WHERE (COD_PROD=:COD_PROD))) THEN UPDATE produto SET COD_BARRA_PROD=:COD_BARRA_PROD, NOME_PROD=:NOME_PROD, COD_GRUPO=:COD_GRUPO, UNID_MED_PROD=:UNID_MED_PROD, PRECO_CUSTO_PROD=:PRECO_CUSTO_PROD, PRECO_FINAL_PROD=:PRECO_FINAL_PROD, ESTOQUE_MIN_PROD=:ESTOQUE_MIN_PROD, DATA_CADASTRO_PROD=:DATA_CADASTRO_PROD WHERE (COD_PROD=:COD_PROD); ELSE INSERT INTO produto ( COD_PROD, COD_BARRA_PROD, NOME_PROD, COD_GRUPO, UNID_MED_PROD, PRECO_CUSTO_PROD, PRECO_FINAL_PROD, ESTOQUE_MIN_PROD, DATA_CADASTRO_PROD) VALUES ( :COD_PROD, :COD_BARRA_PROD, :NOME_PROD, :COD_GRUPO, :UNID_MED_PROD, :PRECO_CUSTO_PROD, :PRECO_FINAL_PROD, :ESTOQUE_MIN_PROD, :DATA_CADASTRO_PROD);END Este código abaixo está na unit Cadastro de Produtos:procedure TfrmCadastroProduto.Search;begin inherited; try Application.CreateForm(TfrmPesqProd, frmPesqProd); frmPesqProd.ShowModal; if frmPesqProd.ModalResult = mrOk then begin [red]FilterSearch(datamodule.cdsProd,fsFilter,datamodulePesq.cdsProdCod_PROD.AsString);[/red] end; finally frmPesqProd.Free; end;end;Estes códigos abaixo está na unit pesquisa Produtoprocedure TfrmPesqProd.Search;begin inherited; if Edit1.Text <> '' then FilterSearch(dmPesq.cdsProd, fsSearch, Edit1.Text); end;procedure TfrmPesqProd.DBGrid1DblClick(Sender: TObject);begin inherited; Close; ModalResult := mrOk;end;Este código abaixo está na unit Códigos (uma unit que concentra alguns códigos que será usados por várias units).procedure FilterSearch (aCds: TClientDataSet; aType: TTypeLocalizar; aBusca: string);begin {: Filtra ou Busca os dados} aCds.Close; case aType of {: filtrar dados} fsFilter: aCds.Params[0].AsInteger := StrToInt(aBusca); {: buscar dados} fsSearch: aCds.Params[0].AsString := UpperCase('%'+aBusca+'%'); end; aCds.Open;end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.