Foros del Web » Programando para Internet » ASPX (.net) »

Problema con Base de datos

Estas en el tema de Problema con Base de datos en el foro de ASPX (.net) en Foros del Web. Hola, estoy trabajando una pagina asp.net en visual studio 2010 que tiene una base de datos en sql server 2008, y al momento de guardar ...
  #1 (permalink)  
Antiguo 25/10/2012, 19:46
Avatar de jesmi89  
Fecha de Ingreso: agosto-2008
Ubicación: Bello - Antioquia
Mensajes: 47
Antigüedad: 15 años, 8 meses
Puntos: 0
Pregunta Problema con Base de datos

Hola, estoy trabajando una pagina asp.net en visual studio 2010 que tiene una base de datos en sql server 2008, y al momento de guardar los datos que pido al usuario mediante un formulario, Efectivamente me los guarda en la tabla correspondiente de la BD, pero el error está en que cuando guarda los campos pertenecientes a departamento y municipio, me aparece es el Id perteneciente a cada uno y no como tal los nombres de los departamento y municipio seleccionado por el usuario en el dropdownlist.

No se si esto se deba a que uso dos bases de datos, que son "lugares" para lo de los departamentos y municipios (donde las tablas van relacionadas entre si), y otra llamada PQR, donde se almacenan todos los campos del formulario.

Por si depronto no me he hecho entender bien pongo el codigo que he generado para cada caso:

1. conexion a BD "Lugares" contiene las tablas "Departamento" y "Municipio"
Código:
private SqlConnection ccadena = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=D:\\Documents\\Visual Studio 2010\\Projects\\ProyectoFinal\\ProyectoFinal\\App_Data\\Lugares.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");

        public void mostrar_Ciudad()
        {
            //mediante una consulta se muestran los datos guardados en la BD pertenecientes a la Tabla Ciudad
            ccadena.Open();
            SqlCommand cmd = new SqlCommand("select Ciudad, IdCiudad from Ciudad" , ccadena);
            SqlDataReader dr = cmd.ExecuteReader();
            DropDepartamento.DataSource = dr;
            DropDepartamento.Items.Clear();
            DropDepartamento.Items.Add("Seleccione...");
            DropDepartamento.DataTextField = "Ciudad";
            DropDepartamento.DataValueField = "IdCiudad";
            DropDepartamento.DataBind();
            ccadena.Close();
        }

        public void mostrar_Municipio()
        {
            //mediante una consulta se muestran los datos guardados en la BD pertenecientes a la Tabla Municipio
            //indicando que dependerá del elemnto seleccionado en el primer Listado
            ccadena.Open();
            SqlCommand cmd = new SqlCommand("select Municipio, IdMunicipio from Municipio where IdCiudad= '" +
                DropDepartamento.SelectedValue + "'", ccadena);
            SqlDataReader dr = cmd.ExecuteReader();
            DropMunicipio.DataSource = dr;
            DropMunicipio.Items.Clear();
            DropMunicipio.Items.Add("Seleccione...");
            DropMunicipio.DataTextField = "Municipio";
            DropMunicipio.DataValueField = "IdMunicipio";
            DropMunicipio.DataBind();
            ccadena.Close();
        }

        protected void DropDepartamento_SelectedIndexChanged(object sender, EventArgs e)
        {
            //Si s eha seleccionado una ciudad, automáticamente mostrará los municipios pertenecientes a esta
            mostrar_Municipio();
        }
2. Conexion a BD "PQR" donde esta la tabla "Peticion"

Código:
protected void Button1_Click(object sender, EventArgs e)
        {
 if (CheckPeticion.Checked == true)
            {
                try
                {
                    SqlConnection ccadena = new SqlConnection();
                    ccadena.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=D:\\Documents\\Visual Studio 2010\\Projects\\ProyectoFinal\\ProyectoFinal\\App_Data\\PQR.mdf;Integrated Security=True;User Instance=True";

                    ccadena.Open();

                    string fecha_Solicitud, dependencia, nombre, apellido, tipo_Id, identificacion, email, direccion, telefono, departamento, municipio, asunto, solicitud, anexo;

                    fecha_Solicitud = txtFecha.Text;
                    dependencia = DropDependencia.Text;
                    nombre = txtNombre.Text;
                    apellido = txtApellido.Text;
                    tipo_Id = DropId.Text;
                    identificacion = txtNumId.Text;
                    email = txtEmail.Text;
                    direccion = txtDireccion.Text;
                    telefono = txtTelefono.Text;
                    departamento = DropDepartamento.Text;
                    municipio = DropMunicipio.Text;
                    asunto = txtAsunto.Text;
                    solicitud = txtSolicitud.Text;
                    anexo = FileUpload1.FileName;

                    string sql;
                    sql = "INSERT INTO Peticion VALUES ('" + fecha_Solicitud + "' , '" + dependencia + "' , '" + nombre + "' , '" + apellido + "' , '" + tipo_Id + "', '" + identificacion + "', '" + email + "', '" + direccion + "' , '" + telefono + "' , '" + departamento + "' , '" + municipio + "' , '" + asunto + "', '" + solicitud + "','" + anexo +"')";
                    SqlCommand cmd = new SqlCommand(sql, ccadena);
                    cmd.ExecuteNonQuery();
                    ccadena.Close();
                }

                catch (Exception ex)
                {
                    lblError.Text = "Error, " + ex.Message;
                }
            }
}
Siguen otros if, ya que la informacion se guarda en diferentes tablas segun el Checkbox seleccionado, pero ps eso no viene al caso.

Si no mas bien porque sucede lo q comente al principio, espero me puedan colaborar hayando el porque sucede esto o de que manera es posible solucionarlo

Gracias
  #2 (permalink)  
Antiguo 29/10/2012, 10:39
Avatar de DeivisAndres  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia
Mensajes: 305
Antigüedad: 12 años, 2 meses
Puntos: 41
Respuesta: Problema con Base de datos

Pues cuando tu llenas tu DDL en la parte:

Código Javascript:
Ver original
  1. DropDepartamento.DataValueField = "IdCiudad";

En vez de "IdCiudad" le pones como tengas en la BD "Ciudad" ya que lo que vas a mandar es el Value.
  #3 (permalink)  
Antiguo 29/10/2012, 11:36
Avatar de jesmi89  
Fecha de Ingreso: agosto-2008
Ubicación: Bello - Antioquia
Mensajes: 47
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problema con Base de datos

Pero si hago esto se me dañaria lo que he hecho en la primera base de datos, ya que existe una relacion, siendo la clave principal "IdCiudad" y la clave foránea "IdMunicipio". Además los campos de cada table estan identificado con un código asi:

Tabla Ciudad:
IdCiudad | Ciudad
-----------------------
1 | CUNDINAMARCA

Tabla Municipio:
IdMunicipio | IdCiudad | Municipio
--------------------------------------------
101 | 1 | Bogota
102 | 1 | Chia
103 | 1 | Fusa

Y asi sucesivamente

Por eso es que no se de que manera solucionar eso para no dañar esa relacion que existe entre esas tablas, y que al momento q el usuario seleccione en el formulario el departamento y municipio, se guarde en la otra base el nombre y no el Id que lo identifica

Gracias
  #4 (permalink)  
Antiguo 29/10/2012, 12:30
Avatar de DeivisAndres  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia
Mensajes: 305
Antigüedad: 12 años, 2 meses
Puntos: 41
Respuesta: Problema con Base de datos

Entonces no se podría ya que se necesita la Id para que identifique la ciudad de ese municipio o tal vez se podría poner como llave primaria el nombre o sea solo un campo en la tabla ciudad así solamente pondrias los nombres de todas las ciudades, por que lo que me dices tu es que la Id es una llave primaria y es necesaria para la foranea...

NOTA: Pues lo que haces se ve bien no se por que quieres que te mande el nombre, si quieres que cuando listes los usuarios y su lugar de origen solo realiza una unión de tablas para que solo muestres el nombre mas no la Id.

Última edición por DeivisAndres; 29/10/2012 a las 12:38
  #5 (permalink)  
Antiguo 30/10/2012, 12:48
Avatar de jesmi89  
Fecha de Ingreso: agosto-2008
Ubicación: Bello - Antioquia
Mensajes: 47
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problema con Base de datos

gracias por tus respuestas, ya lo he solucionado lo que hice fue guardar en tiempo de ejecucion la opcion escogida por el usuario usando txtValue1.Text = DropDepartamento.SelectedItem.Text; y ya de esta manera lo que hago es llamar en la BD a ese nuevo textbox y de esta manera se me ve reflejado en la BD el nombre que era lo que queria

sin embargo gracias por tu ayuda
  #6 (permalink)  
Antiguo 30/10/2012, 15:37
Avatar de DeivisAndres  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia
Mensajes: 305
Antigüedad: 12 años, 2 meses
Puntos: 41
Respuesta: Problema con Base de datos

No hay problema.

Etiquetas: net, aspx
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:25.