![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Hola Marc.... Esto va casi marchando... estoy muy agradecido de tu ayuda al igual que la de juan... me siento muy conforme con todo lo que ustedes han hecho.... pero tengo una ultima pregunta....
Inicializando la Variable Grupo a -1 y luego haciendo la comparacion a la hora de borrar el registro no estoy viendo ningun tipo de control que detenga la eliminacion cuando solo quede un registro del primer grupo ( 1 1) y salte al siguiente grupo para comenzar a eliminar los registros hasta que solo quede uno de ese grupo (2 3) y asi sucevimante.... creo que esa es la unica parte que faltaria por definir ya que gracias a ti tengo la idea clara.... Por otra parte pareceria que es facil para mi buscar una respuesta pero es que ya llevo 10 horas seguidas aqui sentado y mi cerebro esta completamente atontado.... de todos modos muchas gracias por todo...Amigo....... PD: yo utilizo Interbase WorkBench para administrar Interbase y ya descargue el IB-Xpress para probarlo..gracias otra vez..por todo....
__________________
El conocimiento es un Patrimonio Universal.... |
|
#2
|
||||
|
||||
|
No se si esto funcionará en ib/fb, pero en oracle si que lo haria...
Código:
Delete [from] tabla t1
where exists (select 1
from tabla t2
where t2.campo1 = t1.campo1
and t2.campo2 != (select min(campo2)
from tabla t3
where t3.campo1 = t1.campo1));
Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#3
|
||||
|
||||
|
Hola.
Seguro que mañana lo verás muchísimo más claro. Nos pasa a todos que cuando pasamos demasiado tiempo delante de un problema, ya solo vemos la pantalla pero el cerebro ya está totalmente fuera de servicio ![]() El código, en efecto no lleva ningún tipo de control para saber si estamos en el último registro de un grupo, para no borrarlo. Puesto que el registro que no borramos, en ese código, es el primero del grupo y no el ultimo. Fíjate, si el código actual es distinto del código de grupo que tratamos, simplemente inicializamos el código de grupo que se está tratando (pero no se borra ningún registro), posteriormente, cualquier registro que se encuentre de ese grupo, será borrado. Por cierto, en el código que te pasé no nos aseguramos de que todos los registros de un grupo, vayan a uno a continuación del otro. Para asegurarlo, tenemos que ordenar el for select Código:
for select CAMPO1, CAMPO2
from TABLA
order by CAMPO1, CAMPO2
into :CAMPO1, :CAMPO2 do begin
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
#4
|
|||
|
|||
|
yehaaaaaaaaaaaaaaaaaaaaaaa
eso estuvo cooooooooool Juan de verdad.... me funciono a las mil maravillas e hizo lo que yo exactamente estaba buscando..... solo tuve que cambiar la Expresion de != por <> y todo funciono perfecto... Gracias a ti Marc por darme la idea..... creo que voy a tener que estar mas a menudo por aqui..... Marc e instalado el IBXpress pero no he tenido tiempo de probarlo aun..aunque chequeando algo me parecio ver cuando registre una base de datos y edite una tabla que me decia 242 modifications left o algo asi..de todos modos ya verificare eso con mas calma... ahora a terminar mi aplicacion que mucha guata que me ha dado....Gracias otra vez..... PD: Podrian decirme donde me consigo los Componentes IBX para Delphi 5?
__________________
El conocimiento es un Patrimonio Universal.... |
|
#5
|
||||
|
||||
![]() very ![]() ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|