Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-04-2009
Lizette Lizette is offline
Miembro
 
Registrado: jun 2008
Posts: 98
Poder: 16
Lizette Va por buen camino
Error en consulta sql con parametro

Hola compañeros, tengo la siguiente consulta sql:

Código Delphi [-]

  hr:=TimeToStr(time());
  hrs:=copy(hr,1,2);
  min:=copy(hr,4,2);
  mer:=copy(hr,10,4);
  minu:=StrToInt(min);
  min:=IntToStr(minu);
  hor:=hrs+':'+min+' '+mer;

with QueryRec do begin
 If active then close;
 SQL.Clear;
 SQL.Add('Select Hora, Evento');
 SQL.Add('From Recordatorios');
 SQL.Add('Where Hora < ho');
 SQL.Add('Order By Hora asc');
 Parameters.ParamByName('ho').Value:=hor;
 Open;
end; //with

Aquí el caso es que le mando como parametro hor que contiene la hora actual despreciando los segundos, y me marca error precisamente en ese parametro..

Saludos y espero me puedan ayudar a identificar el problema..
Responder Con Cita
  #2  
Antiguo 14-04-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
En la consulta SQL, debes poner dos puntos antes del parámetro

Código SQL [-]
Where Hora < :ho

// Saludos
Responder Con Cita
  #3  
Antiguo 14-04-2009
Lizette Lizette is offline
Miembro
 
Registrado: jun 2008
Posts: 98
Poder: 16
Lizette Va por buen camino
Mmm ya le puse los dos puntos, pero me sigue marcando error: QueryRec:Parameter 'ho' not found

Última edición por Lizette fecha: 14-04-2009 a las 03:47:44.
Responder Con Cita
  #4  
Antiguo 14-04-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola Lizette,
¿Que motor de base de datos utilizas?

¿Que tipo de dato es el campo Hora?
Esto te lo pregunto por el código que expones antes de armar la consulta. Hay una ensalada de variables y al final haces conversiones a mi modo de ver innecesarias.

Si estás empleando los componentes ADO, lo cual parece ser así debido a la propiedad Parameters (característica de los ADO) es recomendable que se le indique el tipo de datos y no simplemente el valor:

Parameters.ParamByName().Value := ...
Parameters.ParamByName().DataType := ...

Quizá algo de ésto tenga que ver con que no encuentra al parámetro... ¿Seguro/a que estableciste los dos puntos antes y no después?

EDITO:
¿La propiedad ParamCheck está en true o en false? Si es False... prueba en ponerla a true.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 14-04-2009 a las 05:14:29.
Responder Con Cita
  #5  
Antiguo 14-04-2009
Lizette Lizette is offline
Miembro
 
Registrado: jun 2008
Posts: 98
Poder: 16
Lizette Va por buen camino
Hola Delphius,

Uso como motor de bd MySQL, el campo hora, es varchar (string), el parametro es string.

Mmmm y el valor Parameters.ParamByName().DataType := ' ' que valores acepta??

Los dos puntos ya le cale, a ponerselos antes y despues y me da el mismo error.

La propiedad ParamCheck está en true..

La verdad no se en que este el error, ya que al parecer la consulta es correcta.
Responder Con Cita
  #6  
Antiguo 14-04-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por Lizette Ver Mensaje
Hola Delphius,

Uso como motor de bd MySQL, el campo hora, es varchar (string), el parametro es string.
Iba a decirte que antes de pasar a armar la consulta que mostraras el valor de hor con un showMessage() para ver si el formato generado es el esperado por el motor para el campo... pero si dices que es string no creo que sea el problema.

Aunque tengo mis reservas sobre si es mejor contar con un formato string para almacenar una hora...

Cita:
Empezado por Lizette Ver Mensaje
Mmmm y el valor Parameters.ParamByName().DataType := ' ' que valores acepta??
No es por ser malo pero con un F1 eso se resuelve fácilmente. De la ayuda de Delphi:

Cita:
Indicates the type of value the parameter represents.

property DataType: TDataType;

Description

Set DataType to reflect the data type of the value the parameter represents. The default value of DataType is ftUnknown.

Read DataType to discover the type of data that was assigned to the parameter. Each possible value of DataType corresponds to a type of table field.

ADOStoredProc1.Parameters.Items[0].DataType := ftString;
Cita:
Indicates the type of a parameter.

Unit

AdoDb

type TDataType = TFieldType;

Description

TDataType represents a field type when it is applied to a parameter.
Cita:
TFieldType is a set of values that parallel the data types of fields in tables.

Unit

DB

type TFieldType = (ftUnknown, ftString, ftSmallint, ftInteger, ftWord, ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime, ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo, ftGraphic, ftFmtMemo, ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor, ftFixedChar, ftWideString, ftLargeint, ftADT, ftArray, ftReference, ftDataSet, ftOraBlob, ftOraClob, ftVariant, ftInterface, ftIDispatch, ftGuid, ftTimeStamp, ftFMTBcd);
Entonces, ¿que valores acepta? cualquiera de esa lista... yo optaría por un ftstring.

Cita:
Empezado por Lizette Ver Mensaje
Los dos puntos ya le cale, a ponerselos antes y despues y me da el mismo error.

La propiedad ParamCheck está en true..

La verdad no se en que este el error, ya que al parecer la consulta es correcta.
Pues si los dos puntos están bien ubicados no debería ser problema... ya me dejas sin ideas...

A ver... ¿podrías mostrar con un showMessage() la consulta generada antes de ejecutarla?

Quizá hay por allí algún caracter escurridizo o que se quiere colar en la fiesta... tal vez si le tomamos una "fotito" se asoma y se deja ver (los coleros siempren se prenden para la foto)

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #7  
Antiguo 14-04-2009
Lizette Lizette is offline
Miembro
 
Registrado: jun 2008
Posts: 98
Poder: 16
Lizette Va por buen camino
Bien gracias por la ayuda revisare bien eso..

Saludos
Responder Con Cita
  #8  
Antiguo 14-04-2009
Lizette Lizette is offline
Miembro
 
Registrado: jun 2008
Posts: 98
Poder: 16
Lizette Va por buen camino
Como con la consulta no pude, no me quedo más que buscar opciones jeje, a lo cual hice lo siguiente:

Código Delphi [-]

  fecha:=DateToStr(date());
  dia:=(copy(fecha,1,2));
  mes:=(copy(fecha,4,2));
  ano:=(copy(fecha,7,4));
  ff:=ano+'-'+mes+'-'+dia;

 ADOTable1.Open;
 while ADOTable1.Eof<>True do
 begin
  if(ADOTable1.FieldValues['Fecha']=ff)then
  begin
    hora:=StrToTime(ADOTable1.FieldValues['Hora']);
    hr:=TimeToStr(time());
    hrs:=copy(hr,1,2);
    min:=copy(hr,4,2);
    mer:=copy(hr,10,4);
    minu:=StrToInt(min);
    min:=IntToStr(minu);
    hor:=StrToTime(hrs+':'+min+' '+mer);

    if(hora< hor)then
    begin
    RichEdit1.Lines.Add(ADOTable1.FieldValues['Hora']);
    RichEdit1.Lines.Add(ADOTable1.FieldValues['Evento']);
    ADOTable1.Edit;
    ADOTable1.Delete;
    ADOTable1.Refresh;
    end
    else
     ADOTable1.Next;
   end
   else
    ADOTable1.Next;
  end;
  BitAceptar.SetFocus;

El cual me muestra los datos en un RichEdit , mmm aunque no en una tablita pero en fin.. jeje

Saludos

Última edición por Lizette fecha: 14-04-2009 a las 08:10:23.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consulta Like '%'+ :parametro + '%' klionsis Varios 6 23-08-2008 01:29:37
problema con un parametro consulta sql sensei SQL 2 27-02-2008 02:27:52
Consulta Like Mysql '%'+ :parametro + '%' CarlaOnti MySQL 3 30-01-2006 12:46:13
Problema con Parametro en una consulta Durbed Firebird e Interbase 4 23-06-2005 17:55:41
Problema con una consulta en SQL con parametro fecha!!! Bitbanner SQL 3 21-02-2005 11:55:37


La franja horaria es GMT +2. Ahora son las 18:51:29.


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
Copyright 1996-2007 Club Delphi