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 13-05-2010
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Error en código Sql

Hola amigos del foro.
Recurro a Uds.una vez más para saber por qué me este código no funciona y siempre me arroja el mismo error.

Código Delphi [-]
procedure TCitaciones.DBPlanner1PlannerDblClick(Sender: TObject; Position,
FromSel, FromSelPrecise, ToSel, ToSelPrecise: Integer);
begin
with DBPlanner1.CreateItemAtSelection  do
Text.Text:= DBEdit7.Text;
DBPlanner1.Items.DBItem.Update;
Query3.Close;
Query3.SQL.Clear;
Query3.SQL.Add('select cast(startime as time)');
Query3.SQL.Add('from registros.citas');
Query3.SQL.Add('where startime='+QuotedStr(DBEditQuery1.Text));
Query3.Open;
Query4.Close;
Query4.SQL.Clear;
Query4.SQL.Add('select cast(startime as date)');
Query4.SQL.Add('from registros.citas');
Query4.SQL.Add('where startime='+QuotedStr(DBEditQuery1.Text));
Query4.Open;
DataSourceCitas.DataSet.Edit;
DataSourceCitas.DataSet.FieldByName('nombre').AsString:= DBEdit7.Text;
DataSourceCitas.DataSet.FieldByName('prevision').AsString:= DBComboBox5.Text;
DataSourceCitas.DataSet.FieldByName('telefono').AsString:= DBEdit2.Text;
DataSourceCitas.DataSet.FieldByName('fechacita').AsString:= DBEdit6.Text;
DataSourceCitas.DataSet.FieldByName('horacita').AsString:= DBEdit4.Text;
DataSourceCitas.DataSet.Refresh;
end;

El error es el siguiente:

Sql error:ERROR:invalid input syntax for type timestamp:""

Estoy utilizando D2007, Zeos y PostgreSql. Startime es un campo de tipo timestamp.
El form corresponde a un TMSDBplanner.

Muchas gracias por su tiempo y ayuda
Responder Con Cita
  #2  
Antiguo 13-05-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pon un punto de ruptura (breakpoint) en query3.open y mira
lo que tiene almacenado query3.sql.text
Seguramente no recibe un valor correcto en quotedstr(dbeditquery1.text)
Responder Con Cita
  #3  
Antiguo 13-05-2010
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Concuerdo con Casimiro, seguramente la línea:
...where startime='+QuotedStr(DBEditQuery1.Text));

no tiene el formato correcto para un campo de tipo timestamp..

la posible solución sería utilizar parámetros, en lugar de meterel valor en la consulta.

la otra opción sería utilizar alguna función como formatdatetime...

saludos.
__________________

Responder Con Cita
  #4  
Antiguo 13-05-2010
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Muchas gracias Casimiro Notevi y ContraVeneno por sus aportes.
Voy a probar lo que me sugieren.
El valor del DBEditQuery1 se genera al hacer doble click en el TMSDBplanner, ya que cada espacio en él representa una fecha y una hora.

Salu2 y muchas gracias
Responder Con Cita
  #5  
Antiguo 14-05-2010
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Probé lo que Uds. me señalaron y descubrí que el código está correcto, pero al aplicar un filtro que sólo muestra los registros de la semana que se quiere ver en el TMSDBPlanner, por alguna razón modifica el valor del DBEditQuery1 y no permite leerlo.
Adjunto el código del filtro, que me fue enviado por la gente de soporte deTMS y que siempre me había funcionado, en este caso bloquea el programa y como no tengo idea que es lo que hace, a lo mejor Uds. me pueden señalar cómo corregirlo.
Este filtro evita que cuando la Tabla.Citas tenga demasiados registros se enlentezca la ejecución del programa.

Código Delphi [-]
procedure TCitaciones.DBDaySource1SetFilter(Sender: TObject);
var
sd1,sd2:string;
begin
sd1 := DateToStr(DBDaySource1.Day);
sd1 := #39+sd1+#39;
sd2 := DateToStr(DBDaySource1.Day+6);
sd2 := #39+sd2+#39;
TablaCitas.Filter:=  'Startime > '+sd1+' and Endtime < '+sd2;
TablaCitas.Filtered := True;
end;

Un gran saludo y muchas gracias por su ayuda
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
Porque este código me da error (adjunto código) David JAVA 1 12-03-2009 20:07:27
error en código? identsoft Varios 3 26-11-2007 13:37:32
Error en este código. FF funciona/IE da error papulo HTML, Javascript y otros 7 14-11-2007 09:44:23
Error en codigo Delar Varios 9 30-07-2007 23:41:06
error en el codigo pepelu1975 OOP 10 12-02-2004 13:01:03


La franja horaria es GMT +2. Ahora son las 04:46:53.


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