Ir al contenido


Foto

Problema con sintaxis de una sentencia con delphi


  • Por favor identifícate para responder
5 respuestas en este tema

#1 Fleon

Fleon

    Advanced Member

  • Miembros
  • PipPipPip
  • 172 mensajes
  • LocationRepública Dominicana

Escrito 09 enero 2009 - 01:00

Hola, tengo esta sentencia en delphi:



delphi
  1. ADOQuery1.SQL.Text := 'SELECT * FROM ctas_gral WHERE fecha_reg BETWEEN '+edPeriodo.Text+'-01-01' AND '+edPeriodo.Text+'-02-01'';



Pero me da error,

[Error] ConsCuenta.pas(130): Operator not applicable to this operand type


¿A qué se debe eso, le falta algo?

Fleon xD
  • 0

#2 Caral

Caral

    Advanced Member

  • Administrador
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 09 enero 2009 - 01:06

Hola
Creo que es por esto:


delphi
  1. ADOQuery1.SQL.Text := 'SELECT * FROM ctas_gral WHERE fecha_reg BETWEEN '+StrToDate(edPeriodo.Text)+'-01-01' AND '+StrToDate(edPeriodo.Text)+'-02-01'';


Pero seria mejor que lo hicieras con parametros:


delphi
  1. ADOQuery1.SQL.Text := 'SELECT * FROM ctas_gral WHERE fecha_reg BETWEEN :Dato1 -01-01 AND :Dato2 -02-01'';


No entiendo el por que de los numeros siguientes?.
Saludos
  • 0

#3 Fleon

Fleon

    Advanced Member

  • Miembros
  • PipPipPip
  • 172 mensajes
  • LocationRepública Dominicana

Escrito 09 enero 2009 - 01:26

No entiendo el por que de los numeros siguientes?.
Saludos


Hola, los números siguientes son Mes y día, en MySQL el formato de fecha es Año-Mes-Día (yyyy-mm-dd), y edPeriodo es donde el usuario colocará el año, ¿Y cómo es eso de Parámetros?, de todos modos pude solucionar el problema, y era que le faltaba más comillas:



delphi
  1. ADOQuery1.SQL.Text := 'SELECT * FROM ctas_gral WHERE fecha_reg BETWEEN '''+edPeriodo.Text+'-01-01'' AND '''+edPeriodo.Text+'-02-01''';



Fleon xD
  • 0

#4 Caral

Caral

    Advanced Member

  • Administrador
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 09 enero 2009 - 01:33

Hola
No estoy muy claro, pero creo que seria asi:


delphi
  1. ADOQuery1.SQL.Text := 'SELECT * FROM ctas_gral WHERE fecha_reg BETWEEN :Dato1 AND :Dato2 ';
  2. ADOQuery1.Paremeters[0].Value:= edPeriodo.Text +'-01-01';
  3. ADOQuery1.Paremeters[1].Value:= edPeriodo.Text +'-02-01';


Saludos
  • 0

#5 eduarcol

eduarcol

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.483 mensajes
  • LocationVenezuela

Escrito 09 enero 2009 - 03:05

creo que el problema es de comillas:



delphi
  1. ADOQuery1.SQL.Text := 'SELECT * FROM ctas_gral WHERE fecha_reg BETWEEN ' + edPeriodo.Text + '-01-01' + ' AND ' + edPeriodo.Text + '-02-01';



prueba eso y me avisas, pero creo que vas a tener que utilizar quotedstr
  • 0

#6 Fleon

Fleon

    Advanced Member

  • Miembros
  • PipPipPip
  • 172 mensajes
  • LocationRepública Dominicana

Escrito 09 enero 2009 - 04:19

Muchas gracias Eduarcol, también me funciona ;) (y).

Fleon xD
  • 0