|
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.
Temas - okap
Páginas: [1]
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: 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.
6
« 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.
7
« 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.
8
« 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.
9
« 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.
10
« 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.
11
« 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.
12
« 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.
13
« 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.
14
« 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.
15
« en: Lunes 5 de Febrero de 2007, 11:27 »
Hola a todos:
La semana pasada publique un problema que tenía a la hora de borrar un ejecutable desde él mismo. Me propusisteis una solución que me fue de gran ayuda la cual consistía en crearme un fichero "Killer.vbs", el cual lo creaba desde el propio ejecutable antes de que este terminase. Al lanzar el archivo 'Killer.vbs', este se espera 5 seg. y tras este tiempo borra el ejecutable. Pues bien todo esto funciona si lanzo el ejecutable tal cual, sin más. Pero el problema es que dicho ejecutable forma parte de una instalación, con un setup, etc. Este ejecutable del que hablo se debe de lanzar automáticamente en un determinado momento de la instalación, hacer su función y luego destruirse gracias al archivo 'Killer.vbs'. El problema está en que cuando el ejecutable se lanza desde la instalación, no se crea el fichero 'Killer.vbs' y evidentemente tampoco se borra el ejecutable. Todo esto lo probé en una máquina con windows 98, No funcionó y pensé que el problema sería por alguna librería que me haría falta y que w98 no tendría, ya que en mi máquina con w2000 sí que funciona. He probado la instalación en una máquina con windows xp y el ejecutable no se borra ni tampoco se crea el fichero 'Killer.vbs'. No sé por donde puede andar el problema. No entiendo por qué si lanzo el ejecutable sin más sí que funciona y, sin embargo, si se lanza desde el instalador no funciona lo de la autodestrucción del ejecutable. Espero haberme explicado con claridad, para que me podais ayudar mejor. Muchas gracias.
16
« en: Viernes 2 de Febrero de 2007, 13:41 »
Hola a todos. Tengo un duda y no sé como resolverla. Tengo un programa ".exe" que realiza unas determinadas tareas, y lo que necesito es que cuando dicho ".exe" termine lo que tiene que hacer, se borre a sí mismo. Si intento hacer un DeleteFile(...), desde el propio ejecutable, no me deja por que dicho ejecutable está en uso y de esta forma no se puede borrar así mismo. ¿Hay alguna forma de hacer esto?. He pensado en crearme un .bat que me lo haga, pero para este caso, no sé como lanzar dicho .bat de forma automática. Espero hablerme explicado con claridad para que me podais ayudar. Muchas gracias.
17
« en: Miércoles 31 de Enero de 2007, 09:10 »
Hola: Tengo un programa de diseño de etiquetas el cual una vez que tengo diseñada la etiqueta me genera un archivo de texto con el juego de instrucciones que le envia a la impresora. Dicho archivo yo lo tengo que tratar para introducirle una instrucción que el pograma de deseño no contempla y por eso se la tengo que introducir yo. El problema es que anteriormente utilizaba otro programa el cual me generaba dicho fichero poniendo una instrucción por línea, pero el nuevo pone 2 o más instrucciones en una misma línea. Necesito leer dicho fichero y guardalo en otro poniendo cada instrucción en una sóla línea.
Este es un ejemplo del fichero que generaba el primer programa de diseño de etiquetas:
#!A1 #BON #IMS54.0/25.0 #DC #N9 #ERN0 #T6.2 #J3.9 #M1/1 #YN101/1/40///**031#G #T12.1 #J6.4 #M1/1 #YN101/0/181///**019#G
Este es el código que genera el nuevo programa:
#!A1#BON #IMSR54.02/24.98 #DC#N9 #ERN0 #T16.26 #J13.55 #YIR43/ÿ @ þ( þ' þ& þ% þ$ þ# þ" þ! þ þ¬ þ þ þ þ þ þ þ þ þ þ þ þ ¬ þ þ ! þ@ þ " þ@ þ $ þ ) þ#G
Siendo la última línea la instrucción referente a una imagen que he introducido y la cual me da problemas al leer del fichero original y grabarla en uno nuevo, donde separo cada instrucción en una línea. Sólo me coge los diez primeros caracteres.
Este es mi problema. Lo que he hecho es abrir el fichero original y el de destino mediante la clase TstringList, pero al leer cada línea como cadena, no consigo grabar en el fichero destino dicha instrucción tal cual está en el original.
Otra de las cosas que he intentado es esta:
FILE *forigen; FILE *fdestino;
forigen = fopen(rutaFicheroInAux.c_str(),"r"); fdestino = fopen("c:\destino.txt","w");
char caracter = ' '; char caract_aux = ' ';
while(!feof(forigen)) { fscanf(forigen,"%c",&caracter);
if(caracter == '#') { caract_aux = '\n'; fprintf(fdestino,"%c",&caract_aux); caract_aux = '\r'; fprintf(fdestino,"%c",&caract_aux); fprintf(fdestino,"%c",&caracter); } else fprintf(fdestino,"%c",&caracter); }//fin del while
fclose(forigen); fclose(fdestino);
Pero no me graba en el fichero destino caracteres ‘B’ y ‘C’, todos en una misma línea. Pensaba que leyendo el fichero origen carácter a carácter y grabandolo de la misma manera en el fichero destino tendría éxito, pero no ha sido así.
Por favor me gustaría que me mostraseis otra opción para conseguir mi objetivo.
Muchas gracias.
18
« en: Viernes 19 de Enero de 2007, 15:54 »
Tengo un problema con los puntos de parada a la hora de compilar una dll. El problema es que cuando compilo y entro para depurar el código poniendo puntos de parada y demás, los puntos azules que aparecen en cada línea de código están desordenados y por ejemplo aparecen en lineas donde no hay código, etc.
A esta dll la llamo desde otra dll con la siguiente función:
void __fastcall TFrmContado::CargaImpresionWindows(TFrmMenu * fPadre, AnsiString sql) { AnsiString(*lpfuncion)(TFrmMenu * , AnsiString, double, double );
lpfuncion = (AnsiString(*)(TFrmMenu * , AnsiString , double, double)) AbreDLL ("IMPCONT.DLL", "_AbrirImpContModal");
if (lpfuncion != NULL) { (*lpfuncion)(fPadre,sql, entregado, cambio); } }
Y el punto de entrada en mi dll es el siguiente:
AnsiString AbrirImpContModal(TFrmMenu *fPadre, AnsiString q, double entregado, double cambio)
En el fichero “.h” tengo declarado el prototipo de esta función, de la siguiente manera:
_IMPCONTADODLL AnsiString AbrirImpContModal(TFrmMenu *fPadre, AnsiString q, double entregado, double cambio);
Ya he probado borrar obj y hacer un build de toda la dll, y continuan los puntos de parada desordenados. Me inclino a pensar que el problema puede estar en el punto de entrada a la dll, pero desconozco el motivo. Si a alguno de vosotros le ha ocurrido lo mismo agradecería mucho vuestra ayuda. Muchas gracias.
19
« en: Lunes 15 de Enero de 2007, 18:50 »
Hola: Necesito obtener la lista de las impresoras que hay instaladas en windows. Me interesaría hacerlo con la clase TPrinter pero no encuentro la manera de conseguirlo. He probado a declararme una variable TPrinter y me muestra el error "Undefined simbol TPrinter". Desconozco si tengo que incluir alguna librería para solucionar este problema. Gracias.
Páginas: [1]
|
|
|