Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-04-2012
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 25
Caro Va por buen camino
Hola, debes hacerlo como te indica MartinS, solo añadiendo, también puedes acceder al Item del ListBox de esta forma:

Código Delphi [-]
dmdatos.ATMATERIASDESCRIPCION.AsString:=  listbox2.Items[a];
 //y puedes utilizar With
for a := 0 to listbox2.count -1 do 
  begin 
    With dmdatos do
      begin
        ATMATERIAS.Append;
        ATMATERIASMATERIAID.AsString:=edit1.Text;
        ATMATERIASDESCRIPCION.AsString:=  listbox2.Items[a];
        ATMATERIAS.Post;
      begin
  end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #2  
Antiguo 05-04-2012
donpedro donpedro is offline
Miembro
 
Registrado: nov 2009
Posts: 102
Poder: 0
donpedro cantidad desconocida en este momento
listbox

muchas gracias martinS, y caro.... funciona a la perfeccion.. ahora estoy tratando de hacer: por ejemplo: si le asigno 5 materias a un grado y grabo,, pero se me olvido agregar otra.. como hago para que solo me grabe la nueva que voy a incluir. no se si me di a entender....
lo que estoy tratando es de crear un boton que me modifique la tabla utilizando el siguiente codigo:
Código Delphi [-]
//esto va dentro del boton modificar
with dmdatos do
begin
atmaterias.Locate('materiaid',edit1.Text,[]);
atmaterias.Edit;
end;

entonces en el boton grabar comparo si la tabla esta en insert o en edit,,, pero el programa explota y dice que no se ha podido encontrar el hilo.

lo que quiero es que la que ya estan grabadas me las deje intacta y que solo grabe la nueva que se incluyo.

como me pueden ayudar..gracias
Responder Con Cita
  #3  
Antiguo 06-04-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 15
MartinS Va por buen camino
Hola donpedro: Antes que nada no se que tipo de base de datos estas usando y mucho menos su estructura. Ahora bien, en algun lugar lei que ya estas cerca de finalizar tus estudios de informatica por lo tanto "solo expondre" la idea de lo que YO haria:

1.- Usaria una ventana similar a la carga de datos pero lo que deberias hacer es levantar del curso las materias y colocarlas en el listbox

Código Delphi [-]
     MateriasDeCurso.First
     While not MateriasDeCurso.Eof do
     Begin
        If campoCodigoMateriaDeCurso = BuscadoPorEdit then
        Begin
            ListBox2.items.Add(MateriaCodigoyDetalle);
        end;
        MateriasDeCurso.Next;
     end;

2.- Hace las incorporaciones nuevas y van a ir agregandose al final del listbox2
3.- Grabar... Pero no tan facil
Debes recorrer el listbox y fijarte cual es la que agregaste, si quieres puedes usar el metodo locate de modo que si lo encuentra pasa al siguiente elemento del listbox y si no lo graba.-

Ahh! el locate puede dar un valor booleano, es decir puedes usarlo así:

Código Delphi [-]
   If Not MateriasDeCurso.Locate(LoQueBuscas) then
           GraboNuevo
        else
           SiguienteDeLaLista

Nuevamente: Estoy dando ideas a ciegas, No conozco ni la base ni la estructura y puede ser que tambien debas hacer muchas mas comprobaciones antes de guardar, por ejemplo si cambia las materias ya guardadas o le cambian el nombre, etc. etc...
En definitiva y tal vez sea demasiado bruto pero hay que hacer muchas cosas en papel (Analisis, posibilidades, diagramas) antes de escribir el codigo, algo que seguramente tu ya lo sabes

Bueno cualquier cosa estamos aquí.

Saludos.-
Responder Con Cita
  #4  
Antiguo 06-04-2012
donpedro donpedro is offline
Miembro
 
Registrado: nov 2009
Posts: 102
Poder: 0
donpedro cantidad desconocida en este momento
muchas gracias martinS, pido excusa por no especificar la base de datos,, estoy utilizando mysql.....estare probando tu logica,,, luego compartire el resultado...
Responder Con Cita
  #5  
Antiguo 06-04-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 15
MartinS Va por buen camino
Cita:
Empezado por donpedro Ver Mensaje
muchas gracias martinS, pido excusa por no especificar la base de datos,, estoy utilizando mysql.....estare probando tu logica,,, luego compartire el resultado...
Si, eso queremos, los resultados... ... y si no sale!?, volveremos

Saludos.-
Responder Con Cita
  #6  
Antiguo 06-04-2012
donpedro donpedro is offline
Miembro
 
Registrado: nov 2009
Posts: 102
Poder: 0
donpedro cantidad desconocida en este momento
Cita:
Empezado por MartinS Ver Mensaje
Si, eso queremos, los resultados... ... y si no sale!?, volveremos

Saludos.-
esta resuelto, gracias martinS, hice una prueba y funciono con tu logica, ahora lo que voy hacer es cargar las materias ya grabadas al listbox....comparto el codigo que verifica si la materia esta registrada y si no esta la graba... para lo que dijiste sobre si eliminan una materia o cambian el nombre de una,, creare unos controles para eso.. no se si utilizar triggers pero ya ver lo que hare.. de todos modos gracias..... comparto el codigo:
Código Delphi [-]
procedure TForm1.Button3Click(Sender: TObject);
var x:integer;
begin
with dmdatos do
begin
for x := 0 to Listbox2.Count - 1 do

if not atmaterias.Locate('descripcion',listbox2.Items.Strings[x],[]) then
begin
ATMATERIAS.Append;
ATMATERIASMATERIAID.AsString:=edit1.Text;
ATMATERIASDESCRIPCION.AsString:=listbox2.Items[x];
  atmaterias.Post;
end;
end;
end;
Responder Con Cita
  #7  
Antiguo 09-04-2012
donpedro donpedro is offline
Miembro
 
Registrado: nov 2009
Posts: 102
Poder: 0
donpedro cantidad desconocida en este momento
hola de nuevo, estoy mejorando la pantalla y estoy frenado en algo: en la nueva pantalla estoy utilizando un dbgrid y un listbox (con base de datos mysql). estoy pasando registros de un dbgrid al listbox como se muestra en la siguiente figura.


lo que quiero es que cuando mueva una materia del dbgrid al listbox dicha materia se quite del dbgrid. me explico,, si por ejemplo muevo la materia matematica que se compare si algun registro del dbgrid es igual a los del listbox y si es asi que lo quite del dbgrid para asi poder ver las materias que no he agregado... espero que hallan entendido. trate con el siguiente codigo el cual esta en el mismo boton donde muevo los items.
Código Delphi [-]
procedure TFASIGPORGRADOS.BitBtn11Click(Sender: TObject);
  VAR A:INTEGER;
begin



LISTBOX1.Items.Add(DMDATOS.AQMATERIASDESCRIPCION.AsString);//con este linea muevo del dbgrid al listbox

//aqui quiero comparar los registros del dbgrid con los del listbox
for A := 0 to ListBOX1.ITEMS.Count - 1 do
  BEGIN
    WITH DMDATOS DO
    BEGIN
      AQMATERIAS.Active:=FALSE;
      AQMATERIAS.Close;
      AQMATERIAS.SQL.Clear;
      AQMATERIAS.SQL.Add('SELECT * FROM MATERIA WHERE DESCRIPCION NOT LIKE'+''''+'%'+LISTBOX1.Items.Strings[A]+'%'+'''');
      AQMATERIAS.ExecSQL;
      AQMATERIAS.ACTIVE:=TRUE;

    END;

  END;

         end;

cuando ejecuto ese codigo y selecciono por ejemplo matematica y lo paso al listbox dicha materia se quita del dbgrid, pero si elijo otra por ejemplo lengua española se me agrega al listbox se me borra del dbgrid pero matematica vuelve y aparece en el dbgrid..

espero que me hallan entendido,, espero respuesta y muchas gracias de antemano...
Responder Con Cita
  #8  
Antiguo 06-04-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola donpedro.

Si no entendí mal tu consulta, no sería una modificación, en realidad es agregar un nuevo dato que corresponde a determinado curso.
En ListBox2 se van añadiendo las materias correspondientes al curso, por lo que antes de guardar el nuevo dato agregado, este deberá encontrarse en la última posición de este componente.

Entonces creo que tendrías que hacer:
Código Delphi [-]
procedure TForm1.btnModificarClick(Sender: TObject);
begin
  ATMATERIAS.Append;
  ATMATERIASMATERIAID.AsString:=  Edit1.Text;
  ATMATERIASDESCRIPCION.AsString:=  ListBox2.Items[ListBox2.Items.Count-1];
  ATMATERIAS.Post;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cargar campos de la tabla en un listbox sancarlos SQL 4 03-07-2008 19:10:59
agregar y/o eliminar items de un listbox a partir de otro listbox Goyo PHP 2 27-09-2007 16:46:30
ListBox Tala OOP 3 21-06-2006 16:31:46
Copiar los campos de una tabla a un ListBox JuanErasmo C++ Builder 1 22-09-2005 02:13:18
ListBox neon OOP 2 09-08-2004 11:15:27


La franja horaria es GMT +2. Ahora son las 19:28:34.


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