Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Bases de datos > Tablas planas
Register FAQ Members List Calendar Guía de estilo Search Today's Posts Mark Forums Read

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 22/07/2003
Rox77's Avatar
Rox77 Rox77 is offline
Miembro
 
Join Date: May 2003
Location: 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.
Reply With Quote
  #2  
Old 22/07/2003
__cadetill __cadetill is offline
Miembro
 
Join Date: May 2003
Posts: 3,387
Poder: 27
__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
Reply With Quote
  #3  
Old 22/07/2003
Rox77's Avatar
Rox77 Rox77 is offline
Miembro
 
Join Date: May 2003
Location: 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.
Reply With Quote
  #4  
Old 22/07/2003
delphi.com.ar's Avatar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Join Date: May 2003
Location: Buenos Aires, Argentina *
Posts: 5,965
Poder: 29
delphi.com.ar Va camino a la fama
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.

Code:
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.
Reply With Quote
  #5  
Old 22/07/2003
__cadetill __cadetill is offline
Miembro
 
Join Date: May 2003
Posts: 3,387
Poder: 27
__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
Reply With Quote
  #6  
Old 23/07/2003
Rox77's Avatar
Rox77 Rox77 is offline
Miembro
 
Join Date: May 2003
Location: 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é.
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT +2. The time now is 11:08.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi