Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Aplicación no se ejecuta en otros PC (https://www.clubdelphi.com/foros/showthread.php?t=44224)

jlsc 31-05-2007 14:15:57

Aplicación no se ejecuta en otros PC
 
:o :confused: Buenas, tengo una Base de datos creada con componentes ADO y funciona muy bien en el equipo donde lo he programado, he creado acceso directos en otros equipos hacia donde esta mi aplicación, pero al darle doble clic no se ejecutan, ni siquiera aparece como procesos en el administrador de tarea.

Que puede estar pasando?. He instalado Mac2.8 en los otros PC pero nada sigue sin ejecutarse.

Muchas gracias de antemano

Neftali [Germán.Estévez] 31-05-2007 14:59:24

¿Algun error? ¿Algun aviso? ¿Qué tipo de aplicación es? ¿S.O.?
Explica algo más, sino es difícil...:o

jlsc 31-05-2007 15:26:09

Ningún error, simplemente al ejecutar la aplicación no se muestra, como si no lo hubiese ejecutado, el sistema Operativo es Windows 2000. Y es una apicación que conecta con una base de datos creada en access, simplemente ingreso datos a las tablas de la base de datos, hago consultas sobre ella, y un par de gráficos, lo extraño es que en el equipo donde esta instalado delphi si me funciona correctamente.

jlsc 31-05-2007 15:30:22

Uso AdoTable,QueryTable, Datasource, TDBChart, y AdoConnection.

jlsc 31-05-2007 16:02:37

Saben si tengo que instalar algún componente en los otros equipos para que me funcione.

Neftali [Germán.Estévez] 31-05-2007 16:45:16

¿Estás utilizando BDE?
¿Estás utilizando componentes o librerías externas que necesiten de algo añadido?

De todas formas lo raro es que no diga nada...

Podrías añadir algunas marcas (ShowMessages, por ejemplo) para saber más o menos dónde queda la aplicación...

jlsc 31-05-2007 17:58:53

No estoy utilizando BDE, Conecto con una base de datos creada en access mediante ADOcenneccion mediante MicrosoftJet 4.0, lo he probado tambien en XP y Vista y nada que ver no se ejecuta en 1 de ellos me da el error Reclas.exe ha ejecutado un error y cerra cerrado por windows.

jlsc 31-05-2007 18:03:03

He tratado de subir la aplicación pero no me dejado ya que mi archivo pesa mas de lo permitido en el foro apesar de estar zipeado, solo he enviado la base de datos access claro que de nada sirve.

Neftali [Germán.Estévez] 31-05-2007 18:13:45

Para archivos grandes (o para temas temporales como este) puedes utilizar algun servidor gratuíto tipo:
http://www.megaupload.com/es/
http://rapidshare.com/


Luego pegas el link y listo.

waly2k1 31-05-2007 18:54:15

Error en ejecución
 
Create una mini aplicación tipo ABM a ver si descartamos el tema del MDAC
sino ver si es el MDAC correcto ya que tenés desde 2.0/5/6/7/8 además de los SP para los MDACs, algo bien sencillo si querés usa solamente componentes (menos laburo). En Win2K por ej. al instalar el 2.5 te daba errores de instalación o no se instalaba adecuadamente. Es más SQL Server 2000 venía con MDAC 2.5 y no se instalaba en Win2k pq no se registraba y el 'parche' era instalar el MDAC 2.6.

Me huele más a una DLL u OCX ActiveX q estés usando porque sino tu aplicación debería capturarte el error y mostrate un msg del mismo. O bien es el mismísimo MDAC que antes de cargar tu aplicación (Load) intenta conectar a la BD y pincha por ese lado.
con Access uso TADOConnection, TAdoTable y TADOQuery, no mezclo componentes de otros fabricantes, por un tema de aislar posibles incompatibilidades.

Sino fijate en un post anterior donde tiraba unas líneas de conexión, pq quizá ni siquiera encuentra la BD, depende de donde apuntes (connectionstring), aunque debería mostrarte errores.

No mezcles tos datos, a ver: en que SO funciona y en cuál no ?
XP ya viene con MDAC 2.6 además de que se actualiza automaticamente. Si el error es en Vista que Bill se apiade de vos, ya que van a existir miles de aplicaciones que no funcionen correctamente en este SO sin aplicarles parches a medida que vayan dando soporte.

Saludos y espera te sirva de algo mi rta.

jlsc 31-05-2007 19:14:03

Le envio mi programa para que le den un vistazo y haber si pueden detectar donde esta el fallo

http://www.megaupload.com/es/?d=T7DTLQCS

waly2k1 31-05-2007 19:16:42

MegaUpload!!!
 
Desafortunadamente, todo el ancho de banda disponible está reservado a nuestros usuarios premium. En consecuencia, las descargas gratuítas no estarán disponibles en las siguientes 5 horas.

Estamos trabajando para añadir más capacidad para los usuarios gratuítos. Rogamos disculpe las molestias.

Su equipo de Megaupload

Seguí como te decía, pq es probable que en los otros equipos no tengan instalado el MDAC como pensabas, o bien vas e instalás en cada PC cliente

waly2k1 31-05-2007 19:27:18

Disculpas
 
pido disculpas por las 'negritas', copié y pegué el texto y se ve que me quedó en este formato y no me di cuenta.
Salu2

Neftali [Germán.Estévez] 31-05-2007 19:33:47

Joer!! sí que es buena suerte.
Mira que llevo utilizando MegaUpload tiempo y nunca había pasado nada y el día que le digo a alguien que lo use, va y está caput!!! :o

Prueba con RapidShare.

Ya que estamos con el tema,y por si alguien más los necesita algun día, hay más servidores de este tipo:

* http://axifile.com/
* http://bigupload.com/
* http://binfile.org/
* http://depositfiles.com/en/
* ...


(en un momento dado le pueden sacar a uno de un apuro...)

jlsc 01-06-2007 00:01:36

Ya esta disponible mi programa para que le echen un ojo y puedan ver cual es el fallo.

http://www.megaupload.com/es/?d=T7DTLQCS

Caral 01-06-2007 00:25:44

Hola
Para empezar si programa que no esta en la direccion:
C:\Base Reclamaciones\Reclamaciones.mdb, no encontrara la base de datos.
Esto es porque estas programando con el adoconnection directamente, osea el busca la base de datos en esa direccion, si la colocas en otra no la encontrara.
Es mejor trabajar con un ini, de esta manera la direccion se coloca donde quieras incluso en otro ordenador.
Lo que hace tu programa es empezar con un login, sin tener en cuenta que el adoconnection lo colocaste en el from principal.
Te sugiero que hagas un datamodule y coloques el adoconnection en el.
Saludos

jlsc 01-06-2007 08:20:19

En el programa que estoy probando, si esta correcta la la ruta del adoconnection, la cual la tiene mapeada C:\Base Reclamaciones\Reclamaciones.mdb por error he subido el programa antes de modificar la ruta y en cuanto al login si amplias el form del login veras que alli también hay otro adoconnection que por cierto también esta mapeado a la misma dirreccíon, lo curioso es que he instalado delphi en el equipo que no me abria el ejecutable y ahora si me lo abre, pero no creo que deba ser necesario instalar delphi para que funcione. Nunca he creado un ini, como lo tendría que hacer? o un datamodule?, hay algún tutorial de estos. vuelveré a subir el programa esta vez la versión final.

jlsc 01-06-2007 11:43:03

Ahora si subo la versión final para que le echen un vistazo y a ver si detectan el error.

http://www.megaupload.com/es/?d=WWJPVXYD

Muchas gracias de antemano

Neftali [Germán.Estévez] 01-06-2007 11:47:52

A mi a parte de esa, me está dando que busca en:
c:\documents and setting\jorge\mis documentos\reclamaciones.mdb

Cita:

Empezado por jlsc
...lo curioso es que he instalado delphi en el equipo que no me abria el ejecutable y ahora si me lo abre

Eso es indicativo de que te falta algo (BPL o DLL) que necesita el programa y que no tiene.
¿Estás compilando con Runtime Packages? ¿Qué ocupa el programa una vez generado?

Neftali [Germán.Estévez] 01-06-2007 12:10:34

Cita:

Empezado por jlsc
Ahora si subo la versión final para que le echen un vistazo y a ver si detectan el error

¿Te importaría subir el EXE?

jlsc 01-06-2007 13:14:41

Subo el archivo completo con el Exe mas 2 pantallazos con errores que generó en un equipo despues de haber instalado delphi sin compilar antes la aplicación, sino que ejecute un exe que ya estaba antes de instalar delphi.

jlsc 01-06-2007 13:23:21

perdón no puse la direccion. es esta aqui esta todo el programa con el ejecutable incluido.

http://www.megaupload.com/es/?d=937HDAVS

Neftali [Germán.Estévez] 01-06-2007 14:31:15

Yo tengo Delphi (6 y 2007) instalado y me da el mismo Error "Stack Overflow" así que no va por ahí.
Las librerías que está utilizando son las siguientes:
advapi32.dll
comctl32.dll
comdlg32.dll
gdi32.dll
kernel32.dll
ole32.dll
oleaut32.dll
user32.dll
version.dll
winspool.drv

Habría que mirar las versiones en ambos sistemas a ver si puede venir por ahí el error.

waly2k1 01-06-2007 14:33:11

[quote=Neftali]Joer!! sí que es buena suerte.
Mira que llevo utilizando MegaUpload tiempo y nunca había pasado nada y el día que le digo a alguien que lo use, va y está caput!!! :o

Juás! No te olvides q en el país de las maravillas suceden cosas inesperadas todo el tiempo. O bien es de esperarse cualquier cosa!(todo el tiempo)

jlsc:
No respondiste si estás compilando con Runtime Packages ???
Si tu .exe es muy pequeño seguramente si. Creo que instalar Delphi en los clientes no es la solución. Ahora si instalaste y te generan aún problemas. El tema viene por el lado de componentes que quizás tengas únicamente la versión Runtime, o sea que no tenés la versión full y no instalaste dichos componentes en otras PCs.

En cuanto a los .ini buscá por el lado de TIniFile en la ayuda que seguro encontrarás algo. El datamodule no es más que un módulo de datos(valga la redundancia), en el cual colocas todos tus componentes de accesos a datos de manera tal que no tengas que tener conexiones y tablas, querys repartidos por cada form de tu aplicación. Sino fijate el ejemplo MastData o algo así no lo recuerdo bien. Después agregas el modulo como si fuera un form en las units de cada formulario que lo necesite y listo. Para agregar File\New\DataModule con uno que crees es suficiente para toda tu aplicación.

Saludos y espero soluciones tu problema

Neftali [Germán.Estévez] 01-06-2007 14:52:40

No parece que sea problema de packages; El EXE que has subido no necesita ningun package.
Es más, el EXE que has subido me falla (con el mismo error 'Stack overflow') y en cambio si lo compilo no me da ningun problema (salvo el del path de la BD) y se ejecuta correctamente.

Neftali [Germán.Estévez] 01-06-2007 14:57:10

Bueno, parece que ya está.
El problema está:
(1) En que tienes en los DFM la ruta de la Base de Datos.
(2) En en diseño ya tienes la conexión (ADO) y todas las tablas abiertas.
(3) Que la Base de Datos sigue apuntando a un lugar incorrecto.

Tal vez por separado no dieran problemas, pero conjuntamente dan el error de Stack Overflow (no tengo claro topdavía porqué, pero es así).

Prueba.
Con el ejecutable que has enviado, si la Base de Datos se encuentra exactamente en: "C:\Base Reclamaciones\Reclamaciones.mdb" funciona perfectamente. Ese mismo ejecutable, si la BD no se encuentra en esa ubicación a error de "Stack overflow".

Yo remediaría los tres puntos comentados arriba.

NOTA: No deberías usar dos ADOConnection, con una basta. Tienes una en cada form. (Esto tambén lo cambiaría)

Un saludo.

jlsc 01-06-2007 15:13:37

Muchas gracias Neftali, lo modificaré como me lo indicas y luego te lo cuento Saludos.

Jorge

MaMu 01-06-2007 15:45:11

Stack Overflow

Yo creo que el problema está claramente en el mal uso del ADOConnection, que a falta de uno, has puesto varios, en cada uno de los formularios.
Deberias utilizar uno solo, ya que con eso basta, puesto a que al utilizar más de uno, si en la PC donde ejecutas el programa, lo hace por defecto en modo exclusivo (segun este configurada esa PC en la red) no te va a permitir el acceso de otro ADOCommand, con lo que se llenará la pila de memoria con datos erráticos produciendo un desborde. Yo particularmente utilizo este tipo de procedimientos para hacer la conexión con TADOConnection, ya que uno siempre debe contemplar la posibilidad que la ruta hacia la base cambie por cualquier razón:

Código Delphi [-]
procedure TMain.FormCreate(Sender: TObject);
var root,base,dire:string;
begin
  root:=ExtractFilePath(Application.ExeName);
  //conexion a base de datos
  base:='tubase.mdb';
  dire:=root+'\'+base;
  if FileExists(dire)=True
    then begin
      ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;'+
      'User ID=Admin;' +
      'Data Source='+dire+';' +
      'Mode=Share Deny None;' +
      'Extended Properties="";' +
      'Jet OLEDB:System database="";' +
      'Jet OLEDB:Registry Path="";' +
      'Jet OLEDB: Database Password="";' +
      'Jet OLEDB:Engine Type=5;' +
      'Jet OLEDB: Database Locking Mode=1;' +
      'Jet OLEDB:Global Partial Bulk Ops=2;' +
      'Jet OLEDB:Global Bulk Transactions=1;' +
      'Jet OLEDB:New Database Password="";' +
      'Jet OLEDB:Create System Database=False;' +
      'Jet OLEDB:Encrypt Database=False;'  +
      'Jet OLEDB: Don''t Copy Locale on Compact=False;' +
      'Jet OLEDB:Compact Without Replica Repair=False;'  +
      'Jet OLEDB:SFP=False';
    end
    else begin
     //aqui haces algun tratamiento para elegir la base de datos si se encuentra en otro lugar o ha sido eliminada.
    end;
end;

De programar tantos microcontroladores, el stack overflow, es muy común que suceda, sobre todo cuando cualquier tipo de conector (en este caso el ADOConnection) no obtiene información concordante con la solicitada.
Creo que al menos, deberias probar el cambio.

Saludos

Caral 01-06-2007 19:39:29

Hola
Empecemos paso a paso:
1- abre el programa con delphi
2- entra a File, new, datamodule, esto creara un datamodule., guardalo en el proyecto.
3- coloca un adoconnection en el datamodule. (adoConnection1)
4- elimina los adoconnection de todos los forms.
5- abre el unit ReclasU y pon el datamodule de primero en la lista asi:
Código Delphi [-]
begin
  Application.Initialize;
  Application.CreateForm(TDataModule1, DataModule1);
  Application.CreateForm(TReclamacionesAcceso, ReclamacionesAcceso);
  Application.CreateForm(TReclamaciones, Reclamaciones);
  Application.Run;
end.
6- en cada adotable y adoquery, cambia la direccion del connection:
Código Delphi [-]
Datamodule1.ADOConnection1
7- dale dobleclick a la parte blanca del datamodule, esto generara el evento oncreate del datamodule, en ese evento coloca esto, copia y pegalo si quieres.
Código Delphi [-]
procedure TDataModule1.DataModuleCreate(Sender: TObject);
Var BaseDeDatos, ConStr : String;
    IniFile: TIniFile;
begin
   // Obtiene la ruta y el nombre de la base de datos
   IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Recamaciones.ini'); // Reclamaciones, sera el nombre que se le de al ini
   BasedeDatos := IniFile.ReadString('BD','Path','');
   If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos');
   ConStr := 'Provider=Microsoft.Jet.OLEDB.4.0;'+
             'Data Source='+BaseDeDatos+';'+
             'Persist Security Info=False;'+
             'Jet OLEDB : Database Password=admin';
   ADOConnection1.ConnectionString := ConStr;
   ADOConnection1.Open;
end;
Bien ya tenemos el arranque del programa, ahora cuando arranque abrira el datamodule primero y buscara un archivo ini, que se llama reclamaciones, este tiene que estar en el mismo directorio del exe.
Bueno ahora agamos el ini.
abre el bloc de notas y pon en el esto, tal y como esta:
Cita:

[BD]
Path="C:\Base Reclamaciones\Reclamaciones.mdb"
[Logon]
Auto="No"
Login=""
Pass=""
Ahora guardalo en el directorio donde esta el programa, con el nombre de Reclamaciones.
Bueno con esto el programa buscara el ini, lo leera y dira hey la base de datos esta en C:\Base Reclamaciones\, ha bueno entonces la voy a buscar, por supuesto si la base de datos esta en otra direccion pues hay que poner la direccion correcta en el ini y guardar los cambios.
Con esto si quieres mover la base de datos a cualquier directorio se podra hacer simplemente modificando la direccion en el ini y guardando los cambios, puede estar en c, d, f, z o donde se quiera el programa leera el ini y buscara la direccion.
Bueno depues de todo esto veras que hay varias cosas:
1- solo un adoconnection.
2- un datamodule, donde poner muchas cosas.
3- un archivo ini, que dirige al programa para que encuentre la base de datos.
4- una explicacion de un novato a otro.:D
Saludos

jlsc 02-06-2007 10:43:02

Muchas Gracias Caral y Mamu por su excelente aplicación, lo he entedido claramente, muchas gracias for su dedicación a este excelente foro y ayudarnos a los que estamos surmegidos en esta herramienta tan maravillosa que es Delphi. lo haré y ya contaré que tal me ha ido.

Muchas Gracias nuevamente.

Reciban mis saludos

novato jlsc :D

FOURIER 03-06-2007 11:02:19

Hola amigo
 
Bueno mira te voy a decir como está el rollo; si sólo usas ACCESS y DELPHI, tu programa se cuelga al no encontrar la ruta dependiendo de las cosas que haga al inicio tu programa; si lo que tu quieres es que otras máquinas accedan a la BD que tienes en una máquina entonces para Access en tu Delphi donde usas el Componente ADOConnection ya ves que especificas la ruta de Accesso, bueno ahi vas a tener 2 alternativas una es que escribas
//dirip/rutadeacceso por ejemplo /192.168.2.7/C/Archivo.mdb
la otra es que especifiques //NomPC/rutaaccesp por ejemplo //Fourier/C/Archivo.mdb

ahora si estás usando algunos reportes que generas con el Quick Report o abres algún Cajón de dinero lo más seguro es que te falte el archivo dll enlas máquinas donde lo vayas a instalar que puede ser qtintf.dll ó qtintf70.dll ó qtintf90.dll dependiendo de la versión de Quick Report que Ocupas, bueno chavo espero te sirva esta información, suerte

Lepe 03-06-2007 11:08:22

Cita:

Empezado por Caral
4- una explicacion de un novato a otro.:D

Yo no diría que es una explicación de novato, más bien diría que es la explicación de un maestro (palabreja que tanto te gusta :p), clara, concisa y muy bien redactada.

Quizás deberíamos otorgarte el título "Maestro Clubdelphi" :cool:

Saludos

jlsc 13-06-2007 13:28:19

Aplicacion no se ejecuta en otro PC
 
Hola a todos,

Muchas gracias por sus soluciones, lo he hecho como me lo han aconsejado y funciona perfectamente. Muchas gracias Caral por tu detallada y buena explicacion, los mismo para lepe, waly2k1, neftali a todos gracias nuevamente. :D


La franja horaria es GMT +2. Ahora son las 06:51:01.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi