Array
(
)

Dúvidas para salvar dados e outras coisas mais. Por favor me ajudem!

Murilo Cambraia
   - 16 nov 2012

Bom dia, estou passando por um problema que para maioria será cosiderado simples, vou tentar explicar da melhor forma possivel.
Estou desenvolvendo um projeto na faculdade, usando Asp.net/C# com o Visual Studio 2010 e SQL 2008. Estou também utilizando desenvolvimento em camadas, MVC aquele que usa as camadas Model View e Control. Mas somente a metodologia, e não aquele "framework" do visual studio/asp.net.
O problema é que eu comecei desenvolvendo seguindo um exemplo de um livro, o mesmo usava Store Procedure para inserção, edição de dados etc. Cheguei em um ponto onde eu fiquei completamente perdido, simplesmente não consigo adaptar o exemplo do livro para o meu problema.
Eu tenho uma tabela de Candidato e de Professor no banco de dados, o professor tem um relacionamento de 1.N com o candidato. Lendo o relacionamento para ficar mais simples, um professor Orienta 0 ou N Candidatos e um candidato é orientado por minimo 1 e maximo 1 professor. Portanto eu tenho uma FK do Id do professor na tabela de candidato, para saber quem é o orientador. A tabela professor vai ter alguns cadastros ja inseridos de professores.
Agora, quando um candidato efetua sua inscrição, ele tem os campos para preencher com seu Nome, CPF, RG, Endereço, Telefone. E logo abaixo dos campos ele tem uma Dropdownlist, ou algo semelhantes que irei colocar. Onde terá o nome de todos os professores cadastrados na tabela professor, ao selecionar o nome os campos do professor que estarão a baixo vão se preencher com os dados do respectivo professor. Eu dupliquei os campos CPF,RG,Nome etc nas tabelas Candidatos e professor, estava tendo alguns problemas e achei melhor fazer isso.
Enfim, o que eu quero saber é, como faço para na hora de clicar em "cadastrar" O candidato seja inserido e o professor que ele selecionou como orientador tenha sua Id(FK) inserida na sua tabela?
Devo usar também as ferramentas do visual, como por exemplo. SQLDataSource, ObjectDataSource... etc
Tenho varias outras FK no banco e estou completamente perdido em como inserir os dados. Por exemplo, Tabela telefone e tabela TipoTelefone. Ai Telefone tem fk da TipoTelefone. Que é para separar Residencial, celular etc.

Tenho 2 campos onde preciso anexar arquivos também, tipo PDF, DOC etc. O campo que devo colocar no BD é Image? qual a variavel que corresponde a Image no asp.net/C#? digo, pra qando for salvar no bd. Também preciso colocar o arquivo salvo para download. Como faço?

Sei que ficou muito grande o texto e, por isso pode ter ficado confuso, mas eu explico de novo e de novo se precisar. Eu realmente estou desesperado. Se não puderem me ajudar de forma direta, me enviar um exemplo que tenha esses casos ja me ajudaria muito, enfim, qualquer tipo de ajudar será bem vinda. Obrigado!

Murilo Cambraia
   - 16 nov 2012

Não achei um botão para editar o tópico, é que esqueci de dizer que a aplicação é para WEB.

Pjava
   - 16 nov 2012

Cara, não sei se isso vai te ajudar. A rotina abaixo é um insert que fiz, usando FK. Bem, nesse ponto vou pergunatar, mas acho que você sabe, FK só podem ser inseridas nas tabelas, quando os registros existirem nas tabelas referenciadas. Abaixo meu exemplo. Não entro aqui em detalhes de conexão, pq presumo que isso vc sabe fazer, senão é só postar que te auxilamos no que for necessário.

public bool InsereDarf(string vTrim, DateTime vPag_Ate, DateTime vPer_Apura, string vCnpj, string vCod_Receita, int vNum_Ref,
DateTime vDt_Vencto, double vVal_Principal, double vVal_Multa, double vVal_Juros, double vTotal)
{
SqlConnection conexao = new SqlConnection();
conexao.ConnectionString = ConfigurationManager.ConnectionStrings["conectDarf"].ConnectionString;

conexao.Open();

string sql = "insert into tbl_darf(trim,pag_ate,per_apura,cnpj,cod_receita,num_ref,dt_vencto,val_principal,val_multa,val_juros_encargos,val_total) ";
sql += "values(@p_trim, @p_pagate, @p_perapura, @p_cnpj, @p_codreceita, @p_numref, @dt_vencto, @p_princip, @p_multa, @p_juros, @p_total)";

SqlCommand cmdInsert = new SqlCommand();
cmdInsert.CommandText = sql;
cmdInsert.Connection = conexao;

cmdInsert.Parameters.AddWithValue("p_trim", vTrim);
cmdInsert.Parameters.AddWithValue("p_pagate", vPag_Ate);
cmdInsert.Parameters.AddWithValue("p_perapura", vPer_Apura);
cmdInsert.Parameters.AddWithValue("p_cnpj", vCnpj);
cmdInsert.Parameters.AddWithValue("p_codreceita", vCod_Receita);
cmdInsert.Parameters.AddWithValue("p_numref", vNum_Ref);
cmdInsert.Parameters.AddWithValue("dt_vencto", vDt_Vencto);
cmdInsert.Parameters.AddWithValue("p_princip", vVal_Principal);
cmdInsert.Parameters.AddWithValue("p_multa", vVal_Multa);
cmdInsert.Parameters.AddWithValue("p_juros", vVal_Juros);
cmdInsert.Parameters.AddWithValue("p_total", vTotal);

cmdInsert.ExecuteNonQuery();

cmdInsert.Dispose();
conexao.Close();

return true;
}

Murilo Cambraia
   - 16 nov 2012

Então, é como eu dissse. Na minha tabela professor vão existir registros ja inseridos por mim, manualmente no BD. O que eu não to entendendo é como eu faço pro aluno selecionar o nome do professor e quando ele clicar em cadastrar os dados dele (candidato) serem inseridos e o id do professor ser inserido tbm como FK na tabela dele.

Nesse seu exemplo, qual campo ali é a FK, tem como você me explicar melhor o a estrutura ali? digo, qual campo é a FK, de qual tabela e ta salvando a FK em qual tabela, etc.