PASSAR E RETORNAR VALORES ENTRE FORMULARIOS...

SPYDREX 06/05/2010 11:02:08
#341093
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.
XXXANGELSXXX 06/05/2010 11:15:59
#341095
Resposta escolhida
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..

  
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..
SPYDREX 06/05/2010 11:46:42
#341102
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.
XXXANGELSXXX 06/05/2010 11:59:36
#341103
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..
JEAN.JEDSON 06/05/2010 13:30:18
#341113
seu problema é apenas passar dados de um form para outro? veja se o exemplo anexo te ajuda....
SPYDREX 06/05/2010 15:36:40
#341123
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.
FRACELO 06/05/2010 15:41:39
#341124

Voce pode carregar o grid do formulario de pedido direto do form onde coloca os codigos,

Exemplo:
nomeform.nomedogrid.additem
IRRV 06/05/2010 18:33:27
#341135
SPYDREX...

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???
XXXANGELSXXX 07/05/2010 09:59:17
#341172
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
SPYDREX 07/05/2010 11:02:14
#341184
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.
XXXANGELSXXX 07/05/2010 12:04:48
#341195
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...
  
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..
Página 1 de 2 [18 registro(s)]
Tópico encerrado , respostas não são mais permitidas