DADOS UMA UMA TELA PARA OUTRA
Surgiu um caso que infelizmente ainda nao resolvi.
Estou conhecendo um pouco melhor vb.net.
Costumo nao utilizar combobox, para carregar tabelas que possivelmente vao ter muitos dados.
Utilizo uma tela de pesquisa com um datagrid dando dois click tras o registro para o form que chamou .
Essa é a duvida como vou trazer esses dados de um form para outro.
sabendo que essa tela de pesquisa é generica todos os forms do sistema podem acessar.
Teria como fazer isso com uma classe.
Tentei isso dois click na grid jogo os dados nas propriedade
Porem nao vou conseguir recuperar os dados do outro form.
Private Sub Grd_Grid_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles Grd_Grid.CellDoubleClick
_Codigo = Grd_Grid.Item(0, e.RowIndex).Value
_Nome = Grd_Grid.Item(1, e.RowIndex).Value
_Cadastro = Grd_Grid.Item(2, e.RowIndex).Value
End Sub
Estou conhecendo um pouco melhor vb.net.
Costumo nao utilizar combobox, para carregar tabelas que possivelmente vao ter muitos dados.
Utilizo uma tela de pesquisa com um datagrid dando dois click tras o registro para o form que chamou .
Essa é a duvida como vou trazer esses dados de um form para outro.
sabendo que essa tela de pesquisa é generica todos os forms do sistema podem acessar.
Teria como fazer isso com uma classe.
Tentei isso dois click na grid jogo os dados nas propriedade
Porem nao vou conseguir recuperar os dados do outro form.
Private Sub Grd_Grid_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles Grd_Grid.CellDoubleClick
_Codigo = Grd_Grid.Item(0, e.RowIndex).Value
_Nome = Grd_Grid.Item(1, e.RowIndex).Value
_Cadastro = Grd_Grid.Item(2, e.RowIndex).Value
End Sub
Citação::
CRIA UMA FUNÇÃO COM PARAMETROS.
FUNCAO MINHA_FUN(BYVAL CODIGO AS STRING,BYVAL CLIENTE AS STRING) AS STRING
MSGBOX CODIGO & CLIENTE
END FUNCTION
DAI CHAMA ELA ASSIM:
FORM1.MINHA_FUN([Ô]1000[Ô],[Ô]MANé[Ô])
Foi oque coloquei, nao posso criar um metodo no meu form,
pois essa é uma consulta generica, muitos forms vao abrir a mesma.
Terei que criar o mesmo metodo para todos os form...
Não sei se conseguiu entender...
Fera Imagino que voce nao entendeu...
Imaginei que tenho uma form Ordem de Serviço, nele tenho que informar o cliente, na tela tenho um textbox com um botao de pesquisa.
quando clicar nesse botão vai abrir um novo form com uma grid carregada com todos os clientes cadastrados.
Dois click tras o codigo e o nome do cliente para tela que chamou.
Nao quero fazer varios case na tela.
pois esse metodo vou usar para varios form.
criando uma classe para isso facilitaria, porem essa a duvida.
Imaginei que tenho uma form Ordem de Serviço, nele tenho que informar o cliente, na tela tenho um textbox com um botao de pesquisa.
quando clicar nesse botão vai abrir um novo form com uma grid carregada com todos os clientes cadastrados.
Dois click tras o codigo e o nome do cliente para tela que chamou.
Nao quero fazer varios case na tela.
pois esse metodo vou usar para varios form.
criando uma classe para isso facilitaria, porem essa a duvida.
Se o que você precisa é de uma classe genérica, você pode fazer o seguinte:
Vamos supor que você queira retornar o total de compras do cliente:
CLASSE
[txt-color=#0000f0]Public Class[/txt-color] Classe1
[txt-color=#0000f0]Public Function[/txt-color] Retorna_Compras ([txt-color=#0000f0]ByVal[/txt-color] QualNome [txt-color=#0000f0]As String[/txt-color]) [txt-color=#0000f0]As Integer
Dim[/txt-color] C [txt-color=#0000f0]As New[/txt-color] ADOBD.Connection, RecSet [txt-color=#0000f0]As[/txt-color] RecordSet
[txt-color=#007100][ô]Conexão com o BD[/txt-color]
Conectar() [txt-color=#007100][ô]AQUI é SÓ UM EXEMPLO TROQUE Conetar() PELA SUA STRING DE CONEXÃO COM O BD[/txt-color]
RecSet = C.Execute([txt-color=#e80000][Ô]SELECT TotalCompras FROM tblClientes WHERE NomeCliente = [ô] [Ô][/txt-color] & QualNome & [txt-color=#e80000][Ô] [ô] [Ô][/txt-color])
Retorna_Compras = RecSet([txt-color=#e80000][Ô]TotalCompras[Ô][/txt-color]).Value
[txt-color=#0000f0]Return[/txt-color] Retorna_Compras
[txt-color=#0000f0]End Function
End Class[/txt-color]
NO ESCOPO DO MÓDULO:
[txt-color=#0000f0]Public[/txt-color] ObjClasse [txt-color=#0000f0]As New[/txt-color] Classe1
NO CÓDIGO DO SEU FORM:
[txt-color=#0000f0]Dim[/txt-color] Total_De_Compras [txt-color=#0000f0]As Integer
Dim[/txt-color] Dado_Do_Cliente [txt-color=#0000f0]As String[/txt-color] [txt-color=#007100][ô]Atribua a esta variável, o valor clicado no grid[/txt-color]
Total_De_Compras = ObjClasse.Retorna_Compras(Dado_Do_Cliente)
Espero ter ajudado.
Vamos supor que você queira retornar o total de compras do cliente:
CLASSE
[txt-color=#0000f0]Public Class[/txt-color] Classe1
[txt-color=#0000f0]Public Function[/txt-color] Retorna_Compras ([txt-color=#0000f0]ByVal[/txt-color] QualNome [txt-color=#0000f0]As String[/txt-color]) [txt-color=#0000f0]As Integer
Dim[/txt-color] C [txt-color=#0000f0]As New[/txt-color] ADOBD.Connection, RecSet [txt-color=#0000f0]As[/txt-color] RecordSet
[txt-color=#007100][ô]Conexão com o BD[/txt-color]
Conectar() [txt-color=#007100][ô]AQUI é SÓ UM EXEMPLO TROQUE Conetar() PELA SUA STRING DE CONEXÃO COM O BD[/txt-color]
RecSet = C.Execute([txt-color=#e80000][Ô]SELECT TotalCompras FROM tblClientes WHERE NomeCliente = [ô] [Ô][/txt-color] & QualNome & [txt-color=#e80000][Ô] [ô] [Ô][/txt-color])
Retorna_Compras = RecSet([txt-color=#e80000][Ô]TotalCompras[Ô][/txt-color]).Value
[txt-color=#0000f0]Return[/txt-color] Retorna_Compras
[txt-color=#0000f0]End Function
End Class[/txt-color]
NO ESCOPO DO MÓDULO:
[txt-color=#0000f0]Public[/txt-color] ObjClasse [txt-color=#0000f0]As New[/txt-color] Classe1
NO CÓDIGO DO SEU FORM:
[txt-color=#0000f0]Dim[/txt-color] Total_De_Compras [txt-color=#0000f0]As Integer
Dim[/txt-color] Dado_Do_Cliente [txt-color=#0000f0]As String[/txt-color] [txt-color=#007100][ô]Atribua a esta variável, o valor clicado no grid[/txt-color]
Total_De_Compras = ObjClasse.Retorna_Compras(Dado_Do_Cliente)
Espero ter ajudado.
Amigo a Ideia é essa mesma...
Hoje eu tenho uma classe parecida com essa que me retorna um DataTable, onde preenche o DataGrid.
E o que nao tinha pensado é isso que colocou logo abaixo ter algumas Variaveis pegando os dados que consultei e trazer para meu form.
Mais vou tentar fazer diferente. ao inves de ter um modulo criar uma nova classe para somente trafegar os dados.
Aproveitar e fazer uma pergunta a quem é mais experiente, se eu instância uma classe no form que estou chamando a consulta, e na tela de consulta atribuir valores ao construtores, quando voltar a tela que chamou a consulta vou perder os dados???
E lembrando vb6 tem como chamar essa tela como modal???
Desculpa varias perguntas...
Hoje eu tenho uma classe parecida com essa que me retorna um DataTable, onde preenche o DataGrid.
E o que nao tinha pensado é isso que colocou logo abaixo ter algumas Variaveis pegando os dados que consultei e trazer para meu form.
Mais vou tentar fazer diferente. ao inves de ter um modulo criar uma nova classe para somente trafegar os dados.
Aproveitar e fazer uma pergunta a quem é mais experiente, se eu instância uma classe no form que estou chamando a consulta, e na tela de consulta atribuir valores ao construtores, quando voltar a tela que chamou a consulta vou perder os dados???
E lembrando vb6 tem como chamar essa tela como modal???
Desculpa varias perguntas...
Citação:Aproveitar e fazer uma pergunta a quem é mais experiente, se eu instância uma classe no form que estou chamando a consulta, e na tela de consulta atribuir valores ao construtores, quando voltar a tela que chamou a consulta vou perder os dados???
E lembrando vb6 tem como chamar essa tela como modal???
Nao vai perder os dados porque a instância continua aberta...
Ai voce quiz dizer VB.NET em vez de VB6 certo ?
entao seria assim...
Dim frmDialogue As New frmSecond
frmDialogue.ShowDialog()
Abraços !
Valeu...
Obrigado pela ajuda... quando fizer a tela mando novamente para mostrar como ficou...
Abraços
Obrigado pela ajuda... quando fizer a tela mando novamente para mostrar como ficou...
Abraços
Tópico encerrado , respostas não são mais permitidas