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 15-12-2011
sleep25000 sleep25000 is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 29
Poder: 0
sleep25000 Va por buen camino
Referencia a una const

Hola,
Necesito crear o hacer referencia a una constante según la opción elegida.
Por ejemplo:
Tengo dos TClientDataSet(Pedidos y Albaranes) en la unidad de datos, los dos tiene en el evento "BeforeOpen" el siguiente procedimiento:
Código Delphi [-]
 
procedure TDatos.Abrir(DataSet: TDataSet);
var
  D: TClientDataSet;
begin
  D := DataSet as TClientDataSet;
  if D.Name = 'Pedidos' then
    D.CommandText := 'ct_SQL_ ' + D.Name // formar la constante ct_SQL_Pedidos
  else
    D.CommandText := ct_SQL_Albaranes;
end;
Mi pregunta es: ¿Como puedo construir la constante "ct_SQL_Pedidos"?

Ahora solo tengo dos TClientDataSet, pero en un futuro tendre muchos.
Responder Con Cita
  #2  
Antiguo 15-12-2011
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Puedes tomar como referencia este código que utilizo yo en casos similares:
Código Delphi [-]
procedure TfrConClientes.FormActivate(Sender: TObject);
var
cSql1,cSql2,cSql3:String;
begin
frConClientes.Caption:='Consulta de '+cListado;
DmClientes.IBDtsCli.Close;
DmClientes.IBDtsCli.SelectSQL.Clear;
cSql1:='Select * from Alumnos';
csql3:=' Order by Apellidos,Nombre';

  Case frDlgAlumnos.RdgAlumnos.ItemIndex of
  0:cSql2:=' Where Baja  = ''N''';
  1:cSql2:=' Where Grupo = '+DmClientes.IBDtsGruposCODIGO.Value;
  2:cSql2:=' Where RecibofPago = '+QuotedStr(frDlgalumnos.cbcPago.Text);
  3:cSql2:=' Where Sexo  = ''M''';
  4:cSql2:=' Where Sexo  = ''F''';
  5:cSql2:=' Where Baja  = ''S''';
  6:cSql2:=' Where CP    ='+QuotedStr(frDlgAlumnos.edCP.Text); 
  end;

DmClientes.IBDtsCli.SelectSQL.Add(cSql1+cSql2+cSql3);
DmClientes.IBDtsCli.Open;

end;

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 15-12-2011
sleep25000 sleep25000 is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 29
Poder: 0
sleep25000 Va por buen camino
Referencia a una const

Gracias por la respuesta, aunque yo creia que habria alguna otra forma, pero de momento lo hare asi.

un saludo.
Responder Con Cita
  #4  
Antiguo 15-12-2011
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
No entiendo bien la pregunta, creo que ¿te refieres a una constante "normal"?, ejemplo:

Código Delphi [-]
procedure TDatos.Abrir(DataSet: TDataSet);
const
  _sql_ = 'select * from ';
var   
  D: TClientDataSet; 
begin   
  D := DataSet as TClientDataSet;   
  if D.Name = 'Pedidos' then     
    D.CommandText := _sql_ + D.Name // formar la constante ct_SQL_Pedidos   
  else     
    D.CommandText := ct_SQL_Albaranes; 
end;
Responder Con Cita
  #5  
Antiguo 16-12-2011
sleep25000 sleep25000 is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 29
Poder: 0
sleep25000 Va por buen camino
Referencia a una const

Casimiro, no quiero concatenar, sino llamar por nombre a la constante.

Tengo una unidad llamada uCt, con varias constantes, dos de ellas son:
ct_SQL_Pedidos = 'SELECT * FROM Pedidos';
ct_SQL_Albaranes = 'SELECT * FROM Albaranes';

if D.Name = 'Pedidos' then
D.CommandText := 'ct_SQL_' + D.Name // Es aqui, donde quiero formar la constante ct_SQL_Pedidos.

Según el nombre del ClientDataSet(Pedidos, Albaranes) seleccionar la constante que le corresponda, sin tener que ulizar condicionales o cualquier otra sentencia.
Responder Con Cita
  #6  
Antiguo 16-12-2011
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.234
Poder: 20
ElKurgan Va camino a la fama
¿Y esto no te serviría?

Código Delphi [-]
const
  Sentencia = 'SELECT * FROM %s';
begin
....
....
ClientDataset1.CommandText := Format(Sentencia, [VariableNombre]);
...
end;

Saludos
Responder Con Cita
  #7  
Antiguo 16-12-2011
sleep25000 sleep25000 is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 29
Poder: 0
sleep25000 Va por buen camino
Referencia a una const

Gracias ElKurgan, de esa forma me sirve.

Un saludo
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
const.pas y dbconst.pas en castellano? rodries Varios 2 03-07-2006 13:38:29
VAR y CONST? unko! OOP 13 23-03-2005 18:05:17
Const en una DLL TONIAM Varios 0 28-12-2004 18:57:02
Pasar valores a una variable tipo const Reyhert Varios 3 27-06-2004 17:55:07
const.pas y dbconst.pas Critter Varios 16 14-02-2004 14:12:31


La franja horaria es GMT +2. Ahora son las 23:37:51.


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