Diaclau 0 Denunciar post Postado Junho 7, 2007 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
Rodrigo Miss 1 Denunciar post Postado Junho 8, 2007 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
Diaclau 0 Denunciar post Postado Junho 8, 2007 Valeu Rodrigo,Vou tentar e depois te falo se deu certo.Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
Diaclau 0 Denunciar post Postado Junho 8, 2007 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
Rodrigo Miss 1 Denunciar post Postado Junho 9, 2007 sim!o indice da lista esta fora dos limites ....você esta tentando acessar algum indice q naum existe...me passa o code q esta na linha do erro! Compartilhar este post Link para o post Compartilhar em outros sites
Diaclau 0 Denunciar post Postado Junho 11, 2007 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