|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - okap
1
« en: Jueves 12 de Febrero de 2009, 13:01 »
Hola a todos: Tengo un problema a la hora de preparar la instalación de un programa que he hecho en visual c# utilizando como base de datos SQL Server 2005 Express.
El problema es el siguiente. Resulta que la primera vez que se ejecuta a la aplicación tras la instalación me he creado un formulario para configurarla.
Uno de los procesos que hago es configurar el SQL Server por código. Una de las cosas que tengo que hacer para activar los inicios de sesión con autenticación SQL es modificar el registro de Windows. Los pasos que se hacen desde que se ejecuta la aplicación hasta que se cambia el registro son los siguientes:
1. Se ejecuta la aplicación. 2. Arranco el motor de SQL Server por código para realizar una consulta a la base de datos y comprobar y la base de datos que quiero crear existe o no. 3. Una vez hecha la comprobación anterior detengo, por código, el motor de la base de datos para cambiar la clave del registro de Windows que me activa los inicios de sesión con autenticación SQL. 4. Tras cambiar el registro de Windows vuelvo a arrancar por código el motor de la base de datos. 5. Me creo por código un inicio de sesión para entrar en SQL Sever y aquí es donde viene el problema.
Pues bien, al volver a arrancar el motor tras cambiar el registro e ir a crearme el inicio de sesión me da el siguiente error al ejecutar la línea “miCommand_G.ExecuteNonQuery();”:
error en el nivel de transporte al enviar la solicitud al servidor. (Provider: proveedor de memoria compartida, error: 0 - Se está cerrando la canalización.
A continuación os pongo el código donde creo el inicio de sesión y donde me pega el fallo, por si os sirve de ayuda para darme alguna solución.
string s = "CREATE LOGIN [reformahogar] WITH PASSWORD=N'reformahogar', DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[Español], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF "; s += " EXEC sys.sp_addsrvrolemember @loginame = N'reformahogar', @rolename = N'sysadmin' "; s += " EXEC sys.sp_addsrvrolemember @loginame = N'reformahogar', @rolename = N'dbcreator' "; s += " ALTER LOGIN [reformahogar] ENABLE";
//La orden T-SQL para asignar como usuario propietario de la BD. string propietarioBD = "reformahogar"; string usuario_propietario = "EXEC('use ReformaHogar EXEC( "; usuario_propietario += " ''sp_changedbowner " + propietarioBD + " '')') "; miCommand_G = new SqlCommand();
try { // Abrimos la conexión y ejecutamos el comando if (miConexionSQL_CrearBD_G.State.Equals(ConnectionState.Closed)) miConexionSQL_CrearBD_G.Open();
miCommand_G.CommandText = s; miCommand_G.CommandType = CommandType.Text; miCommand_G.Connection = miConexionSQL_CrearBD_G; miCommand_G.ExecuteNonQuery(); // Aquí da el error
He estado buscando por internet y no he encontrado nada que me aclare el motivo por el cual se me produce este fallo.
He estado investigando cuando se produce el problema y me he dado cuenta de lo siguiente. Si cuando ejecuto por primera vez la aplicación el motor de la base de datos está previamente detenido, no lo arranco para hacer la comprobación de si existe la base de datos que quiero crear, sino que directamente con el motor parado cambio el registro de Windows, y luego arranco el motor. De esta forma no me da error.
El problema se produce al tener el motor arrancado, parar el motor, luego cambiar el registro y parece que al volverlo a arrancar algo no queda bien y al ejecutar el “ExecuteNonQuery”, me da el citado error.
He de decir que tengo habilitardas en el “surface area” las conexiones por TCP y las canalizaciones por nombre (named pipes).
Le estado dando muchas vueltas y no encuentro una razón concluyente por la cual me esté pasando esto.
Agradecería muchísimo vuestra ayuda.
Muchas gracias.
2
« en: Lunes 9 de Febrero de 2009, 10:10 »
Hola a todos:
Estoy creando un setup para una aplicación Windows form, que he hecho con c#. Como base de datos he utilizado SQL Server Express 2005. El problema que tengo al crear la instalación es que no sé de que manera puedo agregar la base de datos para que se instale junto con los demás paquetes de la instalación. También desconozco como crear desde la instalación de mi aplicación el usuario y contraseña para entrar a la base de datos. En definitiva el problema que tengo es que no sé como hacer de forma automática todo ese proceso, para que cuando entregue mi aplicación los usuarios la puedan instalar sin problemas y en la instalación se agregue y configure la base de datos para que el programa pueda funcionar con sólo instalarlo sin hacer nada más. Ya he hecho pruebas de instalación y sé como instalar el SQL Server en el instalador que he preparado, pero repito que no sé como meter la base de datos que utiliza mi aplicación. Espero que me podais ayudar, os lo agradecería mucho, y que me haya explicado con claridad. Un saludo.
3
« en: Martes 3 de Febrero de 2009, 15:01 »
Trabajo con java y la base de datos es MySql.
Tengo el siguiente problema. Tengo que importar datos a MySql desde tablas Paradox (ficheros .db). He instalado el BDE Administrator, y aquí vienen los problemas.
Si no está instalado el BDE, al importar datos se recogen bien los caracteres que son mayúsculas con tilde (y todos los demás). Supongo que en este caso se emplea el conector de Microsoft para Paradox, que lo lleva integrado en una dll en c:windowssystem32.
Al instalar el BDE, parece que sustituye esa dll. Al recoger los datos, todos los caracteres que son mayúscula y llevan tilde se ven mal (no reconoce el carácter).
Ya he mirado las opciones del BDE administrator y he probado varias opciones de lenguaje, pero nada.
Agradecería mucho vuestra ayuda.
Gracias a todos.
4
« en: Domingo 11 de Enero de 2009, 01:23 »
Hola a todos:
Tengo un problemilla con el Crystal Reports. Yo trabajo con c# y tengo que diseñar un formulario para impresión. El problema que tengo es que en la cabecera del formulario quiero mostrar los datos de la empresa. Bien, pues esos datos los tengo almacenados en una tabla “Configuración” en SQL Server. Lo que he hecho ha sido crearme un DataSet con el asistente que me acceda a esa tabla. Luego desde el Crystal Reports utilizando el “Field Explorer” agrego dicho dataset. Una vez hecho esto me permite arrastrar los campos de la tabla que tengo en el dataset al documento de Crystal Reports. Yo concretamente para hacer la prueba arrastro el campo del nombre de la empresa a la cabecera de la página y cuando compilo no me sale ningún dato en el lugar donde he puesto el campo. El resto de datos sí que se me muestran en la línea de detalle, pero esos datos pertenecen a otra tabla que me he creado dinámicamente para mostrar los datos que a mí me interesan, pero con eso no tengo problema. He comprobado que el dataset que contiene la tabla de configuración tenga conexión con la base de datos, y efectivamente tiene conexión ya que me abro desde el propio dataset, con el asistente una previsualización de los datos, y me los muestra sin problemas. Me sería de mucha ayuda que alguien me echara un cable. Lo que necesito básicamente es poder poner en un documento de Crystal Reports un campo de una tabla para que me muestre el contenido de dicho campo. Realmente la tabla de donde quiero coger el campo tan sólo tiene un único registro, ya que son datos de configuración de la aplicación, con lo cual no tendría ni que filtrar la tabla. Espero que me puedan ayudar. Muchas gracias a todos.
5
« en: Domingo 21 de Septiembre de 2008, 23:51 »
Hola Profesor X:
Ya he resuelto mi problema. Además de incluir las referencias a System.Windows.Forms y System.Drawing he tenido que indicar en cada uno de los metodos o estructuras que hacian referencia al espacio de nombres System..., toda la ruta de acceso hasta el metodo o estructura deseado. La verdad es que resulta un poco tedioso escribir tanto, aunque eso se puede solucionar creando un alias mediante using, pero la verdad es que no termino de comprender por qué si he incluido la referencia a System.Windows.Forms y System.Drawing, luego a la hora de escribir el código tengo que volver a escribirlo todo. Te indico un ejemplo para que lo veas:
public static void EscalarVentanaHija(System.Windows.Forms.Form frm, System.Drawing.Size tamanyo) { float h = System.Windows.Forms.SystemInformation.PrimaryMonitorMaximizedWindowSize.Width - tamanyo.Width; float v = System.Windows.Forms.SystemInformation.PrimaryMonitorMaximizedWindowSize.Height - tamanyo.Height;
float relH = h / (float)1014; float relV = v / (float)716;
frm.Scale(new System.Drawing.SizeF(relH, (float)relV)); }//fin EscalarVentanaHija
Una vez hecho esto compilé y no tuve ningún problema. Muchas gracias por toda la ayuda prestada. Me ha servido de mucho Saludos
6
« en: Sábado 20 de Septiembre de 2008, 15:04 »
Hola Profesor X, gracias por responder. Te explico, esa opción ya la había probado. La he probado tanto añadiendo la referencia 'System.Drawing' a ella sóla y ya está e incluso por probar también poniendola utilizando 'using System.Drawing', las dos a la vez aunque parezca absurdo, pero no funciona. Me sigue apareciendo un error al compilar, dicho error es el que ya he comentado anteriormente: error CS0246: The type or namespace name 'Size' could not be found (are you missing a using directive or an assembly reference?). A continuación te remito el código de la función que quiero incluir en la libreria de funciones de utitlidades por si tú vieses algo anormal que yo no haya visto y me pudieses ayudar, lo cual te agradecería. Muchas gracias por todo. Un saludo. El código es el siguiente: public static void EscalarVentanaHija(System.Windows.Forms.Form frm, Size tamanyo) { float h = SystemInformation.PrimaryMonitorMaximizedWindowSize.Width - tamanyo.Width; float v = SystemInformation.PrimaryMonitorMaximizedWindowSize.Height - tamanyo.Height; float relH = h / (float)1014; float relV = v / (float)716; frm.Scale(new SizeF(relH, (float)relV)); }//fin EscalarVentanaHija
7
« en: Viernes 19 de Septiembre de 2008, 17:51 »
Hola y gracias por responder. Eso que me comentais ya lo he probado antes de remitir el mensaje en este foro y no ha funcionado. Resulta que me quiero crear una ClassLibrary independiente donde poner una serie de funciones-utilidades. Pues bien, es esta ClassLibrary tengo la cabecera de la siguiente función y para la variable 'tamanyo' el compilador me muesta el siguiente error: error CS0246: The type or namespace name 'Size' could not be found (are you missing a using directive or an assembly reference?). Este mensaje me lo sigue indicando aún poniendo 'using System.Drawing' en la cabecera de la libreria. El prototipo de mi función es el siguiente: public static void EscalarVentanaHija(System.Windows.Forms.Form frm, Size tamanyo) La verdad es que no sé que es lo que me puede estar fallando. Agradezco mucho vuestra ayuda, mil gracias. Un saludo.
8
« en: Viernes 19 de Septiembre de 2008, 13:37 »
Size lo necesito para recibir los valores height y width de un formulario para poder escalarlo. Tengo claro que es una estructura del espacio de nombres System.Windows, pero desconozco como declarar dicho parámetro en una función que quiero implementar en una librería aparte.
9
« en: Viernes 19 de Septiembre de 2008, 13:25 »
Hola a todos. Estoy intentado crearme una libreria con funciones del tipo utilidades, las típicas que voy a utilizar varias veces en los diferentes proyectos que haga, como funciones de escalado de pantalla y demás. El problema que tengo es que a una de estas funciones quiero pasar un parámetro del tipo Size, ya que quiero recibir como parametro el tamaño del control que voy a escalar y poder acceder así al Height y Width. Size es una estructura pero al crearme esta librería el compilador me dice que no reconoce ‘Size’. Alguién sabe que referencia me hace falta o utilizando using. Muchas gracias por vuestra ayuda. Un saludo.
10
« en: Jueves 18 de Septiembre de 2008, 18:19 »
Muchas gracias E.Baley. La verdad es que el lenguaje que conozco es C++ y esa manera de definir un if-else, la desconocia por completo. Por lo menos hasta donde yo sé en C++ no existe la posibilidad de definir un if-else de esa forma, por lo visto debe de ser una forma nativa de C#. Gracias de nuevo por la ayuda prestada, me ha sido muy útil tu aclaración. Un saludo.
11
« en: Jueves 18 de Septiembre de 2008, 13:47 »
Hola a todos:
Estoy introduciendome en el manejo del lenguaje C# y estoy siguiento un libro en el que me pone una expresión que aparece el operador "?" y la verdad es que no sé que utilidad tiene en C#. He buscado en el libro que estoy utilizando pero no viene nada sobre dicho operador. Bueno, hablo de operador pero realmente desconozco si actua como tal.
Realmente la parte de esta expresión que no entiendo muy bien es esta: "? -1 : dx", la expresión completa es la que sigue:
dx = radioButton1.Location.X >= this.ClientSize.Width - radioButton1.Width ? -1 : dx;
Espero que alguién me pueda ayudar. Muchas gracias por todo. Un saludo.
12
« en: Lunes 8 de Septiembre de 2008, 18:40 »
Hola a todos:
He empezado a utilizar visual Studio 2005 y estoy haciendo provaturas para crear un nuevo proyecto y demás. Pues bien, al ser novato el problema que se me plantea es bien sencillo. Quiero elegir un formulario de inicio en una aplicación para Windows. He mirado la ayuda de MSDN y resulta que haciendo lo que me dice no veo la opción para poder elegir el formulario de inicio. Lo que me dice MSDN es lo siguiente:
Para establecer el formulario de inicio de formularios Windows Forms 1. En el Explorador de soluciones, haga clic con el botón secundario del mouse en el proyecto y, a continuación, en Propiedades. Se abrirá la página de propiedades Proyecto y se mostrarán las propiedades de tipo General. 2. Elija el formulario que desee utilizar como formulario de inicio en la lista desplegable Objeto inicial.
Pero resulta que yo no encuentro lo que me dice en el punto 2, es decir, lo de “Objeto Inicial”.
Muchas gracias a todos por ayudarme.
13
« en: Martes 29 de Mayo de 2007, 10:48 »
Muchas gracias por la ayuda que me has prestado. Me ha sido de gran ayuda, no había caido en indicar mediante la propiedad dwFileAttributes para referirme a los directorios. Gracias de nuevo.
14
« en: Lunes 28 de Mayo de 2007, 17:28 »
He mirado lo que me has comentado y voy encaminado pero no consigo la solución a mi problema ya que quiero realizar una busqueda partiendo del directorio raiz y entrando en todos los directorios y subdirectorios para buscar el archivo deseado. Lo más que he llegado a conseguir es el código que te remito pero no sé como indicarle el directorio inicial por el que tiene que empezar. Además el handle que le paso a la función 'FindNextFile' me dice que es invalido. Espero que me puedas guiar un poco. Gracias por todo.
WIN32_FIND_DATA FindFileData; HANDLE hFind = INVALID_HANDLE_VALUE; AnsiString errorDevuelto = ""; Memo1->Clear();
bool continuarBusqueda = true; AnsiString ruta_archivo = "c:\*.lck"; hFind = FindFirstFile(ruta_archivo.c_str(), &FindFileData);
while(continuarBusqueda) { continuarBusqueda = FindNextFile(hFind, &FindFileData); Memo1->Lines->Add(FindFileData.cFileName); }//fin del while FindClose(hFind);
15
« en: Lunes 28 de Mayo de 2007, 13:15 »
Hola a todos. Necesito crearme un bucle para recorrerme todos los directorios del disco para poder buscar un determinado archivo. Lo que necesito es saber en que directorio estoy en cada momento y poder controlar el entrar a los subdirectorios y luego salirme y continuar la busqueda. En aquellos directorios donde encontrase el archivo que busco me lo guardaría la ruta en un fichero y luego ya haría la acción pertinente. He estado mirando en el sysutils y veo funciones que me realizan busquedas o borrado de ficheros, pero digamos que lo quiero controlar yo. Quiero tener, por decirlo de alguna manera, el control de saber por que directorio me estoy moviendo. Desconozco si hay alguna función o manera de lograr esto. Si alguno de vosotros os habeis visto con la misma necesidad agradecería mucho vuestra ayuda. Muchas gracias por todo.
16
« en: Martes 3 de Abril de 2007, 10:01 »
Hola a todos:
He desarrollado un programa con la herramienta C++ Builder 5 y con la base de datos Paradox. Una vez realizado el programa y puesto en marcha, me ha surgido el imprevisto de que necesito que la base de datos sea unicode. Por lo que he visto, creo que Paradox no es unicode. Me gustaría que me aportaseis algunas ideas para solucionar mi problema sin tener que emplear otro lenguaje de programación para mi aplicación, ya que me tocaría rehacerla de nuevo. Muchas gracias.
17
« en: Martes 3 de Abril de 2007, 09:57 »
Lo siento, pinche en el botón de publicar la consulta pensado que no me la había publicado. Fue un error, no fue intencionado.
18
« en: Martes 3 de Abril de 2007, 09:56 »
Lo siento, pinche en el botón de publicar la consulta pensado que no me la había publicado. Fue un error, no fue intencionado.
19
« en: Jueves 15 de Marzo de 2007, 16:16 »
Hola a todos. Necesito saber como puedo borrar un directorio y todos los archivos y subdirectorios que cuelguen de dicho directorio. Sé la forma de borrar todos los archivos que cuelgan directamente de dicho directorio, pero no la de borrar los subdirectorios y archivos que hayan dentro de dichos subdirectorios. He probado con el comando ‘deltree’, y el problema es que al parecer en la versión de ms-dos de mi windows 2000 no está este comando. Os agradezco la ayuda que me podais prestar.
20
« en: Jueves 15 de Marzo de 2007, 16:15 »
Hola a todos. Necesito saber como puedo borrar un directorio y todos los archivos y subdirectorios que cuelguen de dicho directorio. Sé la forma de borrar todos los archivos que cuelgan directamente de dicho directorio, pero no la de borrar los subdirectorios y archivos que hayan dentro de dichos subdirectorios. He probado con el comando ‘deltree’, y el problema es que al parecer en la versión de ms-dos de mi windows 2000 no está este comando. Os agradezco la ayuda que me podais prestar.
21
« en: Jueves 15 de Marzo de 2007, 16:14 »
Hola a todos. Necesito saber como puedo borrar un directorio y todos los archivos y subdirectorios que cuelguen de dicho directorio. Sé la forma de borrar todos los archivos que cuelgan directamente de dicho directorio, pero no la de borrar los subdirectorios y archivos que hayan dentro de dichos subdirectorios. He probado con el comando ‘deltree’, y el problema es que al parecer en la versión de ms-dos de mi windows 2000 no está este comando. Os agradezco la ayuda que me podais prestar.
22
« en: Jueves 15 de Marzo de 2007, 11:46 »
Hola a todos. Ya he encontrado la solución a mi problema, os la remito para que si a alguno os pasa lo mismo que a mi, podais solucionarlo rápidamente. El problema que tenemos es que no nos deja grabar la configuración del BDE en el fichero idapi.cfg debido a las restricciones que establece sobre todos los usuarios, incluido el administrador. La forma de solucionar esto es ir a panel de control/cuentas de usuario/activar o desactivar el control de cuentas de usuario. Una vez aquí tenemos que desmarcar la casilla "Usar el control de cuentas de usuario (UAC) para ayudar a proteger el equipo". De esta forma ya no establece restricciones sobre los cambios que hacen los usuarios en el sistema. Destaco que estoy utilizando una herramienta de programación de Borland.
23
« en: Miércoles 14 de Marzo de 2007, 12:16 »
Hola a todos. Tengo un problema con el windows vista a la hora de configurar el BDE.
Resulta que cuando abro el BDE para configurar el idapi, y poner todos los parámetros para que el motor de la base de datos funcione como yo necesito justo cuando voy a guardar los cambios se queda durante tiempo indefinido pensando y pensando.
Parece que es problema de permisos ya que al ir a guardar los cambios no lo permite por tema de permisos a la hora de acceder a las carpetas que hay dentro de “archivos de programa”.
Creo que es este el problema pero he copiado el fichero idapi.cfg en una carpeta que cuelga de C:\, y he intentado salvar los cambios y también se queda intentado grabar dichos cambios durante tiempo indefinido.
Por favor si alguno de vosotros a tenido este problema con la configuración del BDE en windows vista por favor os agradecería vuestra ayuda.
24
« en: Lunes 26 de Febrero de 2007, 12:33 »
Hola a todos, tengo un problema con un control TFilenameEdit. Necesito que, al pulsar en el botón que tiene para abrir el explorador de directorios, se abra siempre en un directorio que yo le indique previemente y que siempre se habra en dicho directorio. Lo que he hecho a sido asignar dicha ruta a la propiedad "InitialDir" cuando salta el evento 'OnBeforeDialog' de dicho control, pero no me funciona. Además he puesto la propiedad 'DirectInput' a false, por si acaso fuese ese el motivo, pero continua sin abrirse en el directorio que yo le indico. Espero aberme explicado con claridad para que me podais ayudar. Muchas gracias.
25
« en: Lunes 5 de Febrero de 2007, 14:00 »
Disculpa mi ignorancia pero no entiendo el término "attachear el depurador". Además hay que tener en cuenta que cuando lanzo dicho ejecutable de forma independiente, sí que crea el archivo ".vbs" y tras unos segundos borra el ".exe". El problema está cuando dicho ejecutable, en lugar de lanzarlo yo mismo, lo lanza el programa de instalación. Es entonces cuando no crea el archivo ".vbs". Gracias.
|
|
|