Ver Mensaje Individual
  #4  
Antiguo 27-01-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Suponte que validancontrol tiene el texto HU74832. Si examinas la sentencia SQL verás que queda así:

Código SQL [-]
Select ALU_NOM, ALU_SEM, ALU_ESP
From ":BDBECAS_BAJDEF: DATPERAL"
Where ALU_CTRL = HU74832

Lo cual es incorrecto por que faltan las comillas alrededor de HU74832. QuotedStr te pone esas comillas. Podrías hacerlo tú misma:

Código Delphi [-]
DataModuleBD.Query.SQL.Add('Where ALU_CTRL = "' + validancontrol.Text + '"');

pero termina siendo bastante ilegible tantas comillas. De hecho, lo mejor siempre que uses consultas donde el valor de un campo varíe, es usar parámetros:

Código Delphi [-]
DataModuleBD.Query.SQL.Clear;
DataModuleBD.Query.SQL.Add('Select ALU_NOM, ALU_SEM, ALU_ESP');
DataModuleBD.Query.SQL.Add('From ":BDBECAS_BAJDEF: DATPERAL"');
DataModuleBD.Query.SQL.Add('Where ALU_CTRL = :ctrl');
DataModuleBD.Query.SQL.Add(';');
DataModuleBD.Query.Open;

y sustituir el parámetro al momento de ejecutar la consulta:

Código Delphi [-]
DataModuleBD.Query.ParamByName('ctrl').AsString := validancontrol.Text;

Al usar AsString, ya le estás indicando que el parámetro es texto y se agregarán las comillas automáticamente. El uso de parámetros te deja un código mucho más prolijo y manejable.

// Saludos
Responder Con Cita