Page 1 of 1

Consulta SQL con variables

Posted: Sat Nov 10, 2012 6:03 pm
by mariordz
Buenos días amigos del foro, tengo una pequñq duda con estas sentencias:

Code: Select all

cSql="SELECT campo1,campo2,campo3,campo4 FROM TABLA where (campo1='10') and (campo2='2012')"

Code: Select all

cSql:="SELECT campo1,campo2,campo3,campo4 FROM TABLA where (campo1='"+cmon+"') and (campo2='"+cyea+"')"
Ambas sentencias me dan una cadena de texto iguales, pero al mandar la segunda consulta me manda un error, seguramente debe haber una manera de construir la consulta con datos variables, espero alguien me pueda decir como.

Muchas gracias

Re: Consulta SQL con variables

Posted: Sat Nov 10, 2012 6:32 pm
by Rick Lipkin
Try your Sql statement this way without the Parenthesis and spaces between the equal signs.

Code: Select all

cSql := "SELECT campo1,campo2,campo3,campo4 From TABLA "
cSql += "Where campo1 = '"+cmon+"' and campo2 = '"+cyea+"'"
 
Rick Lipkin

Re: Consulta SQL con variables (SOLVED)

Posted: Mon Nov 12, 2012 5:14 pm
by mariordz
Thank you very much, it works great

Re: Consulta SQL con variables (SOLVED)

Posted: Mon Nov 12, 2012 5:56 pm
by wmormar
mariordz,

hazlo asi.

cSql:="SELECT campo1,campo2,campo3,campo4 FROM TABLA where campo1='"+alltrim(cstr(cmon))+"' and campo2='"+alltrim(cstr(cyea))+"'"


pensando que le pases mes y año de cualquier tipo (numerico o caracter)

Re: Consulta SQL con variables

Posted: Mon Nov 12, 2012 6:36 pm
by mariordz
Rick / William

Thanks for your help, both examples work just fine. Appreciate the help

Gracias por su ayuda, los dos ejemplos funcionan bien. Agradezco la ayuda.

Best regards / Saludos

Re: Consulta SQL con variables

Posted: Mon Nov 12, 2012 11:05 pm
by carlos vargas
hay una funcion llamada strformat que tiene argumentos como esto
StrFormat( cString, cPar1, cPar2,....,cpar9 )

donde cString puede ser "Hola %1, esta es %2 prueba de un %3 en una 4%"
%1 es reempalzado por cPar1
%2 es reempalzado por cPar2
...
%9 es reempalzado por cPar9

esto me sirve para la construccion de instrucciones sql reemplazando los valores.

Code: Select all

cSql := "SELECT campo1,campo2,campo3,campo4 FROM TABLA where (campo1=%1) and (campo2=%2)"
cSql := strformat( cSql, Var2Str( 10 ), var2Str( 2012 ) )
?cSql

 

Code: Select all


FUNCTION Var2Str( xValue )
   LOCAL cValue := "''"

   DO CASE
   CASE HB_IsString( xValue )
      cValue := "'" + xValue + "'"
   CASE HB_IsNumeric( xValue )
      cValue := AllTrim( CStr( xValue ) )
   CASE HB_IsLogical( xValue )
      cValue := IIf( xValue, 'True', 'False' )
   CASE HB_IsDate( xValue )
      cValue := "'" + DToC( xValue ) + "'"
   CASE HB_IsDateTime( xValue )
      cValue := "'" + TToC( xValue ) + "'"
   ENDCASE

RETURN cValue