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_IdVeiculoFROM
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
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.
- Marcado como Resposta Harley AraujoOwner quinta-feira, 23 de fevereiro de 2012 12:41
-
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

