FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Incluir un data module dos veces?
Estoy haciendo una aplicación donde, entre otras cosas, doy de alta clientes.
En la form de Altacliente, tengo un combobox, el cual contiene los nombres de los asesores (a cada cliente se le asigna un asesor). Los asesores se leen de una base de datos. La form de Altacliente llama a Cliente.cpp (y Cliente.h), donde se realizan las operaciones con el cliente (altas, bajas, etc...). Para comunicarme con la base de datos, tengo un datamodule con todos los componenetes necesarios (winsocks, sessions, database, queries, etc), y este datamodule lo incluyo en cada form que se comunica con la base de datos. El problema que tengo es que, sin incluyo el datamodule en Cliente.cpp, me marca errores del tipo "múltiples declaraciones de <alguna variable>", comprensible porque el datamodule ya está incluido en la form de AltaCliente. En Cliente.cpp incluyo la form AltaCliente porque los datos los voy tomando de la forma "strcpy(Nombre, AltasClientes->txtNombre->Text.c_str());" E incluyo el datamodule en Cliente.cpp porque aquí es donde se hace la llamada a la query para ingresar los datos a la base de datos. Mi pregunta es: ¿cómo accedo a lo que hay en el datamodule desde Cliente.cpp para realizar las operaciones (altas, bajas, etc)? Espero haber sido lo suficientemente claro, y si no lo fui, pregunten, estoy así como que necesitado de esta información. De antemano muchísimas gracias por la ayuda que me puedan brindar. Saludos! |
#2
|
|||
|
|||
la verdad no se si entendi bien tu pregunta pero segun yo podrias hacer en Cliente.cpp algo como:
Código:
AltaCliente->Datamodule-> .... ... no se si eso te ayude en algo saludos |
#3
|
|||
|
|||
Anda pues eso es lo que intenté en un principio! Pero no me deja...
El problema es que el datamodule lo creé hace un tiempo, lo guardé como... creo que se les llama módulos (aparece en una de las pestañas cuando das click en File->New->Other). Entonces lo único que hago es crear un proyecto nuevo y agrego el datamodule con ya todo hecho... ¿me explico? Entonces, yo supuse que sería tan sencillo como llamarlo: "VAltasClientes->RemoteDM->bla bla bla...", pero me marca error. (RemoteDM is not a member of TVAltasClientes). Como referencia: el archivo (el datamodule) se llama "Unit2.cpp", la clase se llama "TRemoteDM". Gracias por tu rápida respuesta. Saludos! |
#4
|
|||
|
|||
Después de cambiar algunas partes del sistema, sigo teniendo este mismo problema, me dice que hay múltiples declaraciones de <variable>. No entiendo por qué, pues el DataModule sólo está declarado en un lugar.
Dejo el código donde lo tengo declarado, a ver si alguien puede ayudarme con esto: Código:
#include "ModuloConexion.h" //Aquí está el DataModule #include "cAsesor.h" int Asesor::Alta_Asesor(){ /* Aquí van las operaciones */ } void Asesor::Baja_Asesor(){ /* Aquí van las operaciones */ } void Asesor::Modifica_Asesor(){ /* Aquí van las operaciones */ } void Asesor::Consulta_Asesor(){ /* Aquí van las operaciones */ } int Asesor::Llena_Campos(){ /* Aquí van las operaciones */ } Cita:
|
#5
|
||||
|
||||
No entiendo si ese código es una cabecera.h o un fragmento de archivo .cpp.
No debes incluir código en una cabecera, a no ser que sea código inline. Por otro lado, si una cabecera no está diseñada con cuidado, y se abre desde dos puntos distintos del proyecto, el compilador puede dar errores de múltiple definición. Ejemplo: Código:
#ifndef CabeceraH #define CabeceraH // CabeceraH será el mismo nombre del archivo cabecera, por ejemplo. QUE NO SE REPITA.... //--------------------------------------------------------------------------- //DEFINICIONES . . . //--------------------------------------------------------------------------- #endif En ocasiones, algunas cabeceras del sistema, son muy complejas, con múltiples condicionantes que, si no las conocemos, nos darán errores aparentemente inexplicables. Saludos. |
#6
|
|||
|
|||
Es un fragmento de cAsesor.cpp. El cAsesor.h está definido así:
Código:
#if !defined(_ASESOR_H) #define _ASESOR_H class Asesor { public: int Alta_Asesor(); void Baja_Asesor(); void Modifica_Asesor(); void Consulta_Asesor(); int Llena_Campos(); private: char * Nombre; char * Telefono; char * Correo; }; #endif //_ASESOR_H Voy a probar cambiándolo, a ver si ya funciona. Gracias por la ayuda! Editando: No, no es por la línea... sigue marcando esos errores... Última edición por Antonioveneroso fecha: 05-03-2008 a las 17:32:48. |
#7
|
||||
|
||||
No, con esa cabecera no vas a tener problemas. Creo que el error lo tienes en otro punto. Fijate que los mensajes de error son para la cabecera winsock2.h que es del sistema (S.O.). Probablemente la forma de incluir esa cabecera no esté bien debido a condicionantes de compilación escritos en las mismas cabeceras. Esa cabecera la tienes incluida en alguna parte. Si está incluida a su vez en otra cabecera creada por tí, trata de incluirla en el archivo.cpp correspondiente.
Saludos |
#8
|
|||
|
|||
Yo no he incluido esos archivos en ninguno de los creados por mí, y por más que busco dónde prodrían estar incluidos, no los encuentro...
Estoy utilizando una manejador de base de datos llamado NexusDB, utilizando una arquitectura cliente/servidor. Para que Nexus pueda conectarse desde mi máquina al servidor, requiere saber dónde tengo 213 archivos .hpp y .h. Usando Borland para buscar en todos los archivos del proyecto algún indicio de winsock.h o winsock2.h me dice que en ningún lugar se hace referencia a esos archivos... |
#9
|
||||
|
||||
Pues evidentemente existe una referencia, de lo contrario no saltaría el compilador. La llamada es desde una de las cabeceras de tu sistema, que probablemente, no es compatible con las de Borland.
Ten en cuenta que una libreria.h puede incluir otra(#include) y esta, a su vez otra y otra... Winsock es un sistema de comunicación en red (Socket). Investiga esta pista en tus librerías.h Saludos. Última edición por escafandra fecha: 05-03-2008 a las 19:45:51. |
#10
|
|||
|
|||
Yo creo que el problema está en que falta algo en el archivo de cAsesor.cpp y/o cAsesor.h, porque si incluyo el ModuloConexion.h en las ventanas creadas en Borland, el problema desaparece... como por arte de magia... sólo que no he encontrado qué podría agregar a mis clases para que deje de enviarme esos errores...
|
#11
|
||||
|
||||
Cita:
Pues como te he comentado, las directivas condicionales del preprocesador, pueden hacer que "algo se compile o no". Busca defines. Una variable definida con un #define puede ser la que haga la "magia". Saludos. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Problema con Data Module | FerCastro | Conexión con bases de datos | 11 | 18-01-2008 22:03:32 |
Creacion de un Data Module | CamiloU | Conexión con bases de datos | 4 | 01-02-2006 17:07:02 |
Problema con el data module | Gustavo Gowdak | Conexión con bases de datos | 3 | 29-07-2004 16:05:37 |
dbexpress data module | Ricardo Alfredo | Conexión con bases de datos | 1 | 11-06-2004 10:45:38 |
Data Module, información | pfsoft | Conexión con bases de datos | 1 | 26-01-2004 10:46:37 |
|