Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-07-2014
Leopard2 Leopard2 is offline
Miembro
NULL
 
Registrado: may 2012
Posts: 39
Poder: 0
Leopard2 Va por buen camino
Consulta principiante por sintaxis

Hola, trabajo con Delphi 7 y Firebird 2.5 con componentes IBX, mi consulta es que necesito listar de una base solo los registros que digan activo = S, si lo hago directamente en la propiedad EditSql del Query me funciona :

Código SQL [-]
select * from BODEGA Where activo = 'S'

Si trato de hacerlo en tiempo de ejecución no me deja por la sintaxis de las dobles cremillas :

Código SQL [-]
    with Query1 do
      begin
            Close;
            SQL.Clear;
            SQL.Add('select * from Bodega');
            SQL.Add('Where Activo = 'S' ');
            Open;
      end;

Si la paso como parametro me funciona pero me gustaría saber cual seria la sintaxis para comparar campos String :

Código SQL [-]
    with Query1 do
      begin
            Close;
            SQL.Clear;
            SQL.Add('select * from Bodega');
            SQL.Add('Where Activo = :Variable');
            ParamByName('Variable').AsString := 'S';
            Open;
      end;

Saludos
Responder Con Cita
  #2  
Antiguo 24-07-2014
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por Leopard2 Ver Mensaje
Si la paso como parametro me funciona pero me gustaría saber cual seria la sintaxis para comparar campos String
Hola Leopard2.

Usando doble comilla sencilla por cada comilla literal de la expresión String. Ejemplo:
Código Delphi [-]
Query1.SQL.Text := 'Select * From Bodega Where Activo = ''S''';
Query1.Open;
Por otra parte, observa que la asignación a SQL.Text es equivalente a Close+Clear+Add. Así te ahorras un poco de código.
Responder Con Cita
  #3  
Antiguo 24-07-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Puedes poner la comilla 'entre comillas' o puedes usar QuotedStr
Código Delphi [-]
SQL.Add("where activo="+QuotedStr(S));
De todas formas, la versión con parámetros es la mejor opción.

EDITO: ha contestado Al González.
Responder Con Cita
  #4  
Antiguo 24-07-2014
Leopard2 Leopard2 is offline
Miembro
NULL
 
Registrado: may 2012
Posts: 39
Poder: 0
Leopard2 Va por buen camino
Ok. gracias por las repuestas.
saludos
Responder Con Cita
  #5  
Antiguo 25-07-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Estupendo que te hayan servido las respuestas.


Por cierto, para otras ocasiones, no olvides poner un título descriptivo a tus preguntas, "Consulta principiante por sintaxis" no describe nada, no sirve para que otras personas con la misma duda pueda hacer una búsqueda y encontrar la solución a sus dudas.
Gracias por tu colaboración
Responder Con Cita
  #6  
Antiguo 25-07-2014
adrall adrall is offline
Miembro
 
Registrado: ene 2007
Posts: 94
Poder: 18
adrall Va por buen camino
Yo acostumbro a usar este sencillo codigo para verificar lo realmente enviado al TQuery. Despues de la comprobación elimino la linea y listo.

Código Delphi [-]
ShowMessage(TQuery.SQL.Text); 
TQuery.Open;
Responder Con Cita
  #7  
Antiguo 25-07-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Esa "técnica" es heredada de la época en que los lenguajes, compiladores, IDE.. no tenían depuradores, normalmente ocurría con el lenguaje Basic, que era interpretado.
Con delphi no necesitas escribir ese código y luego quitarlo, solamente debes usar el depurador, deteniéndote en esa línea.
Responder Con Cita
  #8  
Antiguo 25-07-2014
adrall adrall is offline
Miembro
 
Registrado: ene 2007
Posts: 94
Poder: 18
adrall Va por buen camino
Si, tienes razón, pero cuando tienes instalados componentes comerciales tipo, FastReport, Devart, etc. y usas el depurador, desconozco por que motivo, aparecen pantallazos pidiendo la ubicación de determinado fichero fuente del que obviamente no dispones y no puedes continuar la depuración. No entiendo porqué, ya que el codigo que estas depurando "teoricamente" no utiliza ese código... así que me he acostumbrado a utilizar minimamente el depurador.

Saludos
Responder Con Cita
  #9  
Antiguo 25-07-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hay una opción en la configuración del depurador, para que no entre en esos módulos.
Búscalo en la configuración del delphi que tengas.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consulta de principiante por Transactions Leopard2 Conexión con bases de datos 4 15-03-2014 18:11:38
de un principiante dtomeysoto MySQL 1 02-04-2008 16:11:42
Principiante krloz99 Varios 3 08-06-2007 15:59:30
Consulta sobre sintaxis de gbak Patricio Conexión con bases de datos 1 17-04-2007 01:09:40
Problemas tratando de conformar la sintaxis de una consulta SQL andre navarrete Conexión con bases de datos 11 07-09-2006 01:07:23


La franja horaria es GMT +2. Ahora son las 04:36:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi