![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
![]() nesesito generar una instruccion SQL de la siguiente forma:
Select * from tabla Where tabla.mes <= '12'; Pasa que el mes se ingresa por un Edit, Si coloco Query.Sql.Add('Select * from tabla Where tabla.mes <= '+Edit1.text+';') el resultado seria Select * from tabla Where tabla.mes <= 12; Sin las comillas en el 12 y si coloco Query.Sql.Add('Select * from tabla Where tabla.mes <= ''+Edit1.text+'';') el resultado seria Select * from tabla Where tabla.mes <= '+Edit1.text+'; En vez del Text que tiene el Edit1 coloca "Edit1.text" ¿Que hago? Exitos Gracias |
#2
|
|||
|
|||
Si el campo mes es de tipo numérico, no hace falta que pongas comillas. Si es de tipo String, o Char, o Varchar ... entonces la función de Delphi QuotedStr evita quebraderos de cabeza:
Query1.SQL.Add ('Select * from tabla Where tabla.mes <= ' + QuotedStr (Edit1.text));
__________________
Guía de Estilo |
#3
|
|||
|
|||
Ya la implemente de la siguiente manera:
Query.Sql.Add('Select * from tabla Where tabla.mes <= '+chr(39)+Edit1.text+chr(39)+';') ensaye el QuotedStr y funciona tambien. Gracias Exitos |
#4
|
||||
|
||||
No te recomiendo el del Chr(39), mas por una cuestión personal que por otra cosa, tenés que saber que Chr es una función y estas usando una función de System para crear un caracter, el compilador de Delphi es bastante inteligente y comprende que esta función puede ser cambiada por una constante (#39), pero no debemos abusar de las bondades del compilador, creo que es mucho mas prolijo definirlas como constantes (Insisto que es una opinión personal).
De todos modos te recomiendo utilizar la función QuotedStr, porque si el text del Edit1 contiene un #39, QuotedStr las duplica y evita errores. Probá esto y vas a ver que falla Código:
Edit1.text := 'Juan D''Arienzo'; Query.Sql.Add('Select * from tabla Where tabla.mes <= '#39 + Edit1.text + #39';') Código:
Query.Sql.Add('Select * from tabla Where tabla.mes <= ''' + Edit1.text + ''';') Código:
Edit1.text := 'Juan D''Arienzo'; Query.Sql.Add('Select * from tabla Where tabla.mes <= ' + QuotedStr(Edit1.text) + ';')
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. ![]() Última edición por delphi.com.ar fecha: 19-06-2003 a las 21:59:13. |
#5
|
|||
|
|||
![]() Otra manera de pasarle los valores a un TQuery es de la siguiente manera:
Query.Active:=False; Query.Sql.Add('Select * from tabla Where tabla.mes <= :MES '); ParamByName('MES').AsString:= Edit1.text ; Query.Active:=True; De esta manera puedes pasar parametros sin problemas de comillas, etc. En el caso de que el mes fuera numérico solo cambiarias la asignación al parametro: ParamByName('MES').AsInteger:= strtoint(Edit1.text); Saludos!! |
#6
|
|||
|
|||
Todo lo que te dicen está bien, supongo, pero el fallo que tenías era en:
Query.Sql.Add('Select * from tabla Where tabla.mes <= ''+Edit1.text+'';') que en una cadena, para indicar un caracter comilla simple (') debes poner dos (como ocurre en c con la barra /, creo recordar) Luego tu linea quedaría como: Query.Sql.Add('Select * from tabla Where tabla.mes <= '''+Edit1.text+''';') así de sencillo. Ahora, si me dejas indicarte algo, prefiero que uses lo que dice emili de usar parámetros. Y si en vez de estar creandolas al vuelo, lo pegas en un datamodule, mejor que mejor (menos trabajo) y si encima te dejas cambiar la query una y otra vez para usarla para distintas consultas, mucho mejor (sobre todo para tí, para mantener el código). |
#7
|
||||
|
||||
Lo que te recomienda emili, es lo que te había recomendado anteriormente
Cita:
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. ![]() |
#8
|
|||
|
|||
![]() Cierto, la recomendación de los parámetros fue de delphi.com.ar...
nada, como esto es curro de equipo: Recuerda, Bacterion ecomienda que sigas (con matices) la explicación de Emili de la sugerencia de delphi.com.ar |
#9
|
|||
|
|||
problema delphi
hola muy buenas noches tengo un problema con este tema del manejo del QoutedStr
el caso es el siguiente estoy tratando de convertir los datos varchar qryRepoDetailExc.sql.Add(' QuotedStr (grado_ultima_inscripcion) ,'); me marca error quisiera saber si la sintaxis es correcta ojala y me puedan ayudar esto me tiene de cabeza... saludos.... |
#10
|
||||
|
||||
Cita:
Si no me equivoco mejor así...
Saludos
__________________
Be water my friend. |
#11
|
|||
|
|||
error delphi quotedStr
hola buena tarde hice algunas pruebas y me sigue marcando error
....... qryRepoDetailExc.sql.Add('nvl(c.c_semestre, 0))) as grado_autorizado,'); qryRepoDetailExc.sql.Add(QuotedStr (grado_ultima_inscripcion)+','); <--------- marca error en esta linea qryRepoDetailExc.sql.Add(' 0 AÑO_ultima_inscripcion,'); ... ojala y me puedan ayudar gracias saludoss |
#12
|
||||
|
||||
Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo, gracias por tu colaboración
![]() Y recuerda poner los tags al código fuente, ejemplo: ![]() Gracias ![]() Además, explica mejor el problema, dices que sale un error y no nos has copiado el mismo, no somos adivinos ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#13
|
|||
|
|||
Una disculpa por no explicar mas estoy utilizando QuotedStr pero al momento de correr el programa me marca error
es un qry que estoy armando en la primera parte del codigo lo tengo asi qryRepoDetailExc.sql.Add('gg.descripcion Grado_Ultima_Inscripcion,'); de aqui lo obtengo qryRepoDetailExc.sql.Add('padron.grado_escolar gg'); es de tipo varchar esta parte esta en el union
agregue algunas lineas mas de código para ver si necesita paréntesis o comillas, mi problema creo q es de sintaxis me marca este error [Error] fCapturaE2.pas(3544): Undeclared identifier: 'grado_ultima_inscripcion' saludos |
#14
|
||||
|
||||
Bien, ¿y existe grado_ultima_inscripcion?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
![]() |
|
|
![]() |
|