Delphi - guardar un numero en 2 campos,recorrer un lisbbox

 
Vista:

guardar un numero en 2 campos,recorrer un lisbbox

Publicado por rosaura (3 intervenciones) el 27/03/2013 17:17:27
Hola a todos, no se si el titulo mensage es el correcto, pero no sabia como ponerlo.


Tengo una BDados con Access, utilizo dlephi 5

mi BD tiene 2 tablas

En mi form tengo 4 edit, un listbox1, y algunos botones
Database1
Query1
DataSource2
Configurados correctamente


Tabla1; tabla con nombres de personas, tabla principal INFOPersonal
campos que tiene: nombre, edad, numRegistro

tabla2: registracion , anotación ()
campos que tiene: NumeroRegistro, Nombre,


edit1: ingreso numero (o tal vez sea numero de registro, auto numérico)
edit2: nombre persona mayor (solo para una persona, o sea solo un nombre)
edit3 nombre persona menor edad
listbox: ire agregando lo que vaya introduciendo en el edit3

Lo que busco es lo siguiente, luego de hacer una búsqueda en la tabla1 (tabla de nombres), agregare a los edit1 y edit2 los nombres que deseo, luego presiono boton guardar, y que me grabe estos nombres en la tabla2. (lo que hay en edit1, edit2 y edit3)
Asta acá todo bien, lo consigo hacerlo bien.

Pero aca esta mi inconveniente.
Cada vez que se inicia este registro o anotación en tabla2, se genera un nuevo numero que ingresare o que sera automático y este numero, seria el numero que identificaría a este registro en la tabla2, entonces deseo guardar este numero también en la tabla1, en el nombre de la persona que inicio este tramite.



/ graba Nº de registro de la tabla2 en la tabla1, en el campo de la persona que lo inicio, para la persona que esta en edit2
1
2
3
4
5
6
query1.Close;
  query1.SQL.Clear;
  query1.SQL.Add('Update INFOPersonal');
  query1.SQL.Add('set NumRegistro =  NumRegistro & ' + '-' + Edit1.text );
  query1.SQL.Add('where nombre = '  + quotedstr(Edit2.text) );
  query1.ExecSQL;


Lo que hace es: me busca en la tabla1 (tabla principal) si el nombre que ingrese en el edit2 existe, si existe ese nombre en la tabla entonces me agrega el número que hay en el edit1 en el campo NumRegistro.

Pero quería que este numero se guardara en el campo NumRegistro de las dos personas que se registran en esta operación, entonces para dos personas lo ice asi, (copie dos veces el mismo bloque de codigo, pero cambiándole los campos de persona)



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/ graba Nº de registro de la tabla2 en la tabla1, en el campo de la persona que lo inicio para la persona que esta en edit2
  query1.Close;
  query1.SQL.Clear;
  query1.SQL.Add('Update INFOPersonal');
  query1.SQL.Add('set NumRegistro =  NumRegistro & ' + '-' + Edit1.text );
  query1.SQL.Add('where nombre = '  + quotedstr(Edit2.text) );
  query1.ExecSQL;
 
 
/ graba Nº de registro de la tabla2 en la tabla1, en el campo persona menor que lo inicio edit3
  query1.Close;
  query1.SQL.Clear;
  query1.SQL.Add('Update INFOPersonal');
  query1.SQL.Add('set numRegistroMenorEdad =  numRegistroMenorEdad & ' + '-' + Edit1.text );
  query1.SQL.Add('where nombre = '  + quotedstr(Edit3.text) );
  query1.ExecSQL;


Obs:
query1.SQL.Add('set numRegistroMenorEdad = numRegistroMenorEdad & ' + '-' + Edit1.text );

el guion medio es solo para separar los numeros de resgistro, quedaria algo asi: 01-05-16-20-21-22 cada numero es un numero de registro de la tabla2


y me funciona correctamente,... pero..

como dije antes, tengo un listbox, en este listbox iria agregando varios nombres de personas menores de edad, y deseo que el NumRegistro sea guardado en todos los registros de todos los que están en el listbox3.

Me deberia recorrer todo el listbox e ir guardando el numero registro en el campo correspondiente a numregistro de esa persona que esta en el edit3

Un tremendo choclo todo lo que escribi… para mi lo entiendo perfectamente, pero a veces para el lector, el que lee, tal ves no lo pueda entender como lo entiendo yo.. cualquier cosa, tratare explicarme mejor si no lo entienden


//////////////////

Se me ocurrió a ver si alguno no me entiende tal ves me entienda mejor así.
Esta es mi base datos

Tabla1; tabla con nombres de personas, tabla principal INFOPersonal
campos que tiene: nombre, edad, numRegistroMayor, numRegistroMenorEdad

tabla2: registracion , anotación ()
Campos que tiene: NumeroRegistro, Nombre,

edit1: ingreso numero (o tal vez sea número de registro, auto numérico)
edit2: nombre persona mayor (solo para una persona, o sea solo un nombre)
edit3 nombre persona menor edad

Luego de ingresar los datos en edit1, edit2 y edit3, aria lo siguiente,

* Me guardaría estos datos en tabla2...... ya funcionado perfectamente

* buscaría lo que hay en edit2 en tabla1.nombre si existe ese nombre, entonces guarda lo que hay en edit1 en el campo tabla1.numRegistro de esa persona

* Ahora debería ir recorriendo el listbox, tomaría el primer valor (ListBox1.Items[i]) lo buscaría en tabla1.nombre si existe ese nombre, entonces guarda lo que hay en edit1 en el campo tabla1.numRegistroMenorEdad de esa persona.

* Luego tomaría el siguiente valor del listbox, y asi asta que termine los items
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

guardar un numero en 2 campos,recorrer un lisbbox

Publicado por E.T. (1244 intervenciones) el 27/03/2013 19:12:06
Hay que hacer un ciclo (bucle) con los items de tu listbox, algo asi
1
2
3
4
5
6
7
8
for i := 0 to listbox1.items.count - 1 do begin
  query1.Close;
  query1.SQL.Clear;
  query1.SQL.Add('Update INFOPersonal');
  query1.SQL.Add('set numRegistroMenorEdad = numRegistroMenorEdad & ' + '-' + Edit1.text );
  query1.SQL.Add('where nombre = ' + quotedstr(listbox1.items[i]) );
  query1.ExecSQL;
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar