none
El por que de LINQ- Acepte valores null.Previamente validado en SQL !!! RRS feed

  • Pregunta

  • MI DUDA ES LA SIGUIENTE: EN LA TBL_ALUMNOS MIS ATRIBUTOS CONTIENEN LA PROPIEDAD NO ADMITIR VALORES NULL. HE INGRESADO REGISTROS DESDE SQL Y TODO SE COMPORTA DE MANERA NORMAL.

    CREATE TABLE [dbo].[TBL_ALUMNOS](
    	[CURP] [nvarchar](18) NOT NULL,
    	[NOMBRE] [varchar](22) NOT NULL,
    	[APELLIDO_PATERNO] [varchar](14) NOT NULL,
    	[APELLIDO_MATERNO] [varchar](14) NOT NULL,
    	[SEXO] [varchar](1) NOT NULL,
    	[F_NACIMIENTO] [date] NOT NULL,
    	[EDAD] [int] NOT NULL,
    	[CALLE] [varchar](30) NOT NULL,
    	[N_DOMICILIO] [int] NOT NULL,
    	[COLONIA] [varchar](30) NOT NULL,
    	[CP] [int] NOT NULL,
    	[LOCALIDAD] [varchar](30) NOT NULL,
    	[MUNICIPIO] [varchar](14) NOT NULL,
    	[ENTIDAD] [varchar](8) NOT NULL,
    	[TELEFONO] [varchar] (20) NOT NULL,
    	[TUTOR] [varchar](50) NOT NULL,
    	[GRADO] [int] NOT NULL,
    	[GRUPO] [varchar] (10) NOT NULL,
    	[TURNO] [varchar](10) NOT NULL,
    	[N_TECNOLOGIA] [int] NOT NULL,
    	[TECNOLOGIA] [varchar](50) NOT NULL,
    	[OBSERVACIONES] [varchar](120) NOT NULL,
    CONSTRAINT PK_CURP PRIMARY KEY (CURP) 
    );
    GO
    
    
    
    CREATE PROCEDURE USP_AGREGAR_ALUMNOS
    			
    	      @CURP NVARCHAR (18)=NULL,
    	      @NOMBRE VARCHAR (22)=NULL,
    	      @APELLIDO_PATERNO VARCHAR (14)=NULL,
    	      @APELLIDO_MATERNO VARCHAR (14)=NULL,
    	      @SEXO VARCHAR (1)=NULL,
    	      @F_NACIMIENTO date=NULL,
    	      @EDAD INT=NULL,
    	      @CALLE VARCHAR(30)=NULL,
    	      @N_DOMICILIO INT=NULL,
    	      @COLONIA VARCHAR (30)=NULL,
    	      @CP INT=NULL,
    	      @LOCALIDAD VARCHAR(30)=NULL,
    	      @MUNICIPIO VARCHAR (14)=NULL,
    	      @ENTIDAD VARCHAR(8)=NULL,
    	      @TELEFONO VARCHAR(20)=NULL,
    	      @TUTOR VARCHAR(50)=NULL,
    	      @GRADO INT=NULL,
                  @GRUPO VARCHAR(10)=NULL,
    	      @TURNO VARCHAR(10)=NULL,
    	      @N_TECNOLOGIA INT=NULL,
    	      @TECNOLOGIA VARCHAR (50)=NULL,
    	      @OBSERVACIONES VARCHAR (120)=NULL,
    		  @MJS VARCHAR (50) OUT
    AS BEGIN
    		IF(EXISTS(SELECT*FROM TBL_ALUMNOS WHERE CURP=@CURP))
    		SET @MJS=@CURP + '  --EL ALUMNO YA SE ENCUENTRA INSCRITO--'
    		ELSE
    BEGIN
    INSERT INTO [dbo].[TBL_ALUMNOS]
    		VALUES(
    			 @CURP,
    			 @NOMBRE,
    	         @APELLIDO_PATERNO,
    	         @APELLIDO_MATERNO,
    	         @SEXO,
    	         @F_NACIMIENTO,
    	         @EDAD,
    	         @CALLE,
    	         @N_DOMICILIO,
    	         @COLONIA,
    	         @CP,
    	         @LOCALIDAD,
    	         @MUNICIPIO,
    	         @ENTIDAD,
    	         @TELEFONO,
    	         @TUTOR,
    			 @GRADO,
    	         @GRUPO,
    	         @TURNO,
    	         @N_TECNOLOGIA,
    	         @TECNOLOGIA,
    	         @OBSERVACIONES
     )
      SET  @MJS=@CURP + '  --ALUMNO REGISTRADO CORRECTAMENTE--' 
    END
    END
    GO
    


    CUANDO REALIZO EL REGISTRO DE UN NUEVO ALUMNO DESDE UN FORM. EN EL CAMPO @CURP ME PERMITE DEJAR EL CAJA DE TEXTO CORRESPONDIENTE EN BLANCO Y POR ENDE SE REGISTRA.

    private void simButtonRegistrar_Click(object sender, EventArgs e)
            {
                try
                {
                    string mjs = "";
                    objAlumno.USP_AGREGAR_ALUMNOS(
                                                    textEditCurp.Text,
                                                    textEditNombre.Text,
                                                    textEditapePate.Text,
                                                    textEditapeMat.Text,
                                                    textEditSexo.SelectedItem.ToString(),
                                                    Convert.ToDateTime(textEditfecNac.Text),
                                                    Convert.ToInt32(textEditEdad.SelectedItem.ToString()),
                                                    textEditCalle.Text,
                                                    Convert.ToInt32(textEditnumDomicilio.Text),
                                                    textEditColonia.Text,
                                                    Convert.ToInt32(textEditcodPostal.Text),
                                                    textEditLocalidad.SelectedItem.ToString(),
                                                    textEditMunicipio.SelectedItem.ToString(),
                                                    textEditEntidad.SelectedItem.ToString(),
                                                    textEditTelefono.Text,
                                                    textEditTutor.Text,
                                                    Convert.ToInt32(textEditGrado.SelectedItem.ToString()),
                                                    textEditGrupo.SelectedItem.ToString(),
                                                    textEditTurno.SelectedItem.ToString(),
                                                    Convert.ToInt32(textEditnumTecnologia.SelectedItem.ToString()),
                                                    textEditTecnologia.Text,
                                                    textEditObservaciones.Text, ref mjs);
                    MessageBox.Show(mjs);
                    limpiarCampos();
                }
                catch 
                {
                    MessageBox.Show("Ocurrio un ¡¡¡Error durante el Registro!!!. Verique las cajas de Texto");
                    limpiarCampos();
                }                    
            }

    ME GUSTARÍA PEDIR TU OPINIÓN. QUE PASO ES LO QUE ESTOY REALIZANDO MAL. 

    UN CORDIAL SALUDO A LA DISTANCIA.  


    viernes, 14 de noviembre de 2014 3:40

Respuestas

  • Sera que <su_variable> String Curp nunca será null :)
    

    Puede eliminar la duda en su STORE

    ....
    AS BEGIN
    		IF(EXISTS(SELECT*FROM TBL_ALUMNOS WHERE CURP=@CURP))
    		SET @MJS=@CURP + '  --EL ALUMNO YA SE ENCUENTRA INSCRITO--'
    		ELSE
    
    if @CURP = ''
    SET @CURP = NULL
    
    BEGIN
    ....

    o en su APP

    antes de llamar a su store procedure
    
    if (curp == "")
    curp = null;

    en controlar en el constructor de su clase

    Public Clase(string curp, .........)
    {
      
      if(curp == "")
         curp = null;
    
    this,curp = curp;
    
    ...
    ...
    ..
    
    
    
    }



    G. Poliovei

    viernes, 14 de noviembre de 2014 10:27