FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
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: 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. 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. |
#2
|
||||
|
||||
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.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
|||
|
|||
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.
|
#4
|
||||
|
||||
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.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#5
|
|||
|
|||
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.
|
#6
|
||||
|
||||
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.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#7
|
|||
|
|||
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.
|
#8
|
||||
|
||||
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)
__________________
Progress Openedge https://abevoelker.com/progress_open...dered_harmful/ Delphi forever... |
#9
|
|||
|
|||
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.
|
#10
|
||||
|
||||
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 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 |
#11
|
|||
|
|||
Entonces lo ideal seria lo siguiente:
Unit 1
Unit 2 El resto del programa ¿Seria así no? Gracias a todos de nuevo. |
#12
|
||||
|
||||
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.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#13
|
|||
|
|||
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:
Vale gracias a todos por vuestra ayuda y perdonar que sea un novato |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
llamar a procedure desde otra procedure | anubis | Varios | 23 | 04-03-2010 19:44:37 |
puntero a un procedure en un procedure como parametro | fcios | Varios | 2 | 14-03-2009 04:41:22 |
Procedure | ozegarra | Firebird e Interbase | 5 | 08-12-2007 00:04:33 |
Procedure | MarioATamborini | Firebird e Interbase | 5 | 11-08-2005 19:46:07 |
¿procedure? | Giniromero | Firebird e Interbase | 18 | 26-02-2004 16:52:08 |
|