CCSS 0 Denunciar post Postado Julho 10, 2008 boa tarde pessoal! Eu estou a fazer uma aplicação web em C#.Net e ocorreu-me um problema. As relaçoes das chaves são todas efectuadas fora da bd, ou seja no código. Agora tenho um módulo que se pretende o seguinte: tenho no formulário em ASP os 3 campos, por exemplo: *empresa:Gelados da Olá (1 combobox, para seleccionar); *departamento:Programação (1 txt, em que escrevo o novo departamento para a empresa, que neste caso quer que dependa do departamento abaixo ja existente seleccionado); *departamento de dependencia:Consultoria(1 combobox que selecciona só os departamentos dentro da empresa acima seleccionada-->ou aqui até pode ser <nenhum>, caso eu não queira que o departamento acima escrito dependa de outro departamento). Ponto de situação: As combobox estão a funcionar lindamente, ou seja, só me aparece os departamentos já existentes na respectiva empresa seleccionada....porém tenho um problema, aquilo diz que insere...e vou a ver na bd e tenho tudo inserido menos o k^???? menos o campo do departamento_dependencia...não estou a conseguir passar o id daquele que eu selecciono na combobox para o seu respectivo campo na tabela da bd..... Epá já andei aqui às turras com isto...alguém pode-me dar uma maozinha???? respondam pleasee Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Julho 10, 2008 CCSS, Seja Bem Vindo ao Fórum Imasters, de uma olhada em nossas regras: Regras do Fórum iMasters Referente ao seu problema, poste a parte do código onde você tenta fazer a inserção para poder ver o que esta acontecendo. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
CCSS 0 Denunciar post Postado Julho 10, 2008 CCSS, Seja Bem Vindo ao Fórum Imasters, de uma olhada em nossas regras: Regras do Fórum iMasters Referente ao seu problema, poste a parte do código onde você tenta fazer a inserção para poder ver o que esta acontecendo. Abraços... CÓDIGO DE INSERÇÃO: //isto está na classe departamento juntamente com a inicializaoção dos atributos e com os métodos gets e sets....aqui não está a conexão, pois é utilizada uma API que faz tudo isso... public bool insereDepartamento() { Sequencia seq = new Sequencia("id_departamento"); //pois os ids sao gerados no codigo, nao na bd Id_departamento = seq.insereSequencia();//recebe o id gerado List<String> Query = new List<string>(); String sql_1 = "INSERT INTO Departamento (Id_empresa, Id_departamento, descricao_departamento, Aud_data, Aud_utilizador, Id_depart_depend)" + "VALUES (" + this.Id_empresa + ","+this.Id_departamento+ ",'" + this.Descricao+ "','"+this.Aud_data+"','" +this.Aud_utilizador+ "'," +this.Id_Depart_Depend+")"; Query.Add(sql_1); bool ErrorSql = dbApi.Query(Query); return ErrorSql; } //o formulario em ASP n é preciso colocar aki ...mas aki vai a parte do c# : insereDepartamento.aspx.cs public partial class InserirDepartamento : System.Web.UI.Page { String Pagina = "DEPARTAMENTO";//propriedade que indica em que classe se está a fazer operaçoes protected void Page_Load(object sender, EventArgs e) { preencheDropDownList(); if (!String.IsNullOrEmpty(Request.QueryString.Get("IDDepartamento"))) { //Código que valida o utilizador Utilizador oUser = new Utilizador(); oUser.getUtilizadorByNome(User.Identity.Name); //verificar se o utilizador tem permissao para alterar if (oUser.podeAlterar(this.Pagina)) Response.Redirect("..//Mensagens.aspx?msg=6"); //Fim do código que valida o utilizador LbOperacao.Text = "-Alterar Departamento- "; if (Hfcontrolo.Value.CompareTo("inicio") != 0) preencheFormAlterar(); Inserir.Visible = false; } else { //Código que valida o utilizador Utilizador oUser = new Utilizador(); oUser.getUtilizadorByNome(User.Identity.Name); //verificar se o utiliador tem permissao para Inserir um novo departamento if (oUser.podeInserir(this.Pagina)) Response.Redirect("..//Mensagens.aspx?msg=6"); //Fim do código que valida o utilizador Btn_alterar.Visible = false; } } protected void Inserir_Click(object sender, EventArgs e) { //CampoExisteBD campoNomeEmp = new CampoExisteBD("Nome", Nome.Text, "Empresa", "Nome_empresa"); CampoDepartIgual campoDescricao = new CampoDepartIgual("descricao", descricao.Text, "Departamento", "descricao_departamento", Convert.ToInt32(DdlEmpresa.SelectedValue)); // CampoVazio campoDescricao = new CampoVazio("descricao_departamento", descricao.Text); List<Campo> osCamposDeparta = new List<Campo>(); osCamposDeparta.Add(campoDescricao); Formulario form = new Formulario(osCamposDeparta); if (!form.eValido()) { LbErroNome.Text = form.getErros("descricao"); } else { Departamento departamento = new Departamento(); departamento.Id_empresa = Int32.Parse(DdlEmpresa.SelectedValue); departamento.Descricao = (String)descricao.Text; departamento.Aud_data = DateTime.Now; departamento.Aud_utilizador = User.Identity.Name; departamento.Id_Depart_Depend = Int32.Parse(DdlDepartDepend.SelectedValue); if (departamento.insereDepartamento()) Response.Redirect("..//Mensagens.aspx?msg=1"); Response.Redirect("..//Mensagens.aspx?msg=3"); } } public void preencheDropDownList() { LbOperacao.Text = "-Novo Departamento- "; if (DdlEmpresa.Items.Count <= 0) { Empresa empresas = new Empresa(); DdlEmpresa.DataSource = empresas.getEmpresas(); DdlEmpresa.DataTextField = "Nome_Empresa"; DdlEmpresa.DataValueField = "Id_Empresa"; DdlEmpresa.DataBind(); //DdlDepartDepend.Items.Clear(); Departamento departa = new Departamento(); List<Departamento> osDepartamento = departa.getDepartamentoByDepend(Convert.ToInt32(DdlEmpresa.SelectedValue)); for (int i = 0; i < osDepartamento.Count; i++) { ListItem item = new ListItem(osDepartamento[i].Descricao, "" + osDepartamento[i].Id_Depart_Depend + ""); DdlDepartDepend.Items.Add(item); } } }......esta classe continua mas n interessa o resto MÉTODO getDepartamento, que tb se encontra na classe Departamento: public List<Departamento> getDepartamento() { String sql = "SELECT * from Departamento"; List<Departamento> listaDeDepartamentos = new List<Departamento>(); SqlDataReader reader = dbApi.Executa(sql); int i = 0; try { while (reader.Read()) { Departamento departamento = new Departamento(); departamento.Id_empresa = reader.GetInt32(0); departamento.Id_departamento = reader.GetInt32(1); departamento.Descricao = reader.GetString(2); departamento.Aud_data = reader.GetDateTime(3); departamento.Aud_utilizador = reader.GetString(4); departamento.Id_Depart_Depend = reader.GetInt32(5); listaDeDepartamentos.Insert(i, departamento); i++; } } finally { reader.Close(); } return listaDeDepartamentos; } //MÉTODO getDepartamentoByDepend(), k tb está na classe Departamento public List<Departamento> getDepartamentoByDepend(int IdEmpresa) { String sql = "SELECT * from Departamento where id_empresa ="+IdEmpresa+""; List<Departamento> listaDeDepartamentos = new List<Departamento>(); SqlDataReader reader = dbApi.Executa(sql); int i = 0; try { while (reader.Read()) { Departamento departamento = new Departamento(); departamento.Id_empresa = reader.GetInt32(0); departamento.Id_departamento = reader.GetInt32(1); departamento.Descricao = reader.GetString(2); departamento.Id_Depart_Depend = reader.GetInt32(5); departamento.Aud_data = reader.GetDateTime(3); departamento.Aud_utilizador = reader.GetString(4); listaDeDepartamentos.Insert(i, departamento); i++; } } finally { reader.Close(); } return listaDeDepartamentos; } eu tenho mt codigo no meu projecto mas so isto xega.....para a kestao k eu coloquei...... aguardo a vossa ajuda :) thanks:) Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Julho 10, 2008 Você falou que o problema esta na hora de gravar no banco, então acredito eu seu problema esteja aqui: String sql_1 = "INSERT INTO Departamento (Id_empresa, Id_departamento, descricao_departamento, Aud_data, Aud_utilizador, Id_depart_depend)" + "VALUES (" + this.Id_empresa + ","+this.Id_departamento+ ",'" + this.Descricao+ "','"+this.Aud_data+"','" +this.Aud_utilizador+ "'," +this.Id_Depart_Depend+")"; Query.Add(sql_1); Qual dessas propriedades representa o seu DropDownList?? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
CCSS 0 Denunciar post Postado Julho 11, 2008 Você falou que o problema esta na hora de gravar no banco, então acredito eu seu problema esteja aqui: String sql_1 = "INSERT INTO Departamento (Id_empresa, Id_departamento, descricao_departamento, Aud_data, Aud_utilizador, Id_depart_depend)" + "VALUES (" + this.Id_empresa + ","+this.Id_departamento+ ",'" + this.Descricao+ "','"+this.Aud_data+"','" +this.Aud_utilizador+ "'," +this.Id_Depart_Depend+")"; Query.Add(sql_1); Qual dessas propriedades representa o seu DropDownList?? Abraços... Id_Depart_Depend --> é o id departamento de dependencia que representa o meu drop down list... Id_departamento --> é o id departamento que acabo de criar... Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Julho 11, 2008 Estranho não achei nenhum lugar que você alimentasse o Id_departamento com o valor do DropDownList, o que eu achei foi: Id_departamento = seq.insereSequencia();//recebe o id gerado Acredito que deveria ter em algum lugar que você setasse essa propriedade com o valor selecionado do seu Drop. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
CCSS 0 Denunciar post Postado Julho 11, 2008 Estranho não achei nenhum lugar que você alimentasse o Id_departamento com o valor do DropDownList, o que eu achei foi: Id_departamento = seq.insereSequencia();//recebe o id gerado Acredito que deveria ter em algum lugar que você setasse essa propriedade com o valor selecionado do seu Drop. Abraços... eu tinha dito já k o id era gerado no codigo...isso k viste é do id_departamento ....só tá assim pk é gerado no codigo senao n era preciso estar. o id_empresa é um dropdownlist e eu tb n faço nada disso......... ddlDepartDepend-->é o valor do dropdownlist do id departamento de dependencia Compartilhar este post Link para o post Compartilhar em outros sites