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