Jump to content


Photo

Problema con sintaxis de una sentencia con delphi


  • Please log in to reply
5 replies to this topic

#1 Fleon

Fleon

    Advanced Member

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

Posted 09 January 2009 - 01:00 PM

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

  • Moderador
  • PipPipPip
  • 4266 posts
  • LocationCosta Rica

Posted 09 January 2009 - 01:06 PM

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 posts
  • LocationRepública Dominicana

Posted 09 January 2009 - 01:26 PM

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

  • Moderador
  • PipPipPip
  • 4266 posts
  • LocationCosta Rica

Posted 09 January 2009 - 01:33 PM

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

  • Administrador
  • 4483 posts
  • LocationVenezuela

Posted 09 January 2009 - 03:05 PM

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 posts
  • LocationRepública Dominicana

Posted 09 January 2009 - 04:19 PM

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

Fleon xD
  • 0




IP.Board spam blocked by CleanTalk.