Ver Mensaje Individual
  #7  
Antiguo 09-03-2008
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Reputación: 23
gluglu Va por buen camino
Ya creo que lo tengo correctamente :

Código Delphi [-]
Aux_SelectSQL1 := '';
Aux_SelectSQL2 := UpperCase((DataSet as TIBDataSet).SelectSQL.Text);

for j := 1 to Length(Aux_SelectSQL2) do begin
  if Aux_SelectSQL2[j] = #13 then    Aux_SelectSQL1 := Aux_SelectSQL1 + ' '
  else
    if Aux_SelectSQL2[j] <> #10 then
      Aux_SelectSQL1 := Aux_SelectSQL1 + Aux_SelectSQL2[j];
end;
 
Aux_Pos := 1;
while PosEx(' FROM ', Aux_SelectSQL1, Aux_Pos) <> 0 do begin
  Aux_Pos := PosEx(' FROM ', Aux_SelectSQL1, Aux_Pos) + 1;
end;
 
Dec(Aux_Pos);
Aux_Table  := Copy(Aux_SelectSQL1, Aux_Pos+6, PosEx(' ', Aux_SelectSQL1, Aux_Pos+6) - (Aux_Pos+6));

Bastaba con buscar 'from' como palabra 'reservada'. Es decir, basta con buscar ' from ' con espacio delante y detrás.

Y revisando el código, me dí cuenta de otra particularidad que no mencioné anteriormente : las subconsultas !

Select fromage, (Select loquesea from mi_otra_tabla where loquesea = 1) from mi_tabla_de_fromages mtdf where fromage = 1

Por eso lo de localizar la última aparición de ' from ' en la sentencia SQL.

Saludos
__________________
Piensa siempre en positivo !
Responder Con Cita