Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   indices en tablas (https://www.clubdelphi.com/foros/showthread.php?t=44235)

anubis 31-05-2007 20:14:59

indices en tablas
 
Hola de nuevo, la verdad es que estoy aprendiendo mucho con vosotros, a ver si al final tambien puedo ayudar a alguien con el delphi ;).

Segun he leido y me habeis explicado, para añadir registros y manipularlos, se usan los table1.edit, table1.insert;table1.post...
Si quiero visualizar el primer registro table1.first y ya se visualiza en los db correspondientes.
Pero si quiero visualizar un registro en funcion de una clave unica, hay que poner lo que se recomienda en otro post, esto es,
Table1.locate('codigo',edit1.Text,[loPartialKey]);Si tengo un campo indice triple, esto es, codigo, habitacion y fecha, como se hace. Y si quiero hacer una consulta usando solo habitacion(clave secundaria) y me devuelva la misma habitacion pero en diferentes fechas?.

gracias

p.d. con la cara oculta de delphi 4 voy aprendiendo, pero para algunas cosas basicas me lia.

cHackAll 31-05-2007 22:07:35

Creo yo...
 
La siguiente linea (ejemplo) la copie de la ayuda del mismo Delphi, creo que sería lo que necesitas no?

Código Delphi [-]
Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P', '408-431-1000']), [loPartialKey]);

Suerte!

anubis 01-06-2007 07:47:29

si, gracias, a ver si con eso lo resuelvo, si uso eso mismo pero con una sola clave tambien sirve?, es decir para sacar por ejemplo, todos los contactos que empiecen por P tal y como has puesto tu sin importar las otras dos claves, porque he puesto secundarias.
Habria que poner while not eof verdad?, o lo tenog que hacer con un query.

gracias

cHackAll 01-06-2007 22:46:18

Ok
 
Locate si no me equivovo, encuentra la primea ocurrencia de una búsqueda, pero el siguiente registro puede no ser lo que buscamos... En mis comienzos usaba mucho Locate, Lookup, FindField y un momton de sentencias y código para obtener lo deseado y funcionaba a la maravilla, pero gastaba mucho tiempo en desarrollar esas partes. Mientras fui "madurando" en BDs con GSDBs aprendí que las sentencias SQL te solucionan un monton de problemáticas, por ejemplo haciendo un 'like 'P*' y FindNext solucionas lo ultimo que me preguntabas. (Resumen usa: TADOQuery)

O e su defecto puedes usar la propiedad "Filter" para obtener lo que requieres.

En todo caso continua preguntando, talvez no soy muy concreto en mis respuestas o pueda ayudarte con algo de código (en ese caso danos el caso específico)...

Saludos!

anubis 01-06-2007 23:36:21

Gracias. Como todo novato, surgen dudas y problemas, pero poco a poco se va aprendiendo.

Tengo varias tablas, una en concreto se llama habitacion, que contiene:

numerohabitacion
fecha
como clave maestra son esos dos juntos, puesto que una habitacion para una fecha no puede estar duplicada, con el locate, tal y como me comentais, solo hay uno.
La pregunta es, si quiero ver todas las habitaciones dando igual la fecha, seria tambien con un locate para esa clave, y el resto como lo podria hacer, es decir, para visualizar todas las fechas para una habitacion.

gracias

cHackAll 02-06-2007 18:22:57

TADOQuery
 
Cita:

Empezado por anubis
...si quiero ver todas las habitaciones dando igual la fecha...

Código SQL [-]
select numerohabitacion from habitacion group by numerohabitacion

Cita:

Empezado por anubis
...ara visualizar todas las fechas para una habitacion...

Código SQL [-]
select * from habitacion where numerohabitacion = ' + Edit1.Text

Espero os sirva, un saludo!

anubis 02-06-2007 18:58:43

se agradece, voy a probar a ver. Ya os voy diciendo.


La franja horaria es GMT +2. Ahora son las 13:43:34.

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