Ver Mensaje Individual
  #18  
Antiguo 10-04-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Reputación: 13
MartinS Va por buen camino
Hola donpedro: creo que te entendi sobre lo que apuntas pero vas a tener varios inconvenientes a la hora de hacer el pase de materias.-

En primer lugar la consulta pareciera que funcionara pero para que pueda ir quitando las materias del dbgrid debes ir agregando condiciones al where del sql y ciertamente se puede volver bastante engorroso. Calcula que si hace... (Como se dice en Argentina "A la criolla")

1 listar todas las materias
Seleccionaste despues matematica, entonces
2 listar todas las materias, salvo matematicas (anda joya)
despues seleccionas geografia, entonces
3 listar todas las materias, salvo matematicas y salvo geografia y asi sucesivamente vas a tener una consulta bastante grande y que no seria de gran utilidad; mas aun si el cliente decide eliminar una de ellas de las ya asignadas entonces deberias "ubicar" cual es la condicion afectada en el SQL

Creo que debes volcar todas las materias a un listbox y no a un dbgrid y de ahi hacer el pase para el otro listbox como ya has expuesto
en mensajes anteriores

Otra idea podria ser que al momento de dar de alta nuevas materias primero pongas las materias del curso en el listbox2 que ya habias guardado y despues a hace una consulta de las materias generales e incorporalas al listbox1 pero solo las que no aparecen en el listbox2 asi:

Código Delphi [-]
Consulta.First;
  While Not Consulta.Eof do
  Begin
     If ListBox2.Items.IndexOf(ConsultaValor) = -1 then  // Si es -1 el items es porque no esta en las materias ya cargadas al curso
            ListBox1.Items.Add(ConsultaValor)
     Consulta.Next;
  End;

El mismo tipo de comprobacion lo puedes hacer cuando pasas las materias de un lado al otro si no borras el origen, si no, primero has el pase
Código Delphi [-]
Listbox2.Items.Add(ListBox1.Items[ListBox1.ItemIndex])

y despues borras el origen

Código Delphi [-]
 ListBox1.Items.Delete(ListBox1.ItemIndex)

Dicho esto creo que es la mejor manera de manejar el pase de materias (Puede no ser la unica forma).-

Ah!! Usa para otra pregunta (como la que hiciste) un nuevo hilo así no confundimos las respuestas y tus dudas saltan al primer lugar de la lista de post aumentando las posibilidades de que alguien que la tenga mas clara (que por cierto hay muchos) conteste y te de una mano.

Saludos.-
Responder Con Cita