PDA

Ver la Versión Completa : Urgente!!! Problema con Consulta SQL


PaLaSaca
06-05-2004, 15:36:56
Tengo un problema con esta consulta.
Realizo esta consulta de 3 tablas para listar los datos en un report desde Delphi y me sale el error: ''La instrucció SELECT incluye una palabra reservada, le falta un argumento o está mal escrito o bien los signos de puntuación no son correctos.''
En canvio si la hago desde access mediante vista SQL cambiando solo el parametro (:Codi) por un numero y luego cargo la consulta de access en un TADO Table y la ejecuto no se produce ningun error y el report funciona bien.
Aquí está el código que uso desde delphi 5.0 para crear la consulta.
Utilizo una BD con Access.

/code
var
Consulta: string;
begin
Consulta:= (lo que hay debajo)
'SELECT [DetallCurses].Dorsal,Participants.Cognoms,Participants.Nom,Last([Pas Controls].[Temps Acumulat]) AS [Temps Final]'+
'LAST([Pas Controls].[Velocitat Mitjana]) AS [Velocitat Final],[Detall Curses].[Codi Cursa]'+
'FROM (Participants INNER JOIN (Curses INNER JOIN [Detall Curses] ON Curses.[Codi Cursa] = [Detall Curses].[Codi Cursa])ON Participants.[Codi Participant] = [Detall Curses].[Codi Participant])'+
'INNER JOIN [Pas Controls] ON [Detall Curses].[Codi Detall Cursa] = [Pas Controls].[Codi Detall Cursa]'+
'GROUP BY [Detall Curses].Dorsal,Participants.Cognoms,Participants.Nom,[Detall Curses].[Codi Cursa]'+
'HAVING ((([Detall Curses].[Codi Cursa]) = :Codi))ORDER BY Last([Pas Controls].[Temps Acumulat])';
Modul.Informes.Close;
Modul.Informes.SQL.Clear;
Modul.Informes.SQL.Add(Consulta);
Modul.Informes.Parameters.ParamByName('Codi').Value:=Edit1.Text;
Modul.Informes.Open;
While not Modul.Informes.Eof do
begin
Classificacio_Final.DataSet:=Modul.Informes;
Classificacio_Final.Dorsal.DataSet:=Modul.Informes;
Classificacio_Final.Dorsal.DataField:='Dorsal';
Classificacio_Final.Cognoms.DataSet:=Modul.Informes;
Classificacio_Final.Cognoms.DataField:='Cognoms';
Classificacio_Final.Nom.DataSet:=Modul.Informes;
Classificacio_Final.Nom.DataField:='Nom';
Classificacio_Final.Temps.DataSet:=Modul.Informes;
Classificacio_Final.Temps.DataField:='Temps Final';
Classificacio_Final.Velocitat.DataSet:=Modul.Informes;
Classificacio_Final.Velocitat.DataField:='Velocitat Final';
Modul.Informes.Next;
end;
Classificacio_Final.Preview;
end;
code/
Sabriais decir porque falla esto? La consulta está bien hecha? Alguna solucion?
Gracias de antemano.

roman
06-05-2004, 16:50:29
PaLaSaca

En lugar de encerrar el código entre /code y code / enciérralo entre [ code ] y [ /code ] (sin espacios entre code y los corchetes) También puedes usar [ delphi ] [ /delphi ] para que el código quede con coloreado de sintaxis.

// Saludos

jachguate
06-05-2004, 19:56:50
con respecto del título de tu mensaje... te recomiendo la lectura de la guia de estilo de los foros (es urgente), donde está bien explicado porque no debes usar palabras como Urgente, o similares.

hasta luego.

;)