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 |
|
Hola andres***,
Como te he dicho por mensaje privado: esto se puede hacer con una consulta SQL que tenga la clásula ORDER BY:
Por ejemplo, en tu caso sería algo:
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, |
tabla
como seria la tablita en sql?
no entiendo mucho gracias |
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 |
Cita:
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, |
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 |
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, |
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: 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:
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. |
muchisimas gracias a todos los que me bancaron he solucionado el problema del orden por fecha y por hora
|
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 |
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 |
buenaas
nesecito saber como puedo depurar desde una fecha hasta otra los datos de una tabla |
Cita:
¿Podrías ser más descriptivo? ¿Que componentes estás empleado? ¿Sigues con los Tables o estás haciendo uso de Querys.? Saludos, |
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 |
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 |
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 |
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.
|
Cita:
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:
O algo similar. Saludos, |
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 |
Hola andres***,
Usa las etiquetas DELPHI por favor: [ DELPHI ] tu codigo aquí [ /DELPHI ] Sin los espacios entre los corchetes. Respecto a tu duda, Sólo veo que haces un segundo filtro pero no indicas que lo aplique mediante Filtered. Fuera de eso no veo error. Si te da un error debes indicárnoslo. No basta con tirarnos el código y que adivinemos. Coméntanos más al respecto. Saludos, |
hola Delphius
el problema es el siguiente: mi base posee turnos ej paciente fecha hora medico xxx 10/01/09 11:45 spatola dsd 10/01/09 12:25 rames yty 10/01/09 11:25 spatola cuando yo filtro con la sentencia que te detalle en el mensaje anterior , yo pretendo que cuando me filtre, me devuelva el detalle de pacientes que tiene un determinado medico, un determinado dia por ejemplo yo filtro el medico spatola y el dia 10/01/09 y me tendria que quedar. paciente fecha hora medico yty 10/01/09 11:25 spatola xxx 10/01/09 11:45 spatola el tema es que me filtra por dia y no por medico..... |
No es por nada pero volvemos a un dilema que inicialmente te habíamos comentado: ¡tienes la fecha y la hora en campos separados!
Hay dos opciones: 1. Emplear un campo fecha y hora o DateTime en que incluyas la fecha y la hora. De este modo tu condición de filtrado será muy simple:
Tal como lo estás pretendiendo hacer. 2. O bien, seguir manteniendo los campos por separado y hacer una condición compuesta. Algo como:
Es decir que bastaría con añadir a tu filtro un AND y la siguiente condición: por hora. ¿Se entiende? Saludos, |
Delphius
en la primera yo cargaria la fecha y la hora en un mismo campo? y la segunda vos decis que ponga la condicion de filtrado por medico y la de por hora con and en el medio. |
por favor alguien que me ayude con esto.
gracias |
Hola andres***,
Disculpame no había visto que ya habías comentado al respecto. A ver si me explico: Si tu tuvieras en un mismo campo registrado la fecha Y hora se puede emplear el código que tu comentas. Puesto que bastaría una simple condición para filtrar los datos. Pero como empleas dos campos: uno para la fecha y otro para el día, (supongo que será del tipo Date y Time respectivamente) necesariamente debes armar una doble condición:
Ahora bien, este código es un tanto lioso. Lo más confiable y rápido es lanzar directamente la consulta con los datos a filtrar:
Y valiendote de parámetros luego puedes hacer esto:
Por el tema de parámetros sugiero una búsqueda en los foros sobre el tema. Fue ampliamente tratado. Y si a dichos campos lo "tansforma" a uno solo, de tipo fecha/hora igual puedes seguir lanzando una SQL igual a la anterior, pero esta vez, con una sola condición:
Y en Delphi, antes de lanzar algo como:
¿Me explico? Saludos, |
no abre el qry
Saludo a todos, tengo un qry que no me da el open(no abre) solo cuando utilizo SQLSERVER, si utilizo otra base de datos funciona bien, he hecho varia prueba y he podido comprobar que es debido al order by de los campos que estoy solicitando, si le pongo un solo(el codigo del articulo) el qry abre pero solo con ese, si le pongo otro no abre o si lo convino con otros, es solo con ese campo que abre.
Me explico sino le pongo el orden by el qry abre bien, si le dejo el order by con un campo que no sea el codigo del articulo no abre este es el qry with FDataModulo.qryUtility2, Sql do begin Close; Clear; Add('select cia.cia_descripcion,cia.cia_rnc,'+ 'loc.loc_descripcion,tid.cia_codigo,tid.dti_fecha,tid.dti_item,tid.alm_codigo,'+ 'tid.art_codigo,loc.loc_direccion,loc.loc_telefono,'+ 'loc.loc_fax,art.id,tri.tri_fecha,tri.tri_codigo,'+ 'tdo.tdo_descripcion,tdo.tdo_entrada_salida'); Add(' from companias cia, localidades loc, transacciones_inv tri, tipos_documentos tdo,'); Add(' transacciones_inventario tid,articulos art'); Add(' where cia.cia_codigo = '+#39+gs_cia_codigo+#39); Add(' and loc.cia_codigo = cia.cia_codigo'); Add(' and tri.cia_codigo = loc.cia_codigo'); Add(' and tri.loc_codigo = loc.loc_codigo'); Add(' and tri.alm_codigo = ''01'''); Add(' and tid.art_codigo = '+#39+articulo+#39); Add(' and tri.tri_estado <> ''R'''); Add(' and tdo.cia_codigo = tri.cia_codigo'); Add(' and tdo.tdo_codigo = tri.tdo_codigo'); Add(' and tid.cia_codigo = tri.cia_codigo'); Add(' and tid.loc_codigo = tri.loc_codigo'); Add(' and tid.tdo_codigo = tri.tdo_codigo'); Add(' and tid.tri_codigo = tri.tri_codigo'); Add(' and art.cia_codigo = tid.cia_codigo'); Add(' and art.tpi_codigo = tid.tpi_codigo'); Add(' and art.art_codigo = tid.art_codigo'); Add(' order by tid.dti_fecha'); // si le pongo el campo fecha no abre solo con el campo codigo de articulo no toma otro. Open; este es el orde del qry que quiero, este orden me funciona bien en otras base de datos menos en SLQSERVER Add(' order by tid.art_codigo,tri.tri_fecha,tri.tri_codigo'); Gracias de antemano |
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración.
|
La franja horaria es GMT +2. Ahora son las 03:02:00. |
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