Ver Mensaje Individual
  #2  
Antiguo 18-08-2006
Avatar de jzginez
jzginez jzginez is offline
Miembro
 
Registrado: sep 2003
Ubicación: Puebla, México
Posts: 247
Reputación: 21
jzginez Va por buen camino
Bueno amigos pa variar creo que no me explique muy bien pero de todas formas gracias ya logre solucionar mi problema, es a través de una función que como parametro le envio la sentencia sql de la consulta que quiero condicionar, el componente mome deporsi lo tengo para mostrar al usuario la condición que esta por aplicar, así que lo aprobeche para obtener los nombres de los campos con todo y tabla y al final lo borro para que el usuario ni se entere:

Código Delphi [-]
procedure TFrmEditaFiltro.PonCondicion(Inicial: String);
Var
  i, r: Integer;
  Campo: String;
Begin
  Memo1.Lines.Clear;
  Memo1.Lines.Append(Inicial);
  ComboBoxMultiple2.Items.Clear;
  ComboBoxMultiple2.Items.Add('(Seleccione)|||');
  for i:= 0 to DataSource1.DataSet.FieldCount - 1 do
    Begin
      For r:= 0 to Memo1.Lines.Count do
        Begin
         Campo:= Memo1.Lines.Strings[r];
         if (pos('.'+UpperCase(DataSource1.DataSet.Fields.Fields[i].FullName),UpperCase(Campo)) <> 0) or (pos(' '+UpperCase(DataSource1.DataSet.Fields.Fields[i].FullName),UpperCase(Campo)) <> 0)
          Then Begin
            Campo:= TrimLeft(Campo);
            If (pos('.'+UpperCase(DataSource1.DataSet.Fields.Fields[i].FullName),UpperCase(Campo)) <> 0)
              Then Delete(campo,pos(',',campo),255)
              Else Delete(campo,pos(' ',campo),255);
            Break;
          End;
         End;
      if DataSource1.DataSet.Fields.Fields[i].DataType in ([ftString, ftFixedChar, ftWideString])
        Then ComboBoxMultiple2.Items.Add(DataSource1.DataSet.Fields.Fields[i].DisplayName+'|'+Campo+'|'+'Cadena'+'|'); //DataSource1.DataSet.Fields.Fields[i].FullName
      if DataSource1.DataSet.Fields.Fields[i].DataType in ([ftSmallint, ftInteger, ftWord, ftAutoInc, ftLargeint])
        Then ComboBoxMultiple2.Items.Add(DataSource1.DataSet.Fields.Fields[i].DisplayName+'|'+Campo+'|'+'Entero'+'|'); //DataSource1.DataSet.Fields.Fields[i].FullName
      if DataSource1.DataSet.Fields.Fields[i].DataType in ([ftFloat, ftCurrency, ftBCD])
        Then ComboBoxMultiple2.Items.Add(DataSource1.DataSet.Fields.Fields[i].DisplayName+'|'+Campo+'|'+'Real'+'|'); //DataSource1.DataSet.Fields.Fields[i].FullName
      if DataSource1.DataSet.Fields.Fields[i].DataType in ([ftDate, ftTime, ftDateTime, ftTimeStamp])
        Then ComboBoxMultiple2.Items.Add(DataSource1.DataSet.Fields.Fields[i].DisplayName+'|'+Campo+'|'+'Fecha'+'|'); //DataSource1.DataSet.Fields.Fields[i].FullName
      if DataSource1.DataSet.Fields.Fields[i].DataType in ([ftBoolean])
        Then ComboBoxMultiple2.Items.Add(DataSource1.DataSet.Fields.Fields[i].DisplayName+'|'+Campo+'|'+'Logico'+'|'); //DataSource1.DataSet.Fields.Fields[i].FullName
    End;
  Memo1.Lines.Clear;
  InicializaForma;
End;
__________________
Espero poder seguir exprimiéndote el cerebro 8)
Jorge Zamora Ginez
Puebla, Pue. México
Responder Con Cita