Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Referencia a una const (https://www.clubdelphi.com/foros/showthread.php?t=77045)

sleep25000 15-12-2011 22:16:54

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.

marcoszorrilla 15-12-2011 22:44:38

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.

sleep25000 15-12-2011 23:28:53

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

un saludo.

Casimiro Notevi 15-12-2011 23:40:25

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;

sleep25000 16-12-2011 00:15:50

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.

ElKurgan 16-12-2011 06:54:16

¿Y esto no te serviría?

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

Saludos

sleep25000 16-12-2011 10:55:36

Referencia a una const
 
Gracias ElKurgan, de esa forma me sirve.

Un saludo


La franja horaria es GMT +2. Ahora son las 09:15:14.

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