Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   No sé trabajar con parametros... (https://www.clubdelphi.com/foros/showthread.php?t=82361)

GustavoCruz 28-02-2013 02:08:18

No sé trabajar con parametros...
 
Hola amigos del foro. Mi pregunta es si en una consulta usualmente se hace esto:
Código SQL [-]
select * from tabla where campo1 = :midato
.
Cómo se hace en SQL Server 2008. Pues he tenido problemas con esto.
uso los componentes ADO
Gracias de antemano por la ayuda

Gustavo Cruz

Caral 28-02-2013 02:15:29

Hola
Se hace igual.
La consulta esta bien hecha, debe ser otro el problema.
Saludos

olbeup 28-02-2013 08:34:21

Hola GustavoCruz,

Como le pasas el parametro :midato a la SQL, para ver un poco mas de luz

Un saludo.

Neftali [Germán.Estévez] 28-02-2013 10:09:03

Nos haría falta ver el trozo de código completo, donde generas la SQL y asignas los parámetros.
Como te han comentado la sintaxis que has colocado parece estar bien.

Si te da algún error, estaría bien que comentaras exactamente el texto que te devuelve.

ecfisa 28-02-2013 18:25:32

Hola Gustavo.

Como ya te comentaron la consulta SQL es correcta, seguramente tengas problemas con el uso del TADOQuery.

Por si te sirve de ayuda, un ejemplo:
Código Delphi [-]
...
  with ADOQuery1 do
  begin
    Close;
    SQL.Text:= 'SELECT * FROM TABLA WHERE CAMPO1 = :PARAMETRO';
    Parameters.ParamByName('PARAMETRO').Value := Edit1.Text;
    Open
  end;
...

Saludos.

WkaymQ48 28-02-2013 19:06:22

Con el TADOQuery hay que crear primero el parámetro para poder usarlo.

Yo utilizo algo como esto (siguiendo con el ejemplo de ecfisa)
Código Delphi [-]
with ADOQuery1 do
  begin
    Close;
    SQL.Text:= 'SELECT * FROM TABLA WHERE CAMPO1 = :PARAMETRO';
    // Aqui le indicamos que cree los parámetros a partir de la consulta
    Parameters.ParseSQL(SQL.Text,TRUE);
    Parameters.ParamByName('PARAMETRO').Value := Edit1.Text;
    Open
  end;

Caral 01-03-2013 00:17:05

Hola
Cita:

Empezado por WkaymQ48 (Mensaje 455763)
Con el TADOQuery hay que crear primero el parámetro para poder usarlo.

Primera vez que veo esto.
He usado el AdoQuery infinidad de veces y no se necesita estipular o crear nada.:cool:
Saludos

WkaymQ48 01-03-2013 08:46:41

Cita:

Empezado por Caral (Mensaje 455792)
Hola

Primera vez que veo esto.
He usado el AdoQuery infinidad de veces y no se necesita estipular o crear nada.:cool:
Saludos

Pues no te lo voy a discutir, pero si pongo el código de arriba en delphi y no incluyo la linea del "ParseSQL" al ejecutar el programa me salta una bonita excepción diciendo que el parámetro no existe.

Sera mi delphi que es caprichoso :D

O puede que le pase a alguien mas:
http://edn.embarcadero.com/es/article/20420

Saludos

ecfisa 01-03-2013 17:20:14

Cita:

Empezado por WkaymQ48 (Mensaje 455802)
Pues no te lo voy a discutir, pero si pongo el código de arriba en delphi y no incluyo la linea del "ParseSQL" al ejecutar el programa me salta una bonita excepción diciendo que el parámetro no existe.

Hola WkaymQ48.

No soy tán conocedor de ADO como lo es mi amigo Caral y siendo sincero, desconozco las situaciones en que se debe crear el parámetro. Tampoco es mi intención discutir (para algo está la función), pero te puedo asegurar que el código que adjunté no me genera excepción alguna.

Busqué en la web sobre ParseSQL (no había visto tu enlace), pero ninguna de las referencia me dejó claro en que casos específicos es requisito usarlo. Si algún compañero me echa luz sobre ese punto le estaría muy agradecido.

Saludos. :)

nlsgarcia 01-03-2013 19:39:31

WkaymQ48,

Cita:

Empezado por WkaymQ48
...y no incluyo la linea del "ParseSQL" al ejecutar el programa me salta una bonita excepción diciendo que el parámetro no existe...

Revisa estos links:
Cita:

1- Data.Win.ADODB.TParameters.ParseSQL
http://docwiki.embarcadero.com/Libra...eters.ParseSQL

2- Parse params from an sql query using delphi
http://stackoverflow.com/questions/2...y-using-delphi
Cita:

Empezado por Embarcadero

Call ParseSQL to parse an SQL statement for parameters. For each parameter found in the SQL statement, a TParameter object is added to the calling TParameters object using the name of the parameter in the SQL statement.

Al usar el método ParseSQL con el segundo parámetro en True, estas creando una lista de los parámetros de la sentencia SQL como puedes ver en el Link-2, te sugiero revisar el diseño de tus tablas y verificar si efectivamente dicho atributo (Campo) existe realmente, lo más probable es que no exista como sugiere el Msg #8.

El Query debe funcionar adecuadamente como se indica en el Msg #5 una vez solventado el problema con el atributo.

Revisa esta información:



Espero sea útil :)

Nelson.


La franja horaria es GMT +2. Ahora son las 02:45:04.

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