PASSAR E RETORNAR VALORES ENTRE FORMULARIOS...
Grandes feras...
é o seguinte:
Tenho um formulário de pedido de compra que tem msflexgrid que mostra os itens deste pedido.
Estou tentando, mais sem sucesso chamar através de um botão um outro formulário em que o usuário digitaria o código e a quantidade do produto e automaticamente o código,quantidade,valor,etc... fosse retornado para o msflexgrid do formulario do pedido de compra.
Acontece que não sei passar parâmetros nem retornar através dos formulários
Alguém sabe como fazer isso ?
Grato.
é o seguinte:
Tenho um formulário de pedido de compra que tem msflexgrid que mostra os itens deste pedido.
Estou tentando, mais sem sucesso chamar através de um botão um outro formulário em que o usuário digitaria o código e a quantidade do produto e automaticamente o código,quantidade,valor,etc... fosse retornado para o msflexgrid do formulario do pedido de compra.
Acontece que não sei passar parâmetros nem retornar através dos formulários
Alguém sabe como fazer isso ?
Grato.
veja so.. como voce montou o grid? vou te dar um exemplo simples, eu uso o TDBGRID da componente one, entao eu tenho uma funcao definida para MONTAR o grid, mais ou menos assim..
Ai tenho outra rotina para Carregar as informaçoes ta tabela para o grid.. assim
com voce vai ser a mesma coisa.. acho.. voce pode fazer assim.
Veja se da para entender..
Sub MontarGrid
WITH TDBGRID1
.COLUMNS(0).CAPTION = [Ô]Nome[Ô]:.columns(1).caption=[Ô]Fantasia[Ô]
end with
end sub
Ai tenho outra rotina para Carregar as informaçoes ta tabela para o grid.. assim
set myrs= new adodb.recordset
myrs.open [Ô]Select * from Cadastroqualquer[Ô],conexao, adoopendinamyc....
[ô]aqui eu carrego o grid com os dados da tabela o grid
MYRS.RECORDSET = MYRS
[ô]embaixo eu carrego o grid montado acima
call MontarGrid
com voce vai ser a mesma coisa.. acho.. voce pode fazer assim.
SET MYRS= NEW ADODB.RECORDSET
MYRS.OPEN [Ô]Select * from cadastroqualquer WHERE CAMPO FILTRADO LIKE [ô]%[Ô] & CAMPOTEXTO.TEXT & [Ô]%[ô][Ô],CONEXAO....
MYRS.RECORDSET = MYRS
CALL MONTARGRID
Veja se da para entender..
Então...
Tudo isso eu já tenho no programa, uma função que monta um grid vindo de um recordset, etc... etc... e tal.
A minha idéia é:
Como é um pedido de compra ele vai sendo montado conforme o usuário escolhesse os itens vindo de um formulário ou uma consulta etc...
Eu até já desenvolvi o formulário de pedido com um botão <NOVO ITEM>, após o usuário clicar nesse botão, é aberto um outro formulário onde ele informa o codigo do produto, a idéia é fazer voltar para o formulário de pedido de compra mas especificamente no grid o produto que foi selecionado pelo usuário.
Espero ter sido claro.
Tudo isso eu já tenho no programa, uma função que monta um grid vindo de um recordset, etc... etc... e tal.
A minha idéia é:
Como é um pedido de compra ele vai sendo montado conforme o usuário escolhesse os itens vindo de um formulário ou uma consulta etc...
Eu até já desenvolvi o formulário de pedido com um botão <NOVO ITEM>, após o usuário clicar nesse botão, é aberto um outro formulário onde ele informa o codigo do produto, a idéia é fazer voltar para o formulário de pedido de compra mas especificamente no grid o produto que foi selecionado pelo usuário.
Espero ter sido claro.
amigo.. veja so.. voce vai criar uma tabela auxiliar para isso uai, e tipo.. tem que ter um campo de indexacao entre as duas.. veja so..
voce tem a tabela auxiliar que chama AUXVENDAS por exemplo..
Quando voce gravar os produtos nessa tabela, infome tambem o campo que corresponde o numero da nota, exemplo.. no seu banco tem la criado nessa auxvendas o codigo da nota por exemplo.. 77777, consequentemente, ao fazer a query para buscar os dados voce pode fazer de varias formas, mas se quiser fazer um inner join para relacionar as duas fica melhor ainda.. veja se entedeu..
voce tem a tabela auxiliar que chama AUXVENDAS por exemplo..
Quando voce gravar os produtos nessa tabela, infome tambem o campo que corresponde o numero da nota, exemplo.. no seu banco tem la criado nessa auxvendas o codigo da nota por exemplo.. 77777, consequentemente, ao fazer a query para buscar os dados voce pode fazer de varias formas, mas se quiser fazer um inner join para relacionar as duas fica melhor ainda.. veja se entedeu..
seu problema é apenas passar dados de um form para outro? veja se o exemplo anexo te ajuda....
XXXANGELSXXX
A sua idéia realmente é genial, mas veja só, eu acho que peguei uma linha de raciocÃnio errada.
O meu formulário de pedido de compra tem o cabeçalho do pedido, com fornecedor, endereço, cond. de pagamento etc...
Nesse mesmo formulário eu tenho uma área que é um flexgrid que tem codigo do produto, nome do produto, qtd, etc...
Ainda nesse formulário tenho um botão que adiciona itens.
Pensei assim: clico no botão de adicionar itens faço uma busca na tabela de produtos e vou adicionando um a um no flexgrid do formulário do pedido de compras.
Eu tenho uma tabela chamada itenspedcompra, porém ela é relacionada com a tabela pedidodecompra, e ai que tá o problema, como o pedido vai ser lançado pela primeira vez, não posso lançar os itens na tabela itenspedcompa, pois terei uma violação de integridade, já que o pedido ainda nem existe, portanto não tem como lançar os itens antes de lançar o pedido, se lançar o pedido tenho que fazer uma amarração para que o pedido não seja lançado sem itens.
Observou que impasse estou enfrentando ?
Será que tem algum exeplo ai para eu estudar e ver se consigo ter outro ponto de vista, ou você acha que o caminho é esse mesmo que estou trilhando ?
Grato.
A sua idéia realmente é genial, mas veja só, eu acho que peguei uma linha de raciocÃnio errada.
O meu formulário de pedido de compra tem o cabeçalho do pedido, com fornecedor, endereço, cond. de pagamento etc...
Nesse mesmo formulário eu tenho uma área que é um flexgrid que tem codigo do produto, nome do produto, qtd, etc...
Ainda nesse formulário tenho um botão que adiciona itens.
Pensei assim: clico no botão de adicionar itens faço uma busca na tabela de produtos e vou adicionando um a um no flexgrid do formulário do pedido de compras.
Eu tenho uma tabela chamada itenspedcompra, porém ela é relacionada com a tabela pedidodecompra, e ai que tá o problema, como o pedido vai ser lançado pela primeira vez, não posso lançar os itens na tabela itenspedcompa, pois terei uma violação de integridade, já que o pedido ainda nem existe, portanto não tem como lançar os itens antes de lançar o pedido, se lançar o pedido tenho que fazer uma amarração para que o pedido não seja lançado sem itens.
Observou que impasse estou enfrentando ?
Será que tem algum exeplo ai para eu estudar e ver se consigo ter outro ponto de vista, ou você acha que o caminho é esse mesmo que estou trilhando ?
Grato.
Voce pode carregar o grid do formulario de pedido direto do form onde coloca os codigos,
Exemplo:
nomeform.nomedogrid.additem
SPYDREX...
Eu faço assim:
Crie uma sub que passe como Parametro o recordset que vc esta usando na grid
Ai vc chama o formulario pela sub e trabalha com os dados como quiser, depois quando fechar o Formulario chame a funcao que carrega sua grid novamente que estara tudo atualizado...
entendeu???
Eu faço assim:
Crie uma sub que passe como Parametro o recordset que vc esta usando na grid
Dim rs as recordset
Sub ShowMe(ByRef rsGrid As Recordset)
[ô]Função que recebe os dados do recorset do formulário que o chamou.
Set rs = rsGrid
Me.Show
End Sub
Ai vc chama o formulario pela sub e trabalha com os dados como quiser, depois quando fechar o Formulario chame a funcao que carrega sua grid novamente que estara tudo atualizado...
entendeu???
Que confusao. rsrs rs.. veja só.. como disse anteriormente, nao entendi muito bem.. mas ai vc sabe da necessidade e ve se contempla..
estrutura 3 tabelas.. entao vamos la..
CADASTRO ! MOVIMENTO ! ITENS
Nas tres tabelas tenho um campo em comun.. que se chama XREF por exemplo.. entao vamos la..
XREF - Voce vai jogar informaçao do numero do pedido por exemplo nesse xref..so quando tiver no cadastro
XREF - voce vai jogar informaçao do numero so quando tiver no movimento
XREF - [Ô][Ô] so quando tiver na tabela de itens..
ou seja, eu tenho 3 telas, onde em cada uma se eu necessitar eu preencho essa coluna na tabela com nome XREF, .. atraves logico de insert into.. ok
estrutura 3 tabelas.. entao vamos la..
CADASTRO ! MOVIMENTO ! ITENS
Nas tres tabelas tenho um campo em comun.. que se chama XREF por exemplo.. entao vamos la..
XREF - Voce vai jogar informaçao do numero do pedido por exemplo nesse xref..so quando tiver no cadastro
XREF - voce vai jogar informaçao do numero so quando tiver no movimento
XREF - [Ô][Ô] so quando tiver na tabela de itens..
ou seja, eu tenho 3 telas, onde em cada uma se eu necessitar eu preencho essa coluna na tabela com nome XREF, .. atraves logico de insert into.. ok
IRRV
Poderia me dar um exemplo mais completo, estou achando que é por ai, porém tenho grande dificuldade em enteder como passar parâmetros de um formulário para outro.
Também tenho mais uma dúvida...
Eu carrego o grid do itens do pedido via SQL, se eu fazer o que você está falando ainda assim não terei problemas com a integridade entre as duas tabelas ?
Grato.
Poderia me dar um exemplo mais completo, estou achando que é por ai, porém tenho grande dificuldade em enteder como passar parâmetros de um formulário para outro.
Também tenho mais uma dúvida...
Eu carrego o grid do itens do pedido via SQL, se eu fazer o que você está falando ainda assim não terei problemas com a integridade entre as duas tabelas ?
Grato.
de forma alguma uai... vc nao tera problemas, mas voce tem que saber exatemente como fazer.. exemplo.. usar os bloqueios necessarios.. adoopendynamic....aqui, curiosidade.. voce ta usando ADO ou dao?, outra coisa.. eu tenho o grid tdbgrid aqui, tenho uma propriedade nele que chama TBGRIDROWCOLCHANGE, nela eu coloco para carregar os dados das tabelas auxiliares.. mais ou menos assim..
[ô]
[ô]Essa funcao uso para preencher o grid de endereco que esta em uma tabela auxiliar minha.. nao e a tabela de cleintes por exemplo...
Percebeu o que fiz?
Eu tenho uma tabela auxiliar com nome de cadpessoas endereco, so que no momento estou no cadastro de empresa por exemplo.. ai vou no evento RowColChange do meu cadastro de clientes e coloco para chamar o grid. exemplo.. call PreencheGridEnder
Veja se entende..
[ô]
[ô]Essa funcao uso para preencher o grid de endereco que esta em uma tabela auxiliar minha.. nao e a tabela de cleintes por exemplo...
Sub PreencheGridEnder()
Set MyRsEnder = New ADODB.Recordset
MyRsEnder.Open [Ô]SELECT * FROM cadpessoasendereco where pesscodigoexterno=[ô][Ô] & txtCodigo.Text & [Ô][ô][Ô], Conexao, adOpenDynamic, adLockReadOnly
Set TDBGrid2.DataSource = MyRsEnder
With TDBGrid2
.Columns(0).Visible = False: .Columns(1).Visible = False
.Columns(2).Width = 1000: .Columns(2).Caption = [Ô]Tipo End.[Ô]
.Columns(3).Width = 1500: .Columns(3).Caption = [Ô]Tipo Log.[Ô]
.Columns(4).Width = 1500: .Columns(4).Caption = [Ô]TÃtulo Log.[Ô]
.Columns(5).Width = 3400: .Columns(5).Caption = [Ô]Logradouro[Ô]
.Columns(6).Width = 1000: .Columns(6).Caption = [Ô]Número[Ô]
.Columns(7).Width = 1040: .Columns(7).Caption = [Ô]Complemento[Ô]
.Columns(8).Width = 2500: .Columns(8).Caption = [Ô]Bairro[Ô]
.Columns(10).Width = 500: .Columns(10).Caption = [Ô]UF[Ô]
.Columns(11).Width = 2000: .Columns(11).Caption = [Ô]Cidade[Ô]
.Columns(9).Visible = False: .Columns(12).Visible = False: .Columns(13).Visible = False
End With
End Sub
Percebeu o que fiz?
Eu tenho uma tabela auxiliar com nome de cadpessoas endereco, so que no momento estou no cadastro de empresa por exemplo.. ai vou no evento RowColChange do meu cadastro de clientes e coloco para chamar o grid. exemplo.. call PreencheGridEnder
Veja se entende..
Tópico encerrado , respostas não são mais permitidas