PDA

Ver la Versión Completa : Problema en consulta SQL con variables y format


ilichhernandez
14-11-2005, 14:38:29
Depues de haber leido varios hilos referentew al tema, llegue al siguiente codigo:pero me reclama el "%".... dice el sistema que no es valido el formato o el argumento es incompatible.....


procedure TForm1.Button1Click(Sender: TObject);
var consulta,campos,donde,orden : string;
begin
Consulta := 'Select % from resultados where % order by %';
query1.sql.text := format(consulta,[campos,donde,orden]);
query1.ExecSQL;
end;


ilich hernandez.

Gracias.........:(

vtdeleon
14-11-2005, 14:45:19
Saludos
No está clara tu duda, pero deduciendo

Consulta := 'Select %s from resultados where %s order by %s';

ilichhernandez
14-11-2005, 14:52:47
Le he echo la "s" que me faltaba y cuando lo ejecute quedo se cayo y me salio una ventana que dice que no hay sentencia SQL disponible y luego la ventana de la CPU.....lo que estoy tratando de hacer es poder entregar como parametro los campos a seleccionar, los campos para el ordenamiento y los campos del where....


procedure TForm1.Button1Click(Sender: TObject);
var consulta,campos,donde,orden : string;
begin
campos := '*';
donde := 'codigo_pricipal = "EC SAC 10 005" ';
orden := 'codigo_principal';
Consulta := 'Select %s from resultados where %s order by %s';
query1.sql.text := format(consulta,[campos,donde,orden]);
query1.ExecSQL;
end;


Gracias y saludos

vtdeleon
14-11-2005, 15:15:31
Saludos

Algo que se me pasó, es que veo que usas ExecSql, debes usar Open para sentencias "Select".

Lepe
14-11-2005, 15:25:06
donde := 'codigo_pricipal = '+ quotedStr('EC SAC 10 005');

En princpio son comillas simples, a menos que uses Access creo recordar.

saludos

ilichhernandez
14-11-2005, 20:05:16
no hay caso de momento.... tira un error distinto ahora..., hasta el mensaje que sale va bien.... la consulta va en la query.sql.text, pero luego lanza el siguiente error :"Could not find object".....



procedure TForm1.Button1Click(Sender: TObject);
var consulta,campos,donde,orden : string;
begin

campos := '*';
donde := 'codigo_pricipal = '+ quotedStr('EC SAC 10 005');
orden := 'codigo_principal';
Consulta := 'Select %s from resultados where %s order by %s';
//query1.active := true;
query1.sql.text := format(consulta,[campos,donde,orden]);
showmessage(query1.sql.Text);
query1.open;
end;


Saludos y gracias

ilichhernandez
14-11-2005, 20:08:54
Ahora no lanza error, resulta que donde dice codigo_pricipal es "codigo_principal"...., gracias por sus ayudas compañeros....... eternamente agradecido......

ilich hernandez.