Casa
Top.Mail.Ru Yandeks.Metrika
Foro: "Bases";
Archivo actual: 2002.01.08;
Descargar: [xml.tar.bz2];

abajo

¡HOLA A TODOS! Yo hago un diario. Donde hizo la tarea .... Encontrar ramas similares


@andrew   (2001-12-04 11:38) [0]

... es necesario verificar la unicidad de la fecha ingresada. Al mismo tiempo no tuvo dos eventos. ¿No me dice cómo verificar esta comprobación con el constructor de la tabla o la consulta antes de la línea "insertar en ....."? Gracias



Val   (2001-12-04 13:11) [1]

no se necesita una verificación, sino un índice único, que incluirá este campo de fecha



@andrew   (2001-12-04 13:58) [2]

Y así es como: "que incluirá el campo de fecha"? ¿Significa esto que el campo "fecha" es único? Si significa, entonces no es del todo bueno, porque de hecho, interesado en intervalos de tiempo los eventos no se superponen. Por ejemplo un evento de 5 a 8 por la mañana. El otro es de 6 a 7. Si hace una verificación de la unicidad del índice, entonces SQL le permitirá hacer un registro, pero no debería.



@andrew   (2001-12-04 14:05) [3]

De hecho, puede encontrar varias soluciones a mi problema. Lo más elemental que está girando en mi cabeza, a saber: primero devuelve todos los valores, luego ordénelos, mire ..., etc. - Muy larga y freno. Tal vez alguien se haya topado y conozca alguna solución ya hecha para mi pregunta: rápida y simple y, sin embargo, preferiblemente, no a nivel de software, sino a nivel de consulta SQL o SQL, porque en la variante de resolver el problema a nivel de software cuando un gran número de usuarios están trabajando de inmediato, el retardo "seleccionar * ...; verificar ...; si todo está bien, inserte algo ..." puede ser fatal.

Gracias de nuevo por adelantado!



Mick   (2001-12-04 14:07) [4]

En general, las revistas normales se escriben de forma secuencial. La fecha es insertada no por el cliente, sino por el servidor. Si un proceso comenzó en 5 y terminó en 8, entonces el registro contendrá el registro de inicio de 1 (5 am), un registro de final (8 am) y una nube de registros entre ellos que le informarán lo que sucedió en ese momento.



Nest   (2001-12-04 14:14) [5]

Sí, ayer también tuve esa pregunta.
Pero hasta ahora he pospuesto su decisión: hay cosas más importantes.
En general, creo que su período debe caracterizarse por los parámetros 2;
date_start_start y date_time_end.
Entonces, si en algún momento en el tiempo solo puede haber un evento completo, entonces al ingresar es necesario verificar que:
[1.date_time_start <date_time_end]
2. No hay ningún registro para el cual el date_time finalizado esté vacío o sea mayor que el date_time inicial.

Probablemente estos pensamientos deberían recordarse, no había tiempo. Por ahora, solo una idea vaga.
Paseo?



@andrew   (2001-12-04 14:17) [6]

> Mick
En realidad no
Esto no es un diario en el sentido informático de la palabra, sino un diario como organizador, un diario en el que puede escribir algunos planes para el futuro.



@andrew   (2001-12-04 14:24) [7]

> Nido
Bueno, sí, en principio, la idea es clara. Pero esta es una solución de software. Es decir En términos generales, antes de escribir algo, hago:
1. Devuelve todos los registros, ordenándolos por date_time.
2. Conviértete en la última línea (Query1.Last)
3. Si la hora de inicio de lo que quiero insertar> = la hora del final de la última grabación, puede insertarlo.
¿Es posible lo mismo, solo no por software, sino por petición?

Solo temo que si varias personas trabajan simultáneamente, puedes arruinarlo.



Nest   (2001-12-04 14:36) [8]

¿Y qué es lo que no conduce?
1.Query1: seleccione max (DVK)
2.If query1.fields [0] .asdatetime> DVN_Enited luego abortar

Para hacer y verificar e insertar en una consulta, es IMHO necesario tener un buen número de% @ tsya. Un par - fácil.



Nest   (2001-12-04 14:38) [9]

Tal vez usted puede: simplemente sentarse y pensar en la lógica elemental y cómo presentarla en la consulta WHERE.
Le di la idea - luego trato de pensar más allá. Simplemente no tengo tiempo real.



Mick   (2001-12-04 14:39) [10]

Puede seguir la ruta de desnormalización de la tabla de registro.
Estructura:
1. Campo clave (cualquier clave primaria artificial)
2.Fecha
3 Campos de horas (por el número de horas por día)

Siguiente:
El cliente verifica la continuidad del intervalo insertado (fácilmente)
El activador en la tabla verifica si los valores NO NULOS están en los campos del mismo nombre en los registros para la misma fecha.
Si lo hay, entonces captaron la superposición de eventos, si no, todo está bien.



Sam   (2001-12-04 19:27) [11]

¿Qué pasa con los desencadenantes?



kaif   (2001-12-04 20:17) [12]

Hace un par de años estaba resolviendo esta tarea exacta para organizar una cita con un médico. Lo hice en InterBase. El algoritmo es completamente no trivial. Para que esto funcione rápidamente, por supuesto, necesitamos índices. Era necesario crear brechas, como registros separados, se requerían los procedimientos almacenados para "aplastar" brechas y "pegar". Al principio, se crean "brechas de tiempo libre", luego se dividen, como lo hacen durante algún tiempo. En consecuencia, su número aumenta gradualmente. Los casos específicos están vinculados al índice único sustituto de estos intervalos. Trabajó de forma rápida y coherente con el acceso simultáneo de varios usuarios. Entonces pensé mucho y probé diferentes opciones. Sin convertir los huecos individuales en objetos que se crearían, eliminarían y utilizarían, no encontré ninguna otra buena solución.



Páginas: 1 rama entera

Foro: "Bases";
Archivo actual: 2002.01.08;
Descargar: [xml.tar.bz2];

arriba





Memoria: 0.59 MB
Tiempo: 0.149 c
1-22042
Angel s
2001-12-15 23:04
2002.01.08
Sube el archivo jpg a la imagen


3-21992
dlK
2001-12-06 15:21
2002.01.08
Como no dar un programa.


3-21974
Dup
2001-12-06 10:30
2002.01.08
TQRExpr


1-22021
Socol
2001-12-18 08:54
2002.01.08
Descargar archivo!


1-22025
- = DeD = -
2001-12-18 11:20
2002.01.08
Instalar ActiveX





africaans albanés Arabic armenio Azerbaiyán vasco Bielorruso Bulgarian Catalán Chino (simplificado) Chino (tradicional) Croata Checo Danés Dutch Inglés Estonia filipina Finnish French
gallego georgiano Alemán Griego criollo haitiano Hebreo hindi Húngaro islandés Indonesian irlandés Italiano Japonés Korean letón lituano macedonio Malay maltés Noruego
persa polaco Portuguese Rumano Ruso Serbio Slovak Esloveno Español swahili Sueco Thai turco ucranio Urdu vietnamita galés yídish bengalí bosnio
cebuano esperanto gujarati hausa hmong igbo javanés kannada khmer lao latín maorí marathi mongol nepali punjabi somalí Tamil telugu yoruba
zulú
Английский Francés Alemán Italiano portugués Русский Español