SID_SILVA 0 Denunciar post Postado Outubro 3, 2008 Ola Amigos Tenho uma rotina onde preciso cadastrar os nome de empresas e associado a elas os nomes dos gerentes.Logo eu terei varias empresas, sendo que cada empresa tera no minimo 1 gerente. Eu pretendia criar uma rotina parecida com um carrinho de compras, onde eu gravaria primeiro o ID da empresa e depois gravaria os gerentes numa tabela de relacionamento e associando-os ao ID da empresa. Inclusive ja fiz o mesmo em outras rotinas. O cadastro da empresa e do gerente dessa empresa acontece na mesma rotina.Informo a empresa e relaciono o gerente atraves de um GridView. Nas rotinas que eu utilizei, eu tinha um cliente, as compras do cliente e os Produtos (ja cadastrados), portanto na hora de montar o DataTable eu criava uma chave de campo primario para o DataTable e atribuia a ele o ID do produto. Acontece que nesse caso especifico eu nao tenho nenhum ID para relacionar como linha chave no meu DataTable.Uma vez que o unico ID que eu poderia utilizar que e o da empresa, somente sera gerado no momento da gravacao. Eis uam demonstrcao do meu codigo, pulando algumas partes que nao interessm no momento : Public Function ObterGerente() As DataSet 'cria dataset Dim ds As DataSet = New DataSet() 'define um objeto DataColumn Dim keys(1) As DataColumn 'define o campo que sera a chave primaria Dim ItemID As New DataColumn("ItemID", GetType(Int32)) 'cria o datatable Dim dt As DataTable = New DataTable("Gerentes") 'inclua as colunas no datatable dt.Columns.Add(ItemID) 'outra forma de definir e incluir colunas no datatable dt.Columns.Add("CLIENTE_ID", System.Type.GetType("System.Double"), "") dt.Columns.Add("GERENTE_NOME", System.Type.GetType("System.String"), "") 'define a chave primária keys(0) = ItemID dt.PrimaryKey = keys 'inclui na tabela ds.Tables.Add(dt) . . . End Function Private Sub IncluirGerente() Try 'obtem a tabela do dataset e atribui ao datable local Dim dt As DataTable = ObterGerente().Tables(0) 'localiza o codigo do produto na tabela 'Dim row As DataRow = dt.Rows.Find(Request.QueryString("FORMATO_ID")) Dim row As DataRow = dt.Rows.Find(Aqui normalmente eu tenho um ID mas nesse caso Nao) If row Is Nothing Then 'se nao achou cria uma nova linha row = dt.NewRow() row("itemID") = Convert.ToInt32(Session("ID_CLIENTE")) row("Gerente_NOME") = TxtGerente.Text.Trim 'row("REL_VALOR") = Convert.ToDouble(TxtBeneficioValor.Text) 'inclui a linha no datable dt.Rows.Add(row) Else 'se a linha ja existir então apenas altera a quantidade 'Dim qtd As Integer = Convert.ToInt32(row("Quantidade")) 'qtd = qtd + quantidade 'row("Quantidade") = qtd End If Finally conexao.Close() End Try End Sub Poderiam me dar alguma sugestao. Obrigado e um Abraco Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Outubro 6, 2008 Eu acredito que o mais correto é fazer a inserção do gerente primeiro, ele deve estar cadastrado para depois ser associado a uma empresa. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
SID_SILVA 0 Denunciar post Postado Outubro 6, 2008 Bom Dia Obrigado mais uma vez Quintelab, era justamente isso que eu nao queria fazer mas estive pensando no final de semana e acho que ao menos por enquanto cadastrar o gerente primeiro para ter o seu ID e a melhor solucao. Obrigado Novamente e ate a proxima duvida. Compartilhar este post Link para o post Compartilhar em outros sites