Mostrando entradas con la etiqueta Programación. Mostrar todas las entradas
Mostrando entradas con la etiqueta Programación. Mostrar todas las entradas

miércoles, 8 de enero de 2014

Variables Globales o Publicas en C#

Si vienes de Visual Basic, te habrás dado cuenta que en C# no existe módulos donde generalmente se creaban las variables globales.

Para tener variables globales en C#, crea una clase dentro de tu proyecto y nombrala "Globales", dentro de la clase escribe "public static string variableGlobal1;", listo.... ya tienes tu variable global.

Mas o menos deberia quedarte así:

namespace Demo
{
    static class Globales
    {
        public static string variableGlobal1;
    }
}


Para hacer referencia a la variable de cualquier lugar:

Asignando valor:

Globales.variableGlobal1 = "Valor Demo";

Obtener valor de la variable

String cadena = Globales.variableGlobal1;

Un byte mas de sabiduría en tu cabeza.

Saludos....

lunes, 30 de diciembre de 2013

Cerrar u ocultar ventana desde otra ventana WPF con VB 2010

Me he visto en esta situación debido a que muchas de las cosas que son fáciles y cotidianas manejando formularios en VB, no tan similares a manejar ventanas WPFs.

Bueno al grano, este es el código del botón de la ventana principal que abrirá la segunda ventana, y de la 2da. ventana mediante un botón manipularemos la primera ventana.


Aquí el código del botón de la 2da ventana, que manipulara la 1ra. ventana, en este caso lo que estoy haciendo es esconder la primera ventana, si quieres cerrar la primera ventana, lo único que tienes que hacer es cambiar la palabra "Hide" por la palabra "Close".


Eso es todo...

Chao.

lunes, 28 de octubre de 2013

Como recuperar la clave del usuario sa en Sql Server

Hay muchas maneras de liarla con nuestra base de datos SqlServer y una de ellas es olvidar o no tener a nuestra disposición la clave del usuario sa. Puede ser debido a que nunca la usemos, porque tenemos nuestro propio usuario administrador y realmente no iniciamos sesión con esa cuenta. Puede ser que hayamos heredado esa maravillosa base de datos y no tengamos ningún usuario ni de dominio que sea administrador. O peor aún, que incluso desde el mismo día de la instalación no sepamos esa clave y acabamos de eliminar el único login con los permisos adecuados... Para cualquiera de estas historias tristes puede haber una solución que no sea reinstalar.
Desde SqlServer 2005 (y hasta SqlServer 2012 que yo sepa) existe, como plan de recuperación para este tipo de desastre, la posibilidad de arrancar la base de datos SqlServer en modo "single-user" y poder acceder a ella con cualquier usuario de miembro del grupo de administradores del sistema. Arrancar la base de datos en single-user está pensado para realizar tareas de mantenimiento, como por ejemplo aplicar patches y realizar otras tareas. En nuestro caso, donde hemos perdido la clave del usuario sa, nos permitirá, una vez limitado el acceso, conectarnos por ejemplo via sqlcmd y agregar un usuario de la base de datos al rol sysadmin dentro de Sql Server. A continuación un resumen...
Pasos a seguir:
  • Abrimos el Administrador de Configuración de SqlServer. Buscamos el Servicio de SqlServer y miramos las Propiedades, en la pestaña Opciones Avanzadas o Parámetros de inicio añadimos un -m al final de la linea. (puede variar segun la versión). Presionamos aceptar y reiniciamos el servicio.

  • Una vez reiniciado, abrimos la linea de comandos y el cliente sqlcmd. Ejecutamos lo siguiente:
 sqlcmd -S localhost

 1> EXEC sp_addsrvrolmember 'DOMINIO\Dba','sysadmin';

  • Volvemos al Administrador de Configuración de SqlServer, quitamos el -m que hemos añadido en el primer punto y volvemos a reiniciar el servicio. Finalmente probamos de acceder con el usuario de dominio anterior y restauramos la clave del usuario sa (y la guardamos en lugar seguro). Misión cumplida.
Existe una variante sobre el uso del parámetro -m para arrancar la bbdd en modo usuario único, es -m"Nombre app" (En el nombre de la aplicación cliente se distinguen mayúsculas y minúsculas). Este uso del parámetro limita las conexiones a una aplicación cliente con el nombre especificado. Por ejemplo, -m"SQLCMD" limita las conexiones a una conexión única y esa conexión se debe identificar como el programa cliente SQLCMD. Se puede usar esta opción cuando estemos iniciando SQL Server en modo de usuario único y una aplicación cliente desconocida esté usando la única conexión disponible. Para limitarlo al Management Studio, usamos -m"Microsoft SQL Server Management Studio - Query".

jueves, 29 de agosto de 2013

Obtener el valor del item seleccionado del ListBox o ComboBox en C# WPF

Es habitual que además de añadir una cadena al ListBox o ComboBox añadamos o relacionemos también un valor numérico con dicha cadena. También sucede que al recuperar, por lo menos los que estamos acostumbrados a VB quisiéramos recuperar el valor de esta forma ListBox1.SelectedValue, sin embargo esto no funciona en controles WPF, pero aquí les dejo la forma de recuperar el valor (no la cadena que puede ser visualizada) en 2 lineas.

Si es un ListBox,

string valor = ((System.Data.DataRowView)ListBox1.SelectedItem).Row.ItemArray[0].ToString();
MessageBox.Show(valor);

Si es un ComboBox

string valor = ((System.Data.DataRowView)ComboBox1.SelectedItem).Row.ItemArray[0].ToString();
MessageBox.Show(valor);

(editado)
Si por si caso te preguntas como recuperar la cadena que has seleccionado

string valor = ComboBox1.SelectedItem.ToString();
MessageBox.Show(valor);

miércoles, 28 de agosto de 2013

Error extraño en C#

No se que paso, prácticamente es el mismo código, cuando me apareció el error "No se puede utilizar como método el miembro 'System.Data.DataSet.Tables' no invocable", busque por internet la solución y no encontré nada.

Lo bueno es que lo arregle, probando todo tipo de código que encontré por ahí, y al final encontré uno que funcionaba todo chevere, copie linea por linea en el que me daba error, y lo gracioso es que me sigue dando error.

El código de arriba, se encuentra en un botón (el que esta mal) y el otro en otro botón en la misma ventana WPF, son completamente iguales solo que no se porque en el primer caso me da error.



viernes, 18 de enero de 2013

Solo lectura en Gridcontrol

La verdad no encontré para que todo el control sea solo en modo lectura, pero puedes colocar cada columna en forma independiente en modo lectura de la siguiente forma.

GridControl1(1).ReadOnly = True

donde 1 es en numero de la columna, o también puedes poner el nombre de la columna.

Si quieres que toda la tabla sea en modo lectura, pon esto.


 For NCol = 0 To GridControl1.Columns.Count - 1
            GridControl1.Columns(NCol).ReadOnly = True
Next

jueves, 10 de enero de 2013

Modificar app.config - Cadena de Conexión

Para aclarar estoy usando Visual Basic 2010 y WPF, sin embargo el WPF no interviene en el código que utilizare, así que los que utilizan Formularios no tendrían problema alguno.

Para empezar abrimos el app.config.


Añadan una conexion con el Nombre "CadenaConexion", el connectionString coloquen lo que sea, al final va ser modificado por nuestra aplicacion, y en providen name pueden colocar "System.Data.SqlClient" para los que utilizan Sql Server o "MySql.Data.MySqlClient" para los que utlizan MySQL, al final tampoco importa mucho ya que también sera modificado por nuestra aplicacion.


Crea una ventana o formulario con una caja de texto (TextBox) con el nombre o name "TBcadena" y un Botón con el nombre de "BTActualizar", entra al evento Clic del botón y coloca este código.


Como veras el boton esta llamando a un procedimiento llamado CambiarCNX y donde se le envía un parámetro de tipo string, en este caso le estamos pasando el contenido del TextBox.

El codigo del procedimiento es este.


Ya estaría, si quieres verificar si resulto, porque muchos ESTOY SEGURO que al fijarse en su app.config no ven cambio alguno, les comento que al momento de ejecutar crea su propio app.config y esta dentro del la carpeta bin o debug.

Y NO precisamente se llama app.config, tiene el nombre del proyecto con la extensión vshost.exe (no es un EXE es un XML) y se puede abrir con el Bloc de Notas o NotePad


Listo, esito sería.

---------------------------------------------------------------------------------------

Yo no sabia pero me entere, así como nosotros podemos abrir con un Bloc de Notas, otros también podrían hacerlo no te parece, podrian ver nuestro usuario, lo peor ver la contraseña de acceso.

Para que te calmes tambien se puede guardar encriptado de la siguiente forma.

Este es el código de procedimiento CambiarCNX, ves alguna diferencia...


Exacto, al final aumente una llamada a otro procedimiento, el que me encripta los datos y su código es este.


Ahora si, fíjate tu supuesto app.config que en realidad tiene otro nombre y se encuentra en la carpeta Bin o Debug. Solo veras garabatos.

Ahí te ves.....