Gravar dados em uma tabela em outras tabela

Respondido Gravar dados em uma tabela em outras tabela

  • terça-feira, 21 de fevereiro de 2012 20:35
     
     

    Olá a todos. Minha situação é a seguinte:

    Tenho uma tabela chamada "Operação" que recebe PK de várias outras tabelas. Por exemplo: Ela recebe a PK da tabela Cliente, empresa, usuario e etc.

    Na tela, alguns dados serão selecionados por DropDownList e outros serão digitados em textBox. Cliente por exemplo, será digitado apenas o cpf e a empresa será selecionada por DropDownList.

    O usuário irá selecionar uma empresa pelo nome, mas o dado que ficará incluido na tabela é a sua PK. Como posso fazer isso ?

    Detalhe: Estou usando uma classe "Controle" e também estou usando um objectDataSource na tela para chamar os metodos. Na classe controle eu tenho metodo para obter uma empresa.

    [System.ComponentModel.DataObjectMethod(System.ComponentModel.DataObjectMethodType.Select)]
            public static DataTable ObterEmpresa(int Emp_Id, string Nome)
            {

                const string sql = @"
                            SELECT
                                Emp_Id
                                ,Emp_Codigo
                                ,Emp_NomeFantasia
                                ,Emp_RazaoSocial
                                ,Emp_Telefone
                                ,Emp_Cnpj
                            FROM
                                Empresa
                            WHERE
                                (@Nome IS NULL OR Emp_NomeFantasia LIKE @Nome)";

                var db = new DbCommandUtil(sql);

                db.AddParameter("@Emp_Id", DbType.Int32, Emp_Id);
                db.AddParameter("@Nome", DbType.String, Formatar.Like(Nome));

                return db.GetDataTable();
            }

    E esse é o metodo que fará a inclusão da Operação

    [System.ComponentModel.DataObjectMethod(System.ComponentModel.DataObjectMethodType.Insert)]
            public static void InserirOperacaoFinanciada(int Ope_Codigo, float Ope_ValorVeiculo, float Ope_ValorEntrada,
                                                        float Ope_ValorTac, int Ope_NumParcelas, float Ope_ValorParcelas,
                                                        float Ope_Coeficiente,
                                                        int Clipf_IdClientePF, int Emp_Id,
                                                        int If_IdInstituicaoFinanceira, int Pv_Id, int Sit_Id, int Usu_IdUsuario,
                                                        int Vei_IdVeiculo)
            {
                const string sql = @"
                            INSERT INTO Operacao
                            (
                                Ope_Codigo
                               ,Ope_ValorVeiculo
                               ,Ope_ValorEntrada
                               ,Ope_ValorTac
                               ,Ope_NumParcelas
                               ,Ope_ValorParcelas
                               ,Ope_Coeficiente
                               ,Clipf_IdClientePF
                               ,Emp_Id
                               ,If_IdInstituicaoFinanceira
                               ,Pv_Id
                               ,Sit_Id
                               ,Usu_IdUsuario
                               ,Vei_IdVeiculo

                            )
                            SELECT
                                ISNULL(MAX(Ope_Codigo), 0) + 1,
                                @Ope_ValorVeiculo,
                                @Ope_ValorEntrada,
                                @Ope_ValorTac,
                                @Ope_NumParcelas,
                                @Ope_ValorParcelas,
                                @Ope_Coeficiente,
                                @Clipf_IdClientePF,
                                @Emp_Id,
                                @If_IdInstituicaoFinanceira,
                                @Pv_Id,
                                @Sit_Id,
                                @Usu_IdUsuario,
                                @Vei_IdVeiculo

                            FROM
                                Operacao";

                var db = new DbCommandUtil(sql);

                db.AddParameter("@Ope_ValorVeiculo", DbType.Int32, Ope_ValorVeiculo);
                db.AddParameter("@Ope_ValorEntrada", DbType.Int32, Ope_ValorEntrada);
                db.AddParameter("@Ope_ValorTac", DbType.Int32, Ope_ValorTac);
                db.AddParameter("@Ope_NumParcelas", DbType.Int32, Ope_NumParcelas);
                db.AddParameter("@Ope_ValorParcelas", DbType.Int32, Ope_NumParcelas);
                db.AddParameter("@Ope_Coeficiente", DbType.Int32, Ope_Coeficiente);
                db.AddParameter("@Clipf_IdClientePF", DbType.Int32, Clipf_IdClientePF);
                db.AddParameter("@Emp_Id", DbType.Int32, Emp_Id);
                db.AddParameter("@If_IdInstituicaoFinanceira", DbType.Int32, If_IdInstituicaoFinanceira);
                db.AddParameter("@Pv_Id", DbType.Int32, Pv_Id);
                db.AddParameter("@Sit_Id", DbType.Int32, Sit_Id);
                db.AddParameter("@Usu_IdUsuario", DbType.Int32, Usu_IdUsuario);
                db.AddParameter("@Vei_IdVeiculo", DbType.Int32, Vei_IdVeiculo);            

                db.ExecuteNonQuery();
            }

    Na tela ha mais de um ObjectDataSource. Cada um fazendo um select diferente. E um ODS fazendo esse insert que esta ae em cima.

    isso funcionaria desse jeito ?

    PS não sei se esta no forum correto.


    We may be human, but we're still animals


    • Editado BobBC terça-feira, 21 de fevereiro de 2012 21:01 Erro no titulo
    •  

Todas as Respostas

  • quarta-feira, 22 de fevereiro de 2012 19:24
     
     Respondido

    Bom... Não sei se é isso que eu entendi mas, vamo lá.

    Sua tabela de empresa tem um ID, certo?

    Você deve estar conectando um data source no DropDown pra ter o nome de todas as empresas, certo?

    Assim, quando você configura para mostrar o nome ele pergunta o "VALUE" um outro campo na hora de conectar o dropDown com o BD e esse campo refere-se ao VALUE do dropDown (Aquele do HTML que é enviado por POST ou GET), sendo assim, quando a pessoa selecionar uma empresa pelo nome você sabe o ID da empresa e se sabe o ID você sabe tudo o resto.

  • sábado, 25 de fevereiro de 2012 23:52
     
     

    Desculpa pela demora, mas me ajudou bastante.

    Obrigado


    We may be human, but we're still animals