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

Tema Cerrado
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-03-2010
pablopessoa pablopessoa is offline
Miembro
 
Registrado: may 2008
Ubicación: Argentina
Posts: 162
Poder: 16
pablopessoa Va por buen camino
Thumbs up Existe alguna tecnica para no repetir codigo?

Hola a todos!, hace rato que no escribia...
Les explico mi problema para que se entienda lo que quiero hacer, si se puede...

Tengo dos bases de datos. Las dos son iguales en estructura, solo qeu guardan datos distintos (una guarda datos personales y las otras los datos de las sucursales)
Por ende tengo dos datamodulos, donde se repiten las querys.
Ahora supongamos que tengo un formulario donde se hacen busquedas. Hoy en dia tengo un codigo de la siguiente forma:

Código Delphi [-]
if esBaseMia then {se busca en la base de mis datos}
   begin
       with datamodule1 do
       begin
           unaQuery.Parameters.ParamByName('parametro1').Value:=unValor;
           unaQuery.Parameters.ParamByName('parametro2').Value:=unValor;
           unaQuery.Parameters.ParamByName('parametro3').Value:=unValor;
       end
   end
else {se busca en la base de las sucursales}
        with datamodule2 do
        begin 
           unaQuery.Parameters.ParamByName('parametro1').Value:=unValor;
           unaQuery.Parameters.ParamByName('parametro2').Value:=unValor;
           unaQuery.Parameters.ParamByName('parametro3').Value:=unValor;
        end;
end;

Como veran se repite el mismo codigo, solo que como depende de con que datamodule tenga que trabajar, estoy obligado a repetir el mismo codigo dos veces.
yo probe hacer algo del tipo :

Código Delphi [-]
 case TipoBase of
      tPropias: with DataModule1 do
      tGeneral: with DataModule2 do
    end;
    begin
     ----------- {codigo que se repite}
pero obviamente esto no sirve, directamente no compila.

Espero que se entienda cual es mi problema y si alguno sabe como solucionar esto para no tener qeu repetir siempre el mismo codigo para un datamodule y para el otro lo agradeceria mucho.
Saludos a todos!!!
  #2  
Antiguo 10-03-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
creo un procedimiento:
Código Delphi [-]
Procedure Datos:
begin
 unaQuery.Parameters.ParamByName('parametro1').Value:=unValor;
 unaQuery.Parameters.ParamByName('parametro2').Value:=unValor;
 unaQuery.Parameters.ParamByName('parametro3').Value:=unValor;
end;
Luego lo llamo:
Código Delphi [-]
if esBaseMia then {se busca en la base de mis datos}
   begin
       with datamodule1 do
       begin
       Datos;   
       end
   end
else {se busca en la base de las sucursales}
        with datamodule2 do
        begin 
           Datos;
        end;
end;
No se, digo.....
Saludos
__________________
Siempre Novato
  #3  
Antiguo 10-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Thumbs down

Cita:
Empezado por Caral Ver Mensaje
Hola
creo un procedimiento:

...

Luego lo llamo:

...


No se, digo.....
Saludos
Y tu procedimiento no conoce al Query, entonces te da error en diseño.
No se, digo....
  #4  
Antiguo 10-03-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Osea te brincas el:
Código Delphi [-]
  with datamoduleX do
Ya que los query se llaman EXACTAMENTE IGUAL en ambos datamodule.
Lo único que varia es con que datamodule trabaja y para eso esta el código anterior.
Que dices al respecto?
Saludos
__________________
Siempre Novato
  #5  
Antiguo 10-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Thumbs down

Cita:
Empezado por Caral Ver Mensaje
Hola

....

Que dices al respecto?
Saludos
Digo que tu procedimiento no tenia la cláusula with.
No se, digo.....
  #6  
Antiguo 10-03-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No veo ni entiendo la razón por la que no funcione.
Declaraste el procedimiento en su lista?.
De todos modos no me hagas mucho caso, de estas cosas no se.
BrunoBsso se ve que tiene la respuesta adecuada, ya casi la suelta.
Saludos
__________________
Siempre Novato
  #7  
Antiguo 10-03-2010
pablopessoa pablopessoa is offline
Miembro
 
Registrado: may 2008
Ubicación: Argentina
Posts: 162
Poder: 16
pablopessoa Va por buen camino
Probe de la forma que me decis, pero no funciona.
unaQuery esta declarada tanto en el datamodule1 como en el datamodule2;
si yo creo un procedimiento Datos de la forma que mencionas me sale un error al compilar del tipo "identificador no declarado", es decir, no encuentra "unaQuery".
Por las dudas aclaro que en el uses del form de busqueda estan agregados los dos datamodules.

Edit : Pido disculpas por no haber agradecido el interes en darme una respuesta, sin importar cual fuese el resultado. Para ser sincero, estoy tan metido en resolver esto que se me paso.
Espero que cuente el "mas vale tarde que nunca" y te doy mil gracias por responderme.
Saludos!
  #8  
Antiguo 10-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Thumbs up

Cita:
Empezado por pablopessoa Ver Mensaje
Probe de la forma que me decis, pero no funciona.
unaQuery esta declarada tanto en el datamodule1 como en el datamodule2;
si yo creo un procedimiento Datos de la forma que mencionas me sale un error al compilar del tipo "identificador no declarado", es decir, no encuentra "unaQuery".
Por las dudas aclaro que en el uses del form de busqueda estan agregados los dos datamodules.
Véase que yo tenía razón, habría que explicarlo mejor antes de ser sobervios con "No se, digo....".

Bueno, pablopessoa, lo que tendrías que hacer es ese procedimiento, pero agregarle un argumento. Explico:
Código Delphi [-]
//Suponiendo que tu Query es de tipo TADOQuery y los parámetros son de tipo Integer
procedure CargarDatos(var Q:TADOQuery; Valor1,Valor2,Valor3:Integer);
begin
  with Q do begin
    Parameters.ParamByName('parametro1').Value:=Valor1;
    Parameters.ParamByName('parametro1').Value:=Valor2;
    Parameters.ParamByName('parametro1').Value:=Valor3;
  end;
end;

Y desde el otro procedimiento:
Código Delphi [-]
if esBaseMia then
  CargarDatos(datamodule1.unaQuery,unValor1,unValor2,unValor3)
else
  CargarDatos(datamodule2.unaQuery,unValor1,unValor2,unValor3);

Saludos!!!!
Cita:
Empezado por Caral Ver Mensaje
Hola
No veo ni entiendo la razón por la que no funcione.
Declaraste el procedimiento en su lista?.
De todos modos no me hagas mucho caso, de estas cosas no se.
BrunoBsso se ve que tiene la respuesta adecuada, ya casi la suelta.
Saludos
No se si la adecuada, pero sí una explicativa

Última edición por BrunoBsso fecha: 10-03-2010 a las 02:51:12. Razón: Basta de ser pedantes, sobretodo cuando no sabés
  #9  
Antiguo 10-03-2010
pablopessoa pablopessoa is offline
Miembro
 
Registrado: may 2008
Ubicación: Argentina
Posts: 162
Poder: 16
pablopessoa Va por buen camino
Les agradezco mucho a los dos por la ayuda.
Mas alla de la "sutiles replicas" que hayan tenido, la solucion recomendada por
BrunoBsso compila bien, y de seguro funcione ( ya se me caen los ojos asi que la voy a completar mañana y la pruebo :S).
Lo cual no desmerece la ayuda prestada por Caral.
Si me permiten una sugerencia para el futuro, ni la soberbia ( no todos manejamos el mismo nivel de programacion) ni los botines afilados ( sobre todo para un usuario relativamente nuevo como nosotros) cooperan al buen desempeño de la comunidad en el foro.
Es de saber que al momento de inscribirse en un foro, te encuentres con gente a un mismo nivel, a un nivel medio y a un nivel principiante (sin importar la cantidad de post que hayan hecho). La clave es tener paciencia, ayudar si se puede y se tiene ganas y por sobre todo, tratar de mantener cierta "camaraderia" entre nosotros.
Nuevamente gracias a los dos, saludos y BrunoBsso te comento que soy de La Plata, asi que casi que somos vecinos jajaajaj.
  #10  
Antiguo 10-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Exclamation

Cita:
Empezado por pablopessoa Ver Mensaje
Les agradezco mucho a los dos por la ayuda.
Mas alla de la "sutiles replicas" que hayan tenido, la solucion recomendada por
BrunoBsso compila bien, y de seguro funcione ( ya se me caen los ojos asi que la voy a completar mañana y la pruebo :S).
Lo cual no desmerece la ayuda prestada por Caral.
Si me permiten una sugerencia para el futuro, ni la soberbia ( no todos manejamos el mismo nivel de programacion) ni los botines afilados ( sobre todo para un usuario relativamente nuevo como nosotros) cooperan al buen desempeño de la comunidad en el foro.
Es de saber que al momento de inscribirse en un foro, te encuentres con gente a un mismo nivel, a un nivel medio y a un nivel principiante (sin importar la cantidad de post que hayan hecho). La clave es tener paciencia, ayudar si se puede y se tiene ganas y por sobre todo, tratar de mantener cierta "camaraderia" entre nosotros.
Nuevamente gracias a los dos, saludos y BrunoBsso te comento que soy de La Plata, asi que casi que somos vecinos jajaajaj.
Yo reacciono así ante la soberbia siempre. No me creo el gran programador del milenio, pero sé que no soy un novato total; ver gente con un rango más elevado que otros respondiendo con soberbia me desagrada totalmente (en foros y en la vida real). Cuando uno es soberbio, para mí no merece buen trato a menos que se retracte de eso.
A lo segundo que remarqué, considerando que sos de La Plata y que estás aprendiendo Delphi, no puedo evitar la idea de que estás estudiando en la UNLP justamente en la facu de Informática.
Ya sabés, cuando necesites ayuda en Delphi me avisas y yo intento solucionarte los problemas, pero no siempre voy a saber todo.
Si estás estudiando ahí, cuando tengas a Bertone no te hagas amigo suyo, después te usa para demostrar cosas y casi siempre quedas mal (no es experiencia propia por suerte).
Saludos!
  #11  
Antiguo 10-03-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Me alegra que obtuvieras la respuesta adecuada, ademas de ver tu educacion.
Como siempre he dicho, tal vez si me dedicara a la programación o por lo menos algo supiera, ayudaría mas, o trataría.
Con relación a la soberbia: Puede que lo sea algo, tal vez la edad ya me lo permita.
No se en Argentina que significa (No se, digo..).
Pero en castellano esta bien claro.
BrunoBsso: Siempre es un gusto ver código de los que saben, así tratare de seguir aprendiendo de este mi pasatiempo.
Saludos
__________________
Siempre Novato
  #12  
Antiguo 10-03-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
El compañero Caral ha intentado ayudar. Cualquiera puede equivocarse en un momento dado o no dar una solución correcta, pero creo que nadie se molesta en dar una solución equivocada a propósito, siempre se hace de buena fé y con la mejor intención del mundo.
Debemos tener paciencia unos con otros, nadie es perfecto.
  #13  
Antiguo 10-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
El compañero Caral ha intentado ayudar. Cualquiera puede equivocarse en un momento dado o no dar una solución correcta, pero creo que nadie se molesta en dar una solución equivocada a propósito, siempre se hace de buena fé y con la mejor intención del mundo.
Debemos tener paciencia unos con otros, nadie es perfecto.
Nunca me interesó que la respuesta haya sido incorrecta.
Si no fuese por ese malintencionado "No se, digo...." yo hubiese contestado con toda amabilidad para explicar el error y mostrar la solución.
Sin embargo, la pedantería de ese "No se, digo...." me hizo saltar la térmica y a cosas así reacciono mal.
Así que repito: mi reacción no se debe a que alguien, en un intento de ayudar, lo haga mal; se debe a la soberbia, y mas cuando es infundada.
  #14  
Antiguo 10-03-2010
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Cita:
Empezado por pablopessoa Ver Mensaje
...

Tengo dos bases de datos. Las dos son iguales en estructura, solo qeu guardan datos distintos (una guarda datos personales y las otras los datos de las sucursales)
Por ende tengo dos datamodulos, donde se repiten las querys.
...
No acabo de entender esto.
Necesitas acceder a las dos bases de datos a la vez ? o es que unas veces ejecutas el programa contra una bbdd y otras veces contra la otra.
Si es éste el caso, no creo que lo estés haciendo bien, ya que con un sólo módulo de datos valdría, cambiando la base de datos a la que se accede al comenzar el programa e incluyendo un procedimiento de cambio de base de datos en el propio programa. Y Caral podría aportar muchísimo en cuanto a ficheros .INI y familia. ( y lo contento que se pondría, ya tan mayor ) .

Por favor, confirmanos este dato.

No sé, digo...

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
  #15  
Antiguo 10-03-2010
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Antes de que este hilo sea cerrado, quisiera expresar mi parecer.

Empecemos por la definición de soberbio (así es como se escribe):

Que tiene soberbia o se deja llevar de ella.

Y la de soberbia:

1. Altivez y apetito desordenado de ser preferido a otros.

2. Satisfacción y envanecimiento por la contemplación de las propias prendas con menosprecio de los demás.

Si alguno de los participantes de este hilo ha actuado con soberbia aquí, es definitivamente el compañero BrunoBsso.

Razones:

1. Su primer mensaje inicia con un total menosprecio de la sugerencia dada por Carlos. Además de usar de entrada esa descalificadora mano roja, no muestra haberse detenido a analizar que la idea de Carlos no es del todo mala si ese procedimiento se tratara de un método en ambos módulos de datos (el valor para los parámetros dependería de que pablopessoa especificara el origen de la expresión unValor).

2. Aún cuando en su léxico, la expresión "No sé, digo" signifique una grosería, Bruno mismo hace mofa con ella en más de una ocasión. Es decir, se rebajó al nivel de trato que erróneamente percibía en Carlos.

3. Ante la aclaración de Carlos «declaraste el procedimiento en su lista?» (donde ciertamente no emplea la palabra método, pero que no es difícil de entenderlo así para alguien con el conocimiento que Bruno ha demostrado) presenta nula humildad. Muy por el contrario, inicia su siguiente mensaje con altivez, diciendo «Véase que yo tenía razón».

Además ya se aclaró que en Costa Rica la frase "No sé, digo" no es ninguna clase de injuria. Por tanto, me parece que Bruno haría bien en añadir un mensaje más, ofreciendo una disculpa a Carlos, siendo congruente con sus propias palabras:
Cita:
Empezado por BrunoBsso Ver Mensaje
Cuando uno es soberbio, para mí no merece buen trato a menos que se retracte de eso.
Cita:
Empezado por BrunoBsso Ver Mensaje
Acepto tus disculpas, bien por vos pedir disculpas cuando ofendés a alguien
Bruno, cabe mencionar que hasta ahora he visto con buenos ojos las aportaciones que haces en los tableros de mensajes, pues me parecen de gran calidad técnica. Y confío en que seguiré viéndolas de igual o mejor manera.

Un abrazo social.

Al González.

Última edición por Al González fecha: 10-03-2010 a las 19:29:51.
  #16  
Antiguo 10-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Creo que no hacía falta levantar el polvo dado que la discusión se terminó y se me dio a entender que fue un malentendido de léxicos.
  #17  
Antiguo 10-03-2010
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Y bueno, nadie mencionó que posiblemente estamos ante un mal diseño de BD, ya que bien podrían convivir los datos tanto generales como "locales" en la misma base de datos y acceder a una u otra mediente "wheres". No veo pq nos vamos por otro rumbo....
__________________
AKA "El animalito" ||Cordobés a mucha honra||
  #18  
Antiguo 11-03-2010
pablopessoa pablopessoa is offline
Miembro
 
Registrado: may 2008
Ubicación: Argentina
Posts: 162
Poder: 16
pablopessoa Va por buen camino
A ver gente.... ni por casualidad pretendia que se armara tanto lio por un simple post....
Para contestar algunas cosas...
Siempre digo ser novato... simplemente por que lo soy.

Primero que nada, se que no es la intencion de nadie dar una respuesta equivocada o guiar por mal camino a un forista intencionalmente, si asi fuera, estoy seguro que se arriesgaria la continuidad en este foro.

En cuanto a las dos bases de datos, la persona que me pidio el programa (de mas esta decir que con mi nivel no es un trabajo profesional sino un encargo de un amigo) expresamente me pidio que lo maneje de esa manera... dos bases de datos iguales... pero que en una esten los datos locales y en la otra los datos de las sucursales, la cual se usa para acualizar via ftp.

En un post de este tema, trate de calmar las aguas y nunca menosprecie ninguna de las respuestas, es mas agradeci cada aporte que se hizo.

Mi conocimiento de POO no es pobre, pero tampoco avanzada.

y por ultimo, acaso nunca le paso a alguien tener un problema con un codigo, cuando estas hace rato metido en lo mismo y no darte cuenta de que la solucion era algo obvio hasta qeu alguien vino y te lo dijo?

Si algun moderador ve esto y quiere cerrar el hilo, me parece barbaro y es mas, lo solicito. Me parece un derroche gastar tiempo en una discusion vacia y sin sentido cuando se podria emplearlo en aportar algo a algun otro forista que necesite ayuda.

Siempre agradezco mucho la ayuda que me brinda este foro, y reconozco que son muchas mas las veces qeu pregunto que las que respondo, espero algun dia revertir las cosas y ser mas de ayuda que de molestia.

Les doy las gracias a todos los aportes. Saludos!
Tema Cerrado



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
existe alguna utilidad o manual para migrar codigo a Delphi 2009? cocute Varios 5 05-02-2009 11:16:17
Existe alguna clase para serializar un objeto en Delphi rgstuamigo OOP 4 04-10-2008 14:05:20
Uso de Compononetes para reutilizar codigo (abuso de la tecnica) olmecas OOP 9 17-01-2008 18:47:28
existe alguna manera de evitar los archivos ddp (diagramas) en D7 pvizcay Varios 2 02-12-2006 15:44:10
¿Existe alguna propiedad que te diga el nº de Items de un ComboBox??. nuri Varios 7 11-08-2005 16:26:35


La franja horaria es GMT +2. Ahora son las 00:53:08.


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