Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   buscar en tabla lo que tengo en listbox, y guardar un dato en un campo (https://www.clubdelphi.com/foros/showthread.php?t=82636)

Daniel10 27-03-2013 19:46:33

buscar en tabla lo que tengo en listbox, y guardar un dato en un campo
 
Hola, buen día a todos.

primero... no se que titulo poner para este mensage, creo que describe lo que quiero hacer.




Busco ayuda en mi código.

Mi programa hace lo siguiente, pero debería hacer mas… jaja

Tengo 2 tablas,

En un formulario1, tengo un edit1 para ingresar un número, o también podria ser que se genere automáticamente el numero de registro, para que se identifique por medio de este numero este registro, y un listBox, este listbox contiene varios ítems que son cargados por medio de edit2 (aca podrian ser nombres o palabras)
Y un edit3 el cual ingreso un nombre
Y boton GURDAR, y me guardaria todo esto en la tabla2.

Tengo también conectados al archivo base1.mdb
Database1
Query1
DataSource2

En mi base datos, tengo 2 tablas , la tabla1 y tabla2. (acces)

la Tabla1 contiene campo: NumeroRegistroT1, nombreT1, tipo_AT1, tipo_BT1
la tabla2: contiene campo: NumeroInscripcionT2, NombreT2,

Entonces lo que hago es, rellenar el formulario1, por ejemplo algo asi:

Edit1 : 01

Edit3 : julio cortazar

Listbox item1: Bartolomé
……….item2 anastacio
……….item3 baltazar

Presiono boton guardar, y lo almaceno en la tabla 2, hasta aca ya lo tengo armado y funcionando.
Código Delphi [-]
/ graba Nº que hay en edit1  en la tabla1,
   /busca el nombre de la persona que hay en edit3 existe en la tabla1, si existe entonces guarda el numero, concatenando y separándolos on una coma
   
query1.Close; 
   query1.SQL.Clear; 
   query1.SQL.Add('Update tabla1'); 
   query1.SQL.Add('set tipo_AT1 = tipo_AT1 & ' + ',' + Edit1.text ); 
   query1.SQL.Add('where nombreT1 = ' + quotedstr(Edit3.text) ); query1.ExecSQL; 
   // solo para el edit3 y guarda en campo tipo_AT1
//  Lo que hace es: me busca en la tabla1 si el nombre que ingrese en el edit3 existe, si existe ese nombre en la tabla1 entonces me agrega el número que hay en el edit1 en el campo tipo_AT1.



Ahora lo que busco es…

Buscar en tabla1 el nombre que tengo en el edit3, si lo encuentro entonces guardo el contenido del edit1 en el registro de esa persona encontrada en la tabla1, en el campo tipo_AT1.

Esto tambien ya lo tengo funcionando.

Ahora esto es lo que no se como hacerlo…
Debo recorrer el listbox, tomo el primer item, hacer la búsqueda de ese item (seria buscar ese nombre en tabla1) en la tabla1, si lo encuentro tomo el contenido del edit1 y lo guardo en registro de esa persona, pero en el campo tipo_BT1, y continuo el recorrido del listbox.

……….. seria asi….. hago la búsqueda de lo que hay en el edit3 (hay un nombre) en la tabla1 si lo encuentra entonces guardaría el numero (edit1) en campo tipo_AT1. Y luego voy recorriendo listbox, haciendo la búsqueda de cada item (nombre, palabra) en la tabla1, si existe ese nombre o palabra entonces se guardaría ese numero (edit1) pero en el campo tipo_BT1 en el registro de ese nombre o palabra encontrado.

Espero que me comprendan lo que deseo hacer







gracias....

ecfisa 27-03-2013 22:07:44

Cita:

Empezado por Daniel10 (Mensaje 457679)
...
Ahora esto es lo que no se como hacerlo…
Debo recorrer el listbox, tomo el primer item, hacer la búsqueda de ese item (seria buscar ese nombre en tabla1) en la tabla1, si lo encuentro tomo el contenido del edit1 y lo guardo en registro de esa persona, pero en el campo tipo_BT1, y continuo el recorrido del listbox.

……….. seria asi….. hago la búsqueda de lo que hay en el edit3 (hay un nombre) en la tabla1 si lo encuentra entonces guardaría el numero (edit1) en campo tipo_AT1. Y luego voy recorriendo listbox, haciendo la búsqueda de cada item (nombre, palabra) en la tabla1, si existe ese nombre o palabra entonces se guardaría ese numero (edit1) pero en el campo tipo_BT1 en el registro de ese nombre o palabra encontrado.

Espero que me comprendan lo que deseo hacer

Hola Daniel10.

Y yo espero haberte comprendido... :)

Fijate si esto hace lo que estas necesitando:
Código Delphi [-]
...
var
  tmp : string;
  i : Integer;
begin
  with Query1 do
  begin
    tmp := SQL.Text;
    Close;
    SQL.Text:= 'UPDATE TABLA1 SET TIPO_BT1 = :PARAM1 WHERE NOMBRET1 =:PARAM2';
    Prepare;
    for i:= 0 to ListBox1.Count-1 do
    begin
      ParamByName('PARAM1').AsString := Edit1.Text;
      ParamByName('PARAM2').AsString := ListBox1.Items[i];
      ExecSQL;
    end;
    Close;
    Unprepare;
    SQL.Text := tmp;
    Open;
  end;
end;

Saludos.

Daniel10 30-03-2013 15:29:10

ante todo le doy gracias por su respuesta, voy probar este codigo, aunque ya tengo solucionaod mi inconveniente, lo hice con un ciclo for que recorra el listbox y vaya grabando en la bd.. igual probare este codigo y optare por el que mejor me quede..

saludos y gracias por su tiempo

Daniel10 30-03-2013 15:32:56

Código Delphi [-]
for ContListBox:= 0 to listbox1.items.count - 1 do 
begin    
  query1.Close;     
  query1.SQL.Clear;     
  query1.SQL.Add('Update tabla1');     
  query1.SQL.Add('set tipo_AT1 = tipo_AT1 & ' + ',' + Edit1.text );     
  query1.SQL.Add('where nombreT1 = ' + quotedstr(listbox1.items[ContListBox]) ); 
  query1.ExecSQL;  
end


La franja horaria es GMT +2. Ahora son las 00:52:43.

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