Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-12-2010
jandrorm jandrorm is offline
Miembro
 
Registrado: dic 2009
Posts: 24
Poder: 0
jandrorm Va por buen camino
procedure

Hola buenos dias a todos,


Antes de nada decirles a los moderadores del foro que no sabia bien donde colocar este post si lo ven conveniente de que debe ir en otra parte del foro que lo muevan sin problema, gracias.


Bien estoy trabajando con dephi 7, y tras ver que tengo una parte del código que se repite bastante y es la misma, que es donde comprueba la BD esta on, decidí meter esa parte en un procedure y llamarlo cuando lo necesitara sin repetir de nuevo el código.


Al principio lo hice de la siguiente manera a modo de prueba:
Código Delphi [-]
 
 procedure cone_bd;
 begin
 codigo...
 end;
 

 procedure TPrincipal.FormCreate(Sender: TObject);
 begin
 cone_bd;
 end;
Pero claro esto me ocasionaba el error de que los objetos del Tzconnnection no lo encuentra. Por lo cual después lo hice de otra manera.
Código Delphi [-]
 
 procedure TPrincipal.FormCreate(Sender: Tobject);
 

 procedure cone_bd;
 begin
 codigo...
 end;
 

 begin
 cone_bd;
 end;
Así me funcionaba en la parte es en concreto pero después fuera de esa parte no funcionaba, por lo cual mi duda es de que manera, puedo yo crear un procedure a modo de “función” que lo pueda llamar en cualquier parte del programa sin que me de el error de que esos objetos no están declarados. Buen gracias a todos por vuestro tiempo y paciencia jeje.
Responder Con Cita
  #2  
Antiguo 23-12-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Lo normal es conectar a la BD al iniciar el programa y se acabó. La desconectas cuando vas a salir del programa.
Los dataset (query, table, etc.) se deben colocar en un data module.
En los forms sólo pones los datasource que apuntan a los dataset.


P.d.: recuerda poner títulos descriptivos a tus preguntas.
Responder Con Cita
  #3  
Antiguo 23-12-2010
jandrorm jandrorm is offline
Miembro
 
Registrado: dic 2009
Posts: 24
Poder: 0
jandrorm Va por buen camino
Si la función de cone_bd no es para conectar si no que hay conexión con la bd, y compruebo que esta conexión existe durante varios pasos del programa. Por eso lo de crear el procedure.
Responder Con Cita
  #4  
Antiguo 23-12-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Es que no sirve comprobar eso salvo que sea una conexión por internet o algún otro tipo de conexión poco fiable.
Si es una conexión normal a un servidor de red local entonces lo normal es que no se desconecte salvo una avería física.
Por eso te comento que "lo normal" es conectar al principio y desconectar al final. No se está comprobando la conexión a cada rato porque debe estar siempre conectado.
Responder Con Cita
  #5  
Antiguo 23-12-2010
jandrorm jandrorm is offline
Miembro
 
Registrado: dic 2009
Posts: 24
Poder: 0
jandrorm Va por buen camino
Vale entonces tendría que haber especificado algo mas, no es para red local, es para conexión con una bd externa, y esa bd hace un poco de cliente/server entonces lo de comprobar el estado un poco es por eso. Gracias por tu rapidez.
Responder Con Cita
  #6  
Antiguo 23-12-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bien, entonces puedes hacerlo como he indicado antes, creas la function o procedure, como quieras, y lo llamas desde cualquier lugar del programa. Entonces realmente no he entendido el problema.
Responder Con Cita
  #7  
Antiguo 23-12-2010
jandrorm jandrorm is offline
Miembro
 
Registrado: dic 2009
Posts: 24
Poder: 0
jandrorm Va por buen camino
El problema es como creo el procedure cone_bd; o en que parte del programa de forma que me deje llamarlo de donde quiera sin que me de el problema de que no encuentra el Tzconnection. Porque en los dos casos que puse en el primer post me da problemas con eso.
Responder Con Cita
  #8  
Antiguo 23-12-2010
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 21
defcon1_es Va por buen camino
Hola.
Supongo que los componentes de conexión a esa base de datos, los tienes en un DataModule, ¿no?

Si creas ese procedimiento en el DataModule y lo declaras en la sección public del mismo, lo podrás llamar desde cualquier form/datamodule/unit de tu aplicación.
(No olvides poner en el uses de cada formulario al datamodule en cuestión)

Código Delphi [-]
 procedure TMiDataModule.cone_bd;
 begin
   codigo...
 end;


 procedure TPrincipal.FormCreate(Sender: TObject);
 begin
   MiDataModule.cone_bd;
 end;


 procedure TOtroForm.FormCreate(Sender: TObject);
 begin
   MiDataModule.cone_bd;
 end;
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita
  #9  
Antiguo 23-12-2010
jandrorm jandrorm is offline
Miembro
 
Registrado: dic 2009
Posts: 24
Poder: 0
jandrorm Va por buen camino
La verdad que no tengo creado ningun Data module, ¿es conveniente que reestructure el programa y cree un data module con el Tzconnection? Soy algo novato en esto. Muchas gracias a todos.
Responder Con Cita
  #10  
Antiguo 23-12-2010
Avatar de pacopenin
pacopenin pacopenin is offline
Miembro
 
Registrado: sep 2010
Ubicación: Asturias
Posts: 382
Poder: 14
pacopenin Va por buen camino
Añado un pequeño apunte que te puede ayudar.

Si lo estas haciendo desde principal, debes declarar dicho procedimiento en la parte private o public (dependiendo del ámbito que quieras darle) de la clase TPrincipal, para que "conozca" los objetos que tiene. Y luego en la implementation debes poner
Código Delphi [-]
procedure TPrincipal.cone_bd;
 begin
 codigo...
 end;
De todas formas, opino como defcon1_es y el lugar más adecuado sería el DataModule, y haciendo lo que dice no deberías tener problemas.
__________________
http://www.gestionportable.com
Responder Con Cita
  #11  
Antiguo 23-12-2010
jandrorm jandrorm is offline
Miembro
 
Registrado: dic 2009
Posts: 24
Poder: 0
jandrorm Va por buen camino
Entonces lo ideal seria lo siguiente:


Unit 1

      • TZconnection.
      • Tzquery??

Unit 2
El resto del programa


¿Seria así no? Gracias a todos de nuevo.
Responder Con Cita
  #12  
Antiguo 23-12-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Lo normal para tener el programa ordenadito es crear un data module, ya sabes, "file, new, data module" y le pones un nombre, ejemplo: DMmain.
Ahí metes todos los dataset que vas creando.
Luego, desde cualquier form de tu programa que necesites acceder al mismo lo que haces es poner el datasource en el form y le asocias el dataset que está en el data module. Para ello debes añadir el mismo en la sección "uses", manualmente o desde la opción: "file, use unit", lo seleccionas y listo.
Luego desde tu form debes llamarlo de la siguiente manera:
DMmain.QRclientes.Close;
DMmain.QRclientes.SelectSql.Text := 'select codigo from tbclientes";
etc.
O sea, añades delante el DMmain (o el nombre que le pongas)

Echa un vistazo a este hilo del compañero Caral, ahí se explica cómo hacer todo esto de una forma más o menos organizada, aunque está pensada para IBX te puede servir.
Responder Con Cita
  #13  
Antiguo 14-01-2011
jandrorm jandrorm is offline
Miembro
 
Registrado: dic 2009
Posts: 24
Poder: 0
jandrorm Va por buen camino
Saludos a todos de nuevo, retomando un poco mis dudas anteriores, me puse a seguir con el programa, y a crear una nueva estructura. He creado un Tdatamodule como me recomendaron, llamándolo MYSQL. Pege aquí el Zconnection y el Zquery.


Luego en la Unit principal del programa, llame a este datamodule en la sección USES, poniendo al final MYSQL. Y cree también un Datasource, pinche en este ajustándole el dataset que me daba la opción de: DataModule3.ZQuery1. Y en nombre le puse MYSQL.


Vale hasta aquí no se si hay algo mal, para probar todo esto me e puesto unas lineas de consultas (que ya antes las tenia creadas y funcionaban correctamente) y las e editado, poniéndolas de las siguiente manera:


Antes:
Código Delphi [-]
   begin
     Memo2.Lines.Clear;
    SQL.Text:='select...
    Zquery1.Open;
Código Delphi [-]
 
 Ahora:
   begin
     Memo2.Lines.Clear;
     MYSQL.SQL.Text:='select...
     MYSQL.ZQuery1.Open;


Vale gracias a todos por vuestra ayuda y perdonar que sea un novato
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
llamar a procedure desde otra procedure anubis Varios 23 04-03-2010 18:44:37
puntero a un procedure en un procedure como parametro fcios Varios 2 14-03-2009 03:41:22
Procedure ozegarra Firebird e Interbase 5 07-12-2007 23:04:33
Procedure MarioATamborini Firebird e Interbase 5 11-08-2005 18:46:07
¿procedure? Giniromero Firebird e Interbase 18 26-02-2004 15:52:08


La franja horaria es GMT +2. Ahora son las 13:47:30.


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
Copyright 1996-2007 Club Delphi