Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   ordenar base de datos (https://www.clubdelphi.com/foros/showthread.php?t=61875)

andres*** 25-11-2008 19:24:00

ordenar base de datos
 
hola

tengo una base de datos hecha en delhi 4
modelo
paciente fecha hora
a 12/12/2008 11:00
d 21/12/2008 11:35
c 22/12/2008 12:20

nesecito que me la ordene por fecha y por hora , me podrian ayudar
el de arriba seria como me tendria que quedar..


muchas gracias

Caral 25-11-2008 19:33:12

Hola
Código SQL [-]
Select * from TUTabla order bye TuTabla.Fecha, TuTabla.Hora ADS
No se me parece que tambien quieres ordenar al paciente.
Código SQL [-]
Select * from TUTabla order bye TuTabla.paciente, TuTabla.Fecha, TuTabla.Hora ADS
Saludos

Delphius 25-11-2008 19:36:35

Hola andres***,
Como te he dicho por mensaje privado: esto se puede hacer con una consulta SQL que tenga la clásula ORDER BY:

Código SQL [-]
SELECT nombre_campo1, nombre_campo2, nombre_campoN
FROM nombre_tabla
ORDERY BY nombre_campo_fecha, nombre_campo_hora

Por ejemplo, en tu caso sería algo:

Código SQL [-]
SELECT paciente, fecha, hora
FROM tabla_atencion_pacientes
ORDER BY fecha, hora

Sería mucho más sencillo si tienes un campo que sea fecha/hora, de este modo no tendrías que estar guardando los datos en forma seperada. Con un simple ORDER BY, el motor se encargaría de ordenarlos ascendentemente tanto por fecha y hora.

Si tienes problemas con la consulta SQL y/o no entiendes hazlo saber en este hilo.

Saludos,

andres*** 25-11-2008 19:44:08

tabla
 
como seria la tablita en sql?
no entiendo mucho
gracias

Caral 25-11-2008 19:52:31

Hola
Hay que tener en cuenta varias cosas.
1-La tabla
Esta pertenece a la base de datos, es la que contiene los datos
2-La consulta.
Lo que se hace con sql, osea se pide informacion (consultas), se añaden items, etc, a las tablas.
Lo que se te dio fue la manera de CONSULTAR por medio de SQL a una tabla, NO organizar la Tabla.
Saludos

Delphius 25-11-2008 19:57:25

Cita:

Empezado por andres*** (Mensaje 327903)
como seria la tablita en sql?
no entiendo mucho
gracias

¿Tablita en sql? ¿A qué te refieres?:confused:
Dices que tienes una base de datos, por tanto intuyo que tienes una tabla.
Partamos de algo fundamental: ¿Podrías decirnos que tanto sabes sobre bases de datos?

¿Que motor usas? ¿Que componentes empleas para acceder a la base de datos?

Cuando más nos puedas decir al respecto más te podremos ayudar.

Saludos,

andres*** 25-11-2008 20:12:01

entiendo algo de bases de datos

lo que hice fue armar un formulario
poberle un componente table mas un data source
base de datos elegi dbase IV
y tengo la table mostrada en un db grid
y necesito que en el db grid me salga ordenada por fecha y dentro de ese orden tambien por hora..

disculpen si no me expreso bien..
gracias por ayudarme

Delphius 25-11-2008 20:24:39

OK. Ahora entiendo. Bueno... si puedes emplear algo más "moderno" sería mejor, dBase como que está un tanto obsoleto.

Como tienes un TTable en vez del TQuery, puedes hacer uso de la propiedad IndexName, IndexFieldNames. Con estas propiedades puedes alterar el índice para la base de datos y obtener los datos ordenados. Siempre y cuando tengas un índice para el campo fecha y hora podrás realizar lo que deseas.

El mayor problema que tienes es que guardas la fecha y la hora por separado. Va a ser necesario tenerlos en uno sólo (es decir campo fecha/hora) para conseguir ordenarlos por fecha y hora.

Si en vez de emplear el TTable usaras un TQuery es posible lanzar las consultas SQL como indicamos anteriormente.

Sugiero que leas la ayuda sobre las propiedades que te mencioné, sobre los componentes. Además no está demás una leida a material tanto teórico como práctico sobre Delphi y bases de datos. En el FTP y el wiki del club hay material.

Saludos,

Lepe 26-11-2008 09:25:02

andres, vamos a pillar al toro por los cuernos ;).

En la paleta BDE de delphi, haz clic sobre el componente TQuery y ponlo en tu ventana.

En la propiedad DatabaseName, elige donde tienes tu base de datos. Si has creado un "alias" en el Database Desktop, entonces usa la propiedad AliasName y elígelo de la lista (si esto te suena a chino, entonces usa la propiedad DatabaseName).

Ahora busca la propiedad SQL y haz clic en los 3 puntitos, escribe esto en esa ventana:
Código SQL [-]
SELECT paciente, fecha, hora
FROM tabla_atencion_pacientes
ORDER BY fecha, hora, paciente
Nota: tabla_atencion_pacientes tienes que sustituirlo por el nombre real de tu tabla, lo puedes deducir del TTable que tienes, en su propiedad Tablename vendrá algo así: "Pacientes.DB" (la extensión .DB no hace falta que la pongas), por tanto tu tabla se llama pacientes.

Pon en esa ventana un TDatasource desde la pestaña "Data Access" se llamará Datasource1, en su propiedad Dataset, elige Query1.
En la propiedad Datasource del dbgrid elige el Datasource1 (con esto estamos ligando la consulta al grid para ver los resultados).

En el FormCreate de esa ventana, escribe:
Código Delphi [-]
query1.Open

Listo !!

Cuando ejecutes tu programa, ya tendrás ordenado por fecha, después por hora y después por Nombre alfabético de los pacientes.

¿Lo ves ahora más fácil? No era para tanto ¿verdad? Bien, pues ahora te toca a tí buscar un buen manual de SQL (que los hay a patadas en internet) y mirar cómo puedes ordenar descendentemente los datos, agrupar información para sacar totales, etc.

Saludos

Saludos.

andres*** 26-11-2008 20:00:52

muchisimas gracias a todos los que me bancaron he solucionado el problema del orden por fecha y por hora

andres*** 28-11-2008 22:53:28

hola
tengo un problema, cuando imprimo un report en vez de salirme la primer hoja impresa, me sale la primera en blanco y la segunda con la impresion

yo pongo

form x .quickrep1.peview

y cuando me tira la vista preliminar del fornmulario , mando a imprimir

hay alguna otra forma de imprimir un formulario?

gracias

Lepe 29-11-2008 02:34:02

Puedes obviar la presentación preliminar y enviar a imprimir, pero el resultado va a ser el mismo.

mira con detalle (si lo has tocado o no usas un A4) el tamaño de página, los márgenes y posiblemente una banda de detalle muy grande.

Saludos

andres*** 16-12-2008 19:32:56

buenaas

nesecito saber como puedo depurar desde una fecha hasta otra los datos de una tabla

Delphius 16-12-2008 19:46:33

Cita:

Empezado por andres*** (Mensaje 331171)
buenaas

nesecito saber como puedo depurar desde una fecha hasta otra los datos de una tabla

¿Depurar?:confused:
¿Podrías ser más descriptivo?

¿Que componentes estás empleado? ¿Sigues con los Tables o estás haciendo uso de Querys.?

Saludos,

andres*** 16-12-2008 19:53:46

perdon.

necesito poner dos fechas y que todos los datos que esten entre esas fechas se borren de la tabla .

yo tengo una tabla a la que le cargo turnos
y para que no jodan los turnos de los dias pasados a la fecha queria saber como puedo hacer para borrarlos

me explico.

saludos

Caral 16-12-2008 20:04:17

Hola
Y eso no se hace con un asentencia sql con Betwin (o lo que es lo mismo entre en spanglish) o poniendo los rangos >= y <= .
No se digo yo.
Saludos

Delphius 16-12-2008 20:13:52

Como bien lo ha dicho Carlos,
Si se hace mediante SQL, y por tanto de Querys, hay dos opciones:
1. Poner en la parte where una condición del tipo (fecha >= fechaIni) and (Fecha <= fechaFin)
2. Poner en la parte where la instrucción bettwen.

Es un tema ya muy ampliamente tratado y si buscas en los foros hallarás muchos hilos en donde hay ejemplos. Prueba con palabras claves como rango fecha, bettwen.

Si se emplea un Table no queda otra opción que emplear Filtro y poner una condición como la señalada en el punto 1. Nuevamente debo mencionar, sin ofender, que el tema de filtros también fue tratado.

Por algo he dicho que mencionaras que componentes usas. Dependiendo de cual uses se realiza el trabajo.

Saludos,

Saludos

andres*** 16-12-2008 20:22:34

yo lo que quiero es eliminar los datos que cargue en la base de datos, entre una fecha y otra ,no se si me explico.

Delphius 16-12-2008 20:32:40

Cita:

Empezado por andres*** (Mensaje 331199)
yo lo que quiero es eliminar los datos que cargue en la base de datos, entre una fecha y otra ,no se si me explico.

Ahora si, no es lo mismo mostrar datos que eliminarlos.

No es por ser pedante, pero si supieramos, si nos contases de que modo estás trabajando sería más fácil para ti entender nuestros ejemplos. Por algo te estoy pidiendo que nos comentes sonre que componentes empleas.
Para mi es mucho más fácil, directo, económico, y fiable lanzar una instrucción SQL como esta:

Código SQL [-]
DELETE FROM LA_TABLA
WHERE Fecha between FechaIni and FechaFinal

O algo similar.

Saludos,

andres*** 07-01-2009 21:13:02

buenas tardes....

tengo un problema en el programa que arme con la ayuda de ustedes,
no puedo hacer que me filtre x medico y a la vez por dia.
la sentencia que puse es la siguiente:

procedure TIngresoturnos.SpeedButton3Click(Sender: TObject);
begin

query1.active:=true;
query1.filter:= ComboBox1.TEXT + ' ='+ quotedstr(DBLookupComboBox1.TEXT + '*');
query1.filtered:=true;
dbgrid1.visible:=false;
dbgrid2.visible:=true;
QUERY1.filter:= 'FECHA=' + quotedstr(FORMATDATeTIME('dd/mm/yyyy',datetimepicker2.date));
end;
tendra alguna solucion gracias


La franja horaria es GMT +2. Ahora son las 01:57:55.

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