jueves, 5 de septiembre de 2019

Exception from HRESULT: 0x80131040

The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)


Hola.

En este post voy a escribir acerca de un error que nos encontramos el día de hoy en una aplicación web.

Es importante mencionar que el error ocurrió al momento de reemplazar el archivo dll de la aplicación. Esto fue para liberar algunos cambios en producción que ya habían sido probados en desarrollo.

La liberación de cambios a producción se hace de manera manual (no vamos a hablar acerca de eso). Es decir que el archivo dll de la aplicación es copiado del ambiente de desarrollo a producción. Generalmente lo hacemos reemplazando el archivo dll de tal manera que no hay dos versiones del mismo en el mismo directorio.

El error que se cometió en esta ocasión es que se hizo un backup del archivo dll en la misma carpeta bin. Es decir que se cambió el nombre al archivo dll para respaldarlo y luego se colocó el nuevo dll en la misma carpeta bin.

El error que obtuvimos fue:

Could not load file or assembly '1-www.miaplicacion.com' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040

En realidad el error es bastante descriptivo.

No se debe colocar ambos dlls de la misma aplicación en la carpeta bin. A pesar de tener un nombre diferente hay problema en la aplicación si los archivos dll están duplicados en el mismo folder.

Así que la solución fue borrar el archivo backup de la carpeta bin y con esto el error quedo resuelto.


Espero les sirva.







martes, 3 de septiembre de 2019

Hacer submit a un form con return de una función Javascript

Cómo hacer un submit a un form con el resultado o return de una función Javascript.


Hola.

En este post voy a describir diversas maneras de cómo realizar un submit a un form utilizando el resultado o return de una función Javascript.

Esto se utiliza generalmente cuando se requiere hacer validaciones Javascript en los campos del form antes de decidir si se hacer submit o no. Por ejemplo validar que los campos requeridos estén llenos o en formato correcto.

El control del submit, como he mostrado en otros posts, se puede realizar en diversos momentos usando Javascript y a través de diferentes elementos HTML.

El submit de un form se puede realizar con: botón tipo submit, botón normal con javascript, el evento onsubmit del form, etc.

En este caso se usa el return de una función Javascript en el evento onclick de un submit.

Dejo aquí los ejemplos básicos de cómo usar el return de una función para permitir la ejecución del submit.

Dos botones tipo submit muestran directamente el return false y return true en acción. El tercer submit llama a la función Javascript y valida que la caja de texto tenga una longitud mayor a cero para regresar true, por default regresará falso.


<!DOCTYPE HTML> 
<html lang = "en-us"> 
<head> 
  <title></title> 
  <meta charset = "utf-8" /> 

<script type="text/javascript">

function funcionreturn(){

var resultado=false;
if(document.formnombre.var1.value.length>0) resultado=true;
alert(resultado);
return resultado;

}

</script>

</head> 
<body> 

<form name="formnombre" id="formid" action="http://www.google.com">

<input type="text" name="var1" value="" />

<input type="submit" value="submit return false" onclick="return false;" />
<input type="submit" value="submit return true" onclick="return true;" />
<input type="submit" value="return funcion" onclick="return funcionreturn();"  />

</form>

</body> 
</html> 


Espero les sirva.




domingo, 1 de septiembre de 2019

Obtener el valor de un radio button con Javascript

Como obtener el valor de un radio button con Javascript


Hola.

En este post voy a mostrar cómo obtener el valor de un radio con Javascript y cómo hacer validación para saber si un radio ha sido seleccionado o no. Esto es muy útil cuando se quiere hacer validaciones Javascript en un form antes de hacer submit.

El radio button tiene una función especial dentro de los elementos HTML que se usan dentro de un form. Permite limitar a determinado numero de opciones la elección de un usuario.

Generalmente se usa cuando son pocas las opciones a elegir. Digamos dos o tres opciones. Otros controles se pueden usar cuando se trata de múltiples opciones como por ejemplo los check box o los select con opción múltiple.

El uso más común que le he dado es la opción de género (Masculino y Femenino), dirección (Primaria y Secundaria), etc.

Lo primero que deben tomar en cuenta es que para lograr este comportamiento del radio button, los radio button deben tener el mismo name. Ejemplo:

<input type="radio" name="nombreradio" value="valor1" />
<input type="radio" name="nombreradio" value="valor2" />
<input type="radio" name="nombreradio" value="valor3" />

Colocando los radios con el mismo nombre permite que uno solo de ellos permanezca seleccionado. Si el usuario hace click en otro de ellos, este será el seleccionado y el anterior se limpiará.

Ahora, para obtener el valor seleccionado, basta acceder la propiedad value del radio button. Como todos tienen el mismo nombre se puede usar el name y devolverá un único valor.

Aquí abajo les dejo el ejemplo HTML con Javascript para que lo prueben con cualquier navegador.


<!DOCTYPE HTML> 
<html lang = "en-us"> 
<head> 
  <title></title> 
  <meta charset = "utf-8" /> 

<script type="text/javascript">

function verradiovalue(){
  var radiovalue=document.nombreform.nombreradio.value;
  if(radiovalue.length==0) radiovalue="ninguno";
  alert("Valor seleccionado: " + radiovalue);
}

</script>

</head> 
<body> 

<form name="nombreform" id="idform" action="http://www.google.com">

<input type="radio" name="nombreradio" value="valor1" />
<input type="radio" name="nombreradio" value="valor2" />
<input type="radio" name="nombreradio" value="valor3" />

<input type="button" value="Ver radio value" onclick="verradiovalue();" />

</form>

</body> 
</html> 


Puse una función Javascript en un botón para ver el valor del radio seleccionado. Si no hay selección se imprime "ninguno".

Con esto pueden personalizar su código a placer.

Espero les sirva.







domingo, 18 de agosto de 2019

Hacer submit a un form con javascript

Cómo hacer submit a un form con javascript



Hola.

El hacer submit a un form usando javascript es muy utilizado en cualquier momento de un desarrollo. Esto es porque en ocasiones necesitamos personalizar los eventos que disparan un submit.

No siempre requerimos hacer submit únicamente con el botón de submit. Y sobre todo, no siempre tenemos o queremos usar librerías de Javascript como jQuery.

Ejemplos de cuando requerimos hacer submit con javascript: cuando queremos hacer submit después de hacer validaciones, cuando requerimos que más de un botón puedan hacer submit, cuando el submit depende de un evento externo, etc.

Aquí les dejo un ejemplo básico de HTML y Javascript para hacer submit que pueden personalizar fácilmente.

Les pongo cuatro maneras de hacerlo: La default que es únicamente usando un botón tipo submit dentro de la forma, usando botón normal con el nombre de la forma, usando botón normal con el id de la forma y con el código directo en el evento onClick del botón.

El submit y los tres botones hacen exactamente lo mismo. Los botones usan el evento onClick para llamar a las funciones Javascript definidas en el head del html.

Ya con el código de abajo podrán personalizarlo para realizar otras cosas como cambiar la acción de la forma, mostrar alertas, etc.

Lo que permite javascript es poder realizar eventos antes de ejecutar el submit. Observen como el campo tipo text llamado var1 se concatena por url a la dirección action del form.


Mi HTML con Javascript se ve así:


<!DOCTYPE HTML> 
<html lang = "en-us"> 
<head> 
  <title></title> 
  <meta charset = "utf-8" /> 

<script type="text/javascript">

function submitconjavascriptporname(){
  document.formnombre.submit();
}

function submitconjavascriptporid(){
  document.getElementById("formid").submit();
}

</script>

</head> 
<body> 

<form name="formnombre" id="formid" action="http://www.google.com">

<input type="text" name="var1" value="value1" />

<input type="submit" value="Submit default" />

<input type="button" value="Submit con javascript por name" onclick="submitconjavascriptporname();" />

<input type="button" value="Submit con javascript por id" onclick="submitconjavascriptporid();" />

<input type="button" value="Submit con javascript por name onclick directo" onclick="javascript:document.formnombre.submit();" />

</form>

</body> 
</html> 


Esto lo abren con cualquier navegador y jala.

Espero les sirva.





sábado, 13 de julio de 2019

ORA-01543: tablespace already exists al crear un tablespace

ORA-01543: tablespace already exists al crear un tablespace


Hola.


Este error me sale al correr una instalación que contiene scripts SQL de Oracle. Los cuales se ejecutan como parte de la instalación.

Después de varios intentos y al toparme con varios errores en diferentes partes de la instalación, he ejecutado el mismo script en un par de ocasiones y esto provocó que haya creado un tablespace con anterioridad.

Al intentar correr la instalación nuevamente, me sale este error:

ORA-01543: tablespace already exists al crear un tablespace

En este caso lo que hice es asegurarme de borrar el TABLESPACE completamente para volver a ejecutar el script de instalación sin problemas.

Solución.


Hay diferentes maneras de borrar un TABLESPACE pero la más completa que encontré y que me funcionó es esta:

sql> DROP TABLESPACE mitablespace INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;

Esto aplica también para tablespaces temporales


Espero les sirva.








miércoles, 10 de julio de 2019

ORA-01031: insufficient privileges al crear un tablespace

ORA-01031: insufficient privileges al crear un tablespace


Hola.

El error de arriba se presenta cuando estás intentando un CREATE TABLESPACE o también algún CREATE TEMPORARY TABLESPACE en su base de datos y el usuario no tiene permiso para crear tablespaces.

Ejemplo:

sql> CREATE TABLESPACE mitablespace;
ORA-01031: insufficient privileges 


Solución.

Bien pues nada del otro mundo, asigna permiso de creación de tablespace al usuario con el que ejecutas la instrucción:

sql> GRANT CREATE TABLESPACE TO miusuario;


Intenten nuevamente la instrucción y está hecho.


Espero les sirva.










miércoles, 3 de julio de 2019

ORA-01940: cannot drop a user that is currently connected

ORA-01940: cannot drop a user that is currently connected


Hola.

Estoy intentando eliminar un usuario de Oracle 11g porque mi instalación básicamente no me sale. No quiero contarles mis penas sobre por qué me la paso escribiendo sobre errores de Oracle y no viviendo la vida así que hoy les escribo cómo solucionar este error:

ORA-01940: cannot drop a user that is currently connected

Para no hacer largo el cuento les pongo la solución muy interesante que encontré para identificar las sesiones conectadas y cómo matarlas.

Lo que estoy intentando es un DROP USER así:

sql>DROP USER miusuario CASCADE;

Como ven el error claramente dice que hay sesiones de usuario abiertas o conectadas por lo que primero debemos saber cuales son. Para esto ejecuten el siguiente query desde un usuario con permisos, digamos el usuario system:

SELECT v$session.sid, v$session.serial#, v$session.status, v$process.spid 
FROM v$session, v$process 
WHERE v$session.username = 'miusuario' 
AND v$process.addr (+) = v$session.paddr;


sid   serial# status           spid
---    ---       ------             ----
592 171    INACTIVE 20437


El campo spid les dice el número de proceso id a nivel sistema operativo que se está conectando a la base de datos. Con esta información fácilmente pueden identificar el proceso y matarlo.

Para ver mas información acerca del proceso en su sistema operativo Linux pueden usar el siguiente comando:

[oracle@edqtrn bin]$ ps -ef | grep <spid>

Ya que lo vieron y deciden que puede morir, ejecuten el siguiente comando:

[oracle@edqtrn bin]$ sudo kill -9 <spid>

Hagan esto por cuantos resultados de procesos les haya devuelto el query. En cuanto terminen vuelvan a ejecutar el DROP USER y ya deben poder eliminar el usuario.

sql>DROP USER miusuario CASCADE;
User dropped


Espero les sirva.