Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-07-2003
Avatar de Rox77
Rox77 Rox77 is offline
Miembro
 
Registrado: may 2003
Ubicación: Caceres
Posts: 44
Poder: 0
Rox77 Va por buen camino
Insertar registro entre 2 existentes

Hola a todos-> necesito ideas

Se puede insertar un registro en la posicion de la tabla que me de la gana???? comooo???
Me explico tengo dos tablas por ejemplo DOC y LINEAS_DOC unidas en maestro detalle. Imaginemos que tengo 4 lineas introducidas y quiero añadir una mas pero la quiero "insertar" entre la 2 y la 3 de las que ya existen porque necesito que aparezcan en cierto orden y se me ha colado una (por ejemplo) esto como se puede hacer??? Necesitaria crear algun campo NUM_LINEA para organizarlo por este o algo asi ?

Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 22-07-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Lo ideal es que tengas un indice por el campo en que los quieras ordenar, pero si no lo tienes, el Insert te añade un registro en la posicion donde se encuentra el cursor en eso momento

Aunque, si puedes, te repito que pongas un indice por el/los campos que quieras ordenar
Responder Con Cita
  #3  
Antiguo 22-07-2003
Avatar de Rox77
Rox77 Rox77 is offline
Miembro
 
Registrado: may 2003
Ubicación: Caceres
Posts: 44
Poder: 0
Rox77 Va por buen camino
Gracias por contestar Cadetill pero la idea no es como creo que piensas....la idea es poder mover las lineas a mi antojo...me explico.

Son 2 tablas DOCUMENTOS , la cual tiene datos generales y LINEAS_DEL_DOCUMENTO la cual solo tiene campos de texto y numericos. Un ejemplo:

Nuevo documento -> nº 3 Nombre: Listado de productos Fecha 1/1/2003 etc......

LINEAS
por ejemplo CANTIDAD CONCEPTO PRECIO IMPORTE
Lineas-> Añadimos una linea : 4 Puertas de madera 100 400
Otro linea: 3 Ladrillos rojos 5 15
Otra linea: 4 Puertas nogal 200 800
Otra linea: 5 Ladrillos 1/2 pie 10 50

Etc....y ahora quisiera "insertar" una entre las puertas de madera y los ladrillos rojos """"ó"""" añadir una y MOVERLA entre las puertas de madera y los ladrillos rojos. O quiero agrupar por un lado las puertas dejar una linea en blanco y luego los ladrillos. Y alguien dirá: "este tipo es tonto, escribelo en el orden que quieres y ya está" pero la respuesta es: "esq puede ser que se añadan lineas hoy o mañana o dentro de unos dias jeje .

Se podria hacer mediante Drag&Drog sería ideal y si se puede con grupos de lineas sería la leche..jeje.

Bueno creo q ahora se entiende un poco mas mi idea. El uso de indices no me sirve porq no quiero organizar por ningún campo sino por un concepto de agrupación personal. Unas veces será así otras será por precio otras porque le da la gana al usuario que las puertas vayan antes q los ladrillos etc... ¿OK?

Pues espero respuestas. (Mientras seguiré probando cosas).

Salu2. Rox77.
Responder Con Cita
  #4  
Antiguo 22-07-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Primero tendrías que modificar los datos anteriores, aumentando en una posición el valor de línea, los registros anteriores y luego insertar el registro.

Código:
UPDATE LINEAS
SET LINEA = LINEA + 1
WHERE LINEA >= 4;

INSERT INTO LINEAS
(LINEA, DESCRIPCION)
VALUES
(4, 'Puertas de madera')
Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 22-07-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
El caso que te pone delphi.com.ar, seria para añadir un registro. Si lo quieres controlar tambien para los registros ya insertados puedes poner dos botones (uno para Up y otro para Down) y hacer (solo pongo la idea, el codigo te lo deja para ti ya que no es muy complicado)

// Suponiendo que la 1era linea sea SIEMPRE 1

Boton UP

1.- Recuperar valor del campo LINEA del registro en el que estamos en una variable (ej. LineaAnt)
2.- El registro actual, editarlo y cambiar el valor del campo LINEA a 0
3.- Posicionarte en el registro de valor LineaAnt - 1
4.- Modificar el registro poniendo en el campo LINEA el valor de LineaAnt
5.- Posicionarte en el registro de LINEA = 0
6.- Modificar el registro poniendo al campo LINEA el valor LineaAnt - 1

(o bien hacerlo con sentencias SQL de UPDATE que quizas quedaria mejor )

Boton Down

->Practicamente lo mismo

Espero te sirva
Responder Con Cita
  #6  
Antiguo 23-07-2003
Avatar de Rox77
Rox77 Rox77 is offline
Miembro
 
Registrado: may 2003
Ubicación: Caceres
Posts: 44
Poder: 0
Rox77 Va por buen camino
Tu idea me gusta mas Cadetill (los siento Delphi.com.ar pero el SQL para este tipo de cosas no me llama la atención...lo uso para consultas, listados actualizaciones de otro tipo como precios etc.)

Eso de los botoncitos lo he visto en alguna aplicación y me parece bien (el propio delphi lo usa en las ventanas para controlar el orden de tabulación) lo probaré aunque me gustaria implementar soporte drag&drop.

Y supongo que lo que hago para mover serviría para insertar: incremento el campo NLINEA a todas las lineas por debajo del lugar donde quiero insertar y le pongo ese numero de linea a la nueva.

Gracias por las ideas... probaré.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 00:51:10.


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