Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-08-2011
cvlaso77 cvlaso77 is offline
Miembro
NULL
 
Registrado: ago 2011
Posts: 14
Poder: 0
cvlaso77 Va por buen camino
Por favor ayuda con comando Select

Hola
Tengo una tabla con los campos NOMBRES, APELLIDOS, RUT,ESPECIALIDAD, STD ATENCION y otros

teniendo insertado el query1 uso este codigo para el select que lo activo desde un boton.


Datasource1.Dataset := Query1;
Query1.SQL.Clear;
Query1.Active := False ;

With Query1.Sql Do
Begin
Clear ;
Add('SELECT APELLIDOS,NOMBRES,RUT,ESPECIALIDAD,STD ATENCION');
Add('FROM "BD HRS ATENCION.DB"');
Query1.Active := True ;

No se porque funciona ok sin el último campo, STD ATENCION
revisé el nombre del campo en la tabla y es correcto
cambié el orden de los campos y siempre tengo el problema cuando agrego el quinto campo
habrá alguna limitante del número de campos en alguna parte, no lo encontré

Me da el error 'Invalid filename STD' process.....

Gracias a los que lean esta consulta
cvlaso
Responder Con Cita
  #2  
Antiguo 04-08-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
A ver si me entiendes esta frase:
Tratadeentederesto ??????.
Verdad que es dificil, bueno, eso es lo que te pasa con el codigo.
Cuando usas ADD estas añadiendo y se hace seguido.
Este es tu codigo:
Código Delphi [-]
Datasource1.Dataset := Query1;
 Query1.SQL.Clear;
 Query1.Active := False ;

 With Query1.Sql Do
 Begin
 Clear ;
 Add('SELECT APELLIDOS,NOMBRES,RUT,ESPECIALIDAD,STD ATENCION');
 Add('FROM "BD HRS ATENCION.DB"');
 Query1.Active := True ;
Ahora mira la diferencia:
Código Delphi [-]
Datasource1.Dataset := Query1;
 Query1.SQL.Clear;
 Query1.Active := False ;

 With Query1.Sql Do
 Begin
 Clear ;
 Add(' SELECT APELLIDOS, NOMBRES, RUT, ESPECIALIDAD, STD ATENCION ');
 Add(' FROM "BD HRS ATENCION.DB"');
 Query1.Active := True ;
La ves?.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 04-08-2011
Loviedo Loviedo is offline
Miembro
 
Registrado: dic 2004
Posts: 214
Poder: 0
Loviedo cantidad desconocida en este momento
No creo que ese sea el problema, utilizo la la primera sintaxis, es decir, sin agregar espacios y siempre me ha funcionado.
Puedes comprobar el texto de la consulta con
Código Delphi [-]
Query1.SQL.Text;
A lo mejor el problema viene dado por el nombre del campo formado por dos palabras, es la primera vez que lo veo. Siempre lo vi así: std_Atencion.
Saludos.
Responder Con Cita
  #4  
Antiguo 04-08-2011
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Si el campo tiene espacios, debe encerrarse entre unos delimitadores. Normalmente es entre comillas dobles o corchetes, algo así: "STD ATENCION" o bien [STD ATENCION]

... amos, igual que has hecho con el nombre de la tabla que también lleva espacios.


Si usas el espacio tal cual, el SQL cree que es un alias, es decir, el sql cree que la columna llamada STD ahora pasa a llamarse ATENCION.

en cuanto al código, yo lo veo más simple y claro así, pero es cuestión de gustos:
Código Delphi [-]
Query1.Active := False ;
Query1.Sql.Text:= 
'SELECT APELLIDOS,NOMBRES,RUT,ESPECIALIDAD,STD ATENCION' +
'FROM "BD HRS ATENCION.DB"';
Query1.Active := True ;

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 04-08-2011
cvlaso77 cvlaso77 is offline
Miembro
NULL
 
Registrado: ago 2011
Posts: 14
Poder: 0
cvlaso77 Va por buen camino
Gracias por la ayuda a todos

Amigos Primero muchas gracias por sus rápidas respuestas, yo soy de la década de los 80 donde programábamos en turbopascal con el DEC2020 de la Univ. En esos días habían pocos a quien hacerles consultas. Me parece genial esto de los foros y post. Los felicito por su dedicación y muchas gracias.Perdón por la lata.
Al grano Uno de mis problemas era que tenia 2 tablas en distintas carpetas, una en: C:\Documents and Settings\cvl\Escritorio\PRY_CDT_0Y otra en: C:\Archivos de programa\Archivos comunes\Borland Shared\Data, esto por que en algún momento el compilador me reclamó que no existía la tabla y la copie a esa carpeta.
Pregunta. ¿ Alguien me puede decir como reasigno la ruta para no tener que usar un FROM tan largo? Gracias.
Después de arreglar la ruta de la tabla…Lo que me resultó de las mil y unas pruebas :La rutina que me funciona ok,con todos los campos es :
Código Delphi [-]
  Datasource1.Dataset := Query1;Query1.SQL.Clear;
  Query1.Active := False ;
  With Query1.Sql DoBeginClear ;
  Add('SELECT DISTINCT ESPECIALIDAD,DIA_SEMANA,STD_ATENCION,NOMBRES,APELLIDOS');
  Add ('FROM "C:\Documents and Settings\cvl\Escritorio\PRY_CDT_0\BD HRS ATENCION.DB"')
end ;
Query1.Active := True ;
Los nombres de los campos con espacios en blanco le dan problemas al compilador, y aparece el mensaje de error. Cuando pongo el campo entre “comillas” dobles la tabla de resultado repite este dato en toda la columna y no carga los datos.
Los add no son problema me funcionan ok. Mi trabajo consiste en hacer un programa para filtrar una base de datos de un hospital. Igual por si a alguien le sirve transcribo la rutina completa en la que he parametrizado los datos del Select para ejecutarlo a partir de unos listbox que he creado, con los onclick de los listbox le paso los strings a los Edit.text y luego ejecuto el query.
Esto que transcribo lo probé y funciona super okSolo me falta parametrizar la opción ascendente descendente.
Código Delphi [-]
  With Query1.Sql Do
  Begin
  Clear ;
   Add('SELECT DISTINCT '+Edit1.text+'');
  Add ('FROM "C:\Documents and Settings\cvl\Escritorio\PRY_CDT_0\BD HRS ATENCION.DB"');
  Add('WHERE');Add(' ( '+Edit3.text+' = "'+Edit4.text+'") ');
  Add('ORDER BY '+Edit2.text+' ASC');
end ;
Como soy nuevo en el foro por favor díganme si vale subir después como post esta rutina con la opción (asc, des), completa, igual no se si se hace de la misma manera que cuando un pregunta algo.

Muchas Gracias a todos Saludos

Última edición por ecfisa fecha: 04-08-2011 a las 18:12:04. Razón: Etiquetas [DELPHI] [/DELPHI]
Responder Con Cita
  #6  
Antiguo 04-08-2011
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Bienvenido a los foros de Club Delphi, te recomiendo que le des una leida a la Guía de Estilo.

Otra cosa, cuando publiques código fuente en Delphi, usa las etiquetas delphi:

[delphi]
begin
ProcedimientoAEjecutar;
Variable := 'hola mundo';
// ejemplo
end;
[/delphi]

lo que se mostrará en los foros así:

Código Delphi [-]
begin
  ProcedimientoAEjecutar;
  Variable := 'hola mundo';
  // ejemplo
end;


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #7  
Antiguo 04-08-2011
cvlaso77 cvlaso77 is offline
Miembro
NULL
 
Registrado: ago 2011
Posts: 14
Poder: 0
cvlaso77 Va por buen camino
Nueva respuesta ordenada

Disculpen al hacer un copi desde el word se juntaron todos los caracteres
aca va de nuevo ordenado
Amigos
Primer muchas gracias por sus rápidas respuestas
Yo soy de la década de los 80 donde programábamos en turbopascal con el DEC2020 de la Univ. En esos días habían pocos a quien hacerles consultas. Me parece genial esto de los foros y post. Los felicito por su dedicación y muchas gracias.
Perdón por la lata.
Al grano
Uno de mis problemas era que tenia 2 tablas en distintas carpetas
Una en, C:\Documents and Settings\cvl\Escritorio\PRY_CDT_0
Y otra en, C:\Archivos de programa\Archivos comunes\Borland Shared\Data, esto por que en algún momento el compilador me reclamó que no existía la tabla y la copie a esa carpeta.
Pregunta. Alguien me puede como reasigno la ruta para no tener que usar un FROM tan largo, gracias
Después de arreglar la ruta de la tabla…
Lo que me resultó de las mil y unas pruebas :
La rutina que me funciona ok,con todos los campos es :

Datasource1.Dataset := Query1;
Query1.SQL.Clear;
Query1.Active := False ;
With Query1.Sql Do
Begin
Clear ;
Add('SELECT DISTINCT ESPECIALIDAD,DIA_SEMANA,STD_ATENCION,NOMBRES,APELLIDOS');
Add ('FROM "C:\Documents and Settings\cvl\Escritorio\PRY_CDT_0\BD HRS ATENCION.DB"')
End ;
Query1.Active := True ;

Los nombres de los campos con espacios en blanco le dan problemas al compilador, y aparece el mensaje de error.
Cuando pongo el campo entre “comillas” dobles la tabla de resultado repite este dato en toda la columna y no carga los datos.
Los add no son problema me funcionan ok.

Mi trabajo consiste en hacer un programa para filtrar una base de datos de un hospital.
Igual por si a alguien le sirve transcribo la rutina completa en la que he parametrizado los datos del Select para ejecutarlo a partir de unos listbox que he creado, con los onclick de los listbox le paso los strings a los Edit.text y luego ejecuto el query.
Esto que transcribo lo probé y funciona super ok
Solo me falta parametrizar la opción ascendente descendente.

With Query1.Sql Do
Begin
Clear ;
Add('SELECT DISTINCT '+Edit1.text+'');
Add ('FROM "C:\Documents and Settings\cvl\Escritorio\PRY_CDT_0\BD HRS ATENCION.DB"');
Add('WHERE');
Add(' ( '+Edit3.text+' = "'+Edit4.text+'") ');
Add('ORDER BY '+Edit2.text+' ASC');
End ;
Como soy nuevo en el foro por favor díganme si vale subir después como post esta rutina con la opción (asc, des), completa, igual no se si se hace de la misma manera que cuando un pregunta algo..
Muchas Gracias a todos
Saludos

Responder Con Cita
  #8  
Antiguo 04-08-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola cvlaso77.

Me tomé la licencia de corregir el texto original de tu mensaje ya que era muy difícil de interpretar.

Por favor lee el uso de las etiquetas para encerrar tu código.

Saludos y gracias por tu colaboración.

Nota: lamento el retraso en los mensajes pero tengo problemas de conexión.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



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
Ayuda por favor Nigth Varios 1 11-11-2008 14:20:48
Ayuda por favor... BuRtOn Varios 62 07-03-2008 03:21:25
Ayuda con el msn por favor soler Varios 25 27-02-2008 22:20:23
Por favor ayuda con select, es de vital importancia manolop Firebird e Interbase 8 19-05-2005 16:51:47
Ayuda por favor yusnerqui Internet 8 23-04-2004 09:26:43


La franja horaria es GMT +2. Ahora son las 10:24:46.


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