Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

CCSS

chave com dependencia

Recommended Posts

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

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, 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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.