Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-02-2013
Daniel10 Daniel10 is offline
Miembro
NULL
 
Registrado: abr 2012
Posts: 24
Poder: 0
Daniel10 Va por buen camino
guardar un numero en dos tablas

Mi aplicación debe guardar datos en una base datos, la cual tiene 2 tablas,

Tabla campos

Tabla1: nombre_1, antiguedad_1, numero_Op_1
Tabla2: NumeroOperacion_2, nombrePersona_2

La tabla1 ya esta llena de información, solo el campo numero_Op_1 esta vacio, y este debera ser actualizado

Tengo un formulario para cargar datos en la tabla2 y agregar un dato al campo numero_Op_1 de la tabla1.


Cuando cargo estos datos en los edit, luego de presionar el Boton guardar, me deberia guardar esos tres datos (NumeroOperacion_2, nombrePersona1_2) en la Tabla2.

Asta aca ya lo tengo armado un funcionando

Ahora lo que deseo es lo siguiente

y también al mismo tiempo, agregar el numero de operación que izo cada persona

Quiero buscar en la tabla1 el dato nombrePersona_2 (este seria nombre y apellido de una persona) y cuando lo encuentre agregar al registro de esa persona, en el campo numero_Op_1 el campo NumeroOperacion_2.

ejemplo mas entendible

Tabla1
nombre_1 antiguedad_1 numero_Op_1
JOSE DAROSA 2 AÑOS 01
MARIA INES 10 AÑOS
CARLOS MONTERO 20 AÑOS 02


TABLA2
NumeroOperacion_2 nombrePersona_2
01 JOSE DAROSA
02 CARLOS MONTERO


Algo asi seria, la tabla1 ya esta cargada, solo el campo numero_Op_1 estaría vacio, cuando empiezo cargar datos en la TABLA2, cuando un registro me debe guardar este tabla y tambien buscar el nombre de la persona en la otra tabla y agregar ese numero de operación en el campo numero_Op_1.
Y asi sucesivamente, cada ves que agrego un registro en la tabla2, me genera un numero de operación el cual lo debo guardar también en la otra tabla en el registro de la persona que genero esa operacion.
Creo que ya me abre explicado bien.



Para guardar los datos en la tabla2 (esto me funciona)

ADOConnection2
DataModule2.ADOConnection2
ADOTable2
tableName: tabla2


esto lo agregue cuando quise ponerla opcion que guardara el campo NumeroOperacion_2 pero en la otra tabla (Tabla1)

ADOConnection1
DataModule2.ADOConnection1
ADOTable1
tablename: table1

Código Delphi [-]
  procedure TFAlta.Button2Click(Sender: TObject);
  var
     xx : integer;
     Numer : string;
  begin
     
    // me guarda datos en la tabla2 
  ADOTable2.APPEND;
  ADOTable2.FieldByName('NumeroOperacion_2').AsString := Edit1.Text;
  ADOTable2.FieldByName('nombrePersona_2).AsString := Edit2.Text;
  ADOTable2.Post;
   
   
  // aca pondre el bloque que me actualizara la base datos principal
  // Agregando numero de operacion que hayan realizado alguna persona
  // que este registrada en la b datos
  //
   
  //Me falta ver que método de busqueda debo poner para buscar el nombre de la persona, y //agregar el numero de operación en ese registro
   
   
  ADOTable1.APPEND;
  ADOTable1.FieldByName('numero_Op_1').AsString := Edit1.Text;
  ADOTable1.Post;
mmm... espero que me aya explicado bien.... ya di tantas vueltas que ni yo entiendo lo que quiero hacer,,,
Responder Con Cita
  #2  
Antiguo 12-02-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Daniel10 Ver Mensaje
mmm... espero que me aya explicado bien.... ya di tantas vueltas que ni yo entiendo lo que quiero hacer,,,
Pues si tú no lo sabes... ¿cómo quieres que lo sepamos los demás para poder ayudarte?
Debes seguir la regla número uno: divide y vencerás

Primero debes tener totalmente claro lo que quieres hacer y cómo lo quieres hacer, incluso con un sencillo esquema en papel.
Luego ve paso a paso, no pases al segundo paso mientras no tengas perfectamente funcionando el primer paso.
Y así, poco a poco.

Realmente ese problema que tienes es algo muy simple, si te detienes un poquito a pensar claramente, verás que es muy simple.
Responder Con Cita
  #3  
Antiguo 17-02-2013
Daniel10 Daniel10 is offline
Miembro
NULL
 
Registrado: abr 2012
Posts: 24
Poder: 0
Daniel10 Va por buen camino
tratando de dividir, pero sigo con poblemas

divide y venceras.. si.. toy en eso, jaja....


logro guardar el dato de la tabla 2 en la tabla1

tabla1… es la tabla principal, la general, la que tiene registradas a personas y datos particulares, y un campo donde registrare cada numeor oepracin que realiza esta persona

tabla2… esta es para registrar las operaciones o tramites que realizan las personas que estan en la tabla1


Hace la búsqueda de la persona de tabla2, lo busca en tabla 1, si esta, entonces toma el valor del campo NumeroOperacion_2 y lo graba en el registro de esa persona en tabla 1 en campo numero_Op_1.

pero veo este error, si la persona realiza 2 operaciones/tramite, seguidas, tendra 2 números de operación o tramite realizado, y estos dos numeros deberia almacenarse en la tabla2 cosa que si lo hace bien pero en su respectivo campo.. ahora deberia guardar el en la tabla1, cosa que si lo hace, pero sobrescribe al anterior numero.

Lo que deberia hacer es agregar, concatenar el dato que ya tenia y agregarle el nuevo.

Código Delphi [-]
// esto me guarda en tabla2 operación que realizo una persona, 
  ADOTable2.APPEND;
  ADOTable2.FieldByName('NumeroOperacion_2').AsString := Edit1.Text;
  ADOTable2.FieldByName('nombrePersona_2).AsString := Edit2.Text;
  ADOTable2.Post;

en edit1.text esta el valor nuevo para agregar a la otra tabla, si la persona edit2.text esta registrada en esa otra tabla.

y con este codigo, busco en la otra tabla, (tabla1) si la persona esta registrada, y si esta entonces deberia AGREGAR el numero de operación que realizo esa persona


query1.Close;
query1.SQL.Clear;
query1.SQL.Add('Update tabla1');
query1.SQL.Add('set numero_Op_1 = ' + Edit1.text );
query1.SQL.Add('where nombre_1 = ' + quotedstr(Edit2.text) );
query1.ExecSQL;

que me pueden decir, como hacerlo para agragar, no borrar el numero que pudiera existir.

Probe algo asi

Aa := ADOTable2.FieldByName('NumeroOperacion_2').AsString;

Y despues antes de query1.close puse esto
Edit1.text := aa + ' ' + edit1.text;

Supuse que concatenaria los valores, el valor viejo aa, le agrego un espacio en blanco para separar los numeros ' ' y el valor nuevo edit1.text, pero me salta un par de errores, y cuando saco esto.. esta todo bien…

Y solo probé por probar, para ver que salía… y escribi esto antes de query1.close
edit1.text := edit3.text;

y tamben me salta error, es como que edit1.text no se puede modificar..
Responder Con Cita
  #4  
Antiguo 17-02-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No entiendo bien.
Lo que pretendes es insertar un numero en la tabla 1, dependiendo de lo que exista ?.
Si existe entonces sumarle otro numero o que ?.
La verdad no entiendo.
Seria bueno saber con que base de datos trabajas.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 18-02-2013
Daniel10 Daniel10 is offline
Miembro
NULL
 
Registrado: abr 2012
Posts: 24
Poder: 0
Daniel10 Va por buen camino
Hola y gracias por responder..

Tratare de explicar un poco mejor..

Tabla1, contiene datos particulares individuales de personas, todos campos tipo string
.nombreApellido
.identificacion
.edad
.fehcaNacio
.trabajo
.Comentaro
.Numero_Op_1

Donde el campo numero_Op_1, creo que seria de tipo string, yo almacenaría números de tramites, solicitudes o operación que realiza esa persona.

en la tabla2, registraría las operaciones/tramites/solicitudes que se realiza

tabla2
. Numero
. nombreApellido
. Observacion
. Comentaro

Donde el campo numero seria tipo integer, cada vez que se realiza un registro en esta tabla se incrementa en uno este campo, siempre apuntando al nuevo registro a introducir

ASi seria, viene JUAN SOLIS, el cual ya esta registrado en tabla1.
Y realiza un tramite, entonces se lo registra en tabla2, se completaría los datos del formulario_Tabla2 que pide, en este caso puse algunos, pero son varios mas.

Si la tabla2 esta vacia, seria por que nunca se registro ningun tramite, entonces el valor seria 1 (campo numero=1) se completaria con los datos que pide y se guardaría estos datos en tabla2.
Y a la vez, se guardaría este numero de operación o tramite en la tabla1, se buscaria si existe esa persona en esa tabla, y si existe se guardaría ese numero en el campo correspondiente a numero operación.

Después vuelve a registrarse JUAN SOLIS, se registra otro operacion/tramite se completa los datos del formulario_tabla2 pide, el campo NUMER0 es automático, me muestra el numero que sigue al que ya esta registrado, en esta caso seria 2 (campo numero=2) y luego rellenar todo los datos, se guarda.

Y ahi.. me deberia hacer lo mismo, buscar ese nombre d ela persona en la tabla1, si existe ese nombre entonces deberia agregar (SOLO AGREGAR) este numero al campo que corresponda los numeros de operacion, seria el campo Numero_Op_1.

La tabla 2 quedaría asi

Numero nombreApellido Observacion Comentaro
01 JUAN SOLIS sin observación Solicita el permiso por primera vez
02 JUAN SOLIS segunda solicitud la solicitud anterior fue extraviada


en la tabal1, en el campo de numero_Op_1 del registro de esta persona quedaria asi


tabla1
nombreApellido edad identificacion numero_Op_1 fechanacio comentario ....
JUAN SOLIS 55 10.025.545 01, 02 .... ...



Si viene PEDRO ARECO realiza un tramite, le correspondería el numero de tramite 3, y en tabla 1 se pone este 3 en el campo correspondiente,

si vuelve JUAN SOLIS para hacer otro trmaite, le tocaría el numero 4, se completa todo el formulario_tabla2 se guarda y se guarda este numero 4 en el registro de JUAN SOLIS en el campo numeor_operacion, y ahora quedaria el registro de juan solis asi

tabla2 (tabla de registro operaciones)
Numero nombreApellido Observacion Comentaro
01 JUAN SOLIS sin observacion Solicita el permiso por primera vez
02 JUAN SOLIS segunda solicitud la solicitud anterior fue extraviada
03 PEDRO ARECO renovar solicitud nnn
04 JUAN SOLIS segundo reclamo reclama por segunda ves, la primera ves extraviaron los papeles


tabla1
nombreApellido edad identificacion numero_Op_1 fechanacio comentario ....
JUAN SOLIS 55 10.025.545 01, 02, 04 ....


La base datos la ice con acces 2000

ais me deria funcionar, pero lo que obtengo es que me sobrescriba el nuevo dato, borrando el contenido que es tenia.
Lo que quiero es solo agregarlo, separado por una coma, o un espacio.

ASi de esta manera, cuadno en otro formulario de búsqueda de personas, se busca a JUAN SOLIS, se encuentra y tendré en un edit, en un listbox o en otra cosa, todas las operaciones y tramites que esta persona aya realizado y con la posibilidad de acer un click en el numero y poder ver los damas datos de ese numero de operación


---------------------------

* DataBase (aliasname: Tabla1, DataBaseName: DBnombre)
* Query (name:: Query1, DataBaseName: DBnombre, SQL Select * from Tabla1?
* Datasource2 (DataSet: Query1)







Con esto busco en tabla1, si existe esa persona (campo nombreApellido) en edit1.text esta el nombre de la persona que realiza el tramite.
Si existe esa persona en la tabla1 entonces le agrego lo que hay en el edit3.text en el campo numer (campo numer es de la tabla 1 y corresponde al campo de numeros de operacion, aca deberia ir concatenando)


Código Delphi [-]
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('Update Tabla1');
query1.SQL.Add('set Numer = ' + QuotedStr(Edit3.text)); // tiene un numero, que seria un numero de tramite que realizo la persona
query1.SQL.Add('where nombreApellido = ' + QuotedStr(Edit1.text)); // en edit1 hay un nombre
query1.ExecSQL;
Responder Con Cita
  #6  
Antiguo 18-02-2013
Avatar de ozsWizzard
ozsWizzard ozsWizzard is offline
Miembro
 
Registrado: may 2004
Ubicación: Murcia
Posts: 190
Poder: 20
ozsWizzard Va por buen camino
A lo mejor estoy simplificando demasiado lo que quieres pero según he entendido en el último mensaje, bastaría con poner esto en base a lo que has puesto en el primer mensaje

Código Delphi [-]
   
  //Me falta ver que método de busqueda debo poner para buscar el nombre de la persona, y //agregar el numero de operación en ese registro
  //Aquí lo retomo, suponiendo que ADOTable1 tenga la select de Table 1 
   
  ADOTable1.Locate('nombreApellido', VarArrayOf([ ADOTable2.FieldByName('nombrePersona_2').AsString]);
  ADOTable1.Edit;
  ADOTable1.FieldByName('numero_Op_1').AsString := ADOTable1.FieldByName('numero_Op_1').AsString + Edit1.Text;
  ADOTable1.Post;

Según el último bastaría con



Código Delphi [-]
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('Update Tabla1');
query1.SQL.Add('set Numer = Numer + ' + QuotedStr(Edit3.text)); // tiene un numero, que seria un numero de tramite que realizo la persona
query1.SQL.Add('where nombreApellido = ' + QuotedStr(Edit1.text)); // en edit1 hay un nombre
query1.ExecSQL;

En Access creo que el signo para concatenar es +.


Lo dicho, lo veo demasiado simple para que sea tu duda, pero por si acaso lo pongo.
__________________
La Madurez se llama...
~~~Gaia~~~
Responder Con Cita
  #7  
Antiguo 19-02-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No veo mucha logica a la forma de hacer esto.
Me parece que lo mejor es crear una tabla (tabla 3) que sea la que guarde los datos de los tramites.
Simplemente se usa un campo que determine quien hice el tramite, que tramite y un numero que lo identifique.
Hacer un update para que sume o aumente una coma y un numero lo veo ilogico, mas pensando en posteriores reportes.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #8  
Antiguo 19-02-2013
Daniel10 Daniel10 is offline
Miembro
NULL
 
Registrado: abr 2012
Posts: 24
Poder: 0
Daniel10 Va por buen camino
gracias por el tiempo que se toman para responder...

probe codigo, funciona, peor solo para el primer registro
Código Delphi [-]
query1.Close; query1.SQL.Clear; query1.SQL.Add('Update Tabla1'); query1.SQL.Add('set Numer = Numer + ' + QuotedStr(Edit3.text)); // tiene un numero, que seria un numero de tramite que realizo la persona query1.SQL.Add('where nombreApellido = ' + QuotedStr(Edit1.text)); // en edit1 hay un nombre query1.ExecSQL;

En tabla1 lo tengo a juan solis, despues de registrarce en varias oepraciones, en tabla1 queda asi

tabla1
nombreApellido edad identificacion numero_Op_1 fechanacio comentario ....
JUAN SOLIS.... 55....10025545.......010204......20/02/70...sin comentario

En la columna numero op_1 me concatena las 3 operaciones que realizo, si realiza llega a realizarse mas, me continua agregando el numero de operación.
Pero solo funciona para este registro, es el primer registro en la base datos, si viene otro el segundo que esta registrado en la base datos tabla1 no agrega el numero que aya realizado.

Funciona solo para el primer registro, para los demás no.


No veo mucha logica a la forma de hacer esto.
Me parece que lo mejor es crear una tabla (tabla 3) que sea la que guarde los datos de los tramites.


la tabla2 se guarda los datos de cada tramite, enumerados, cada tramite un numero de identificacion, no se repiten los numeros, pero si se puede repetir que que realiza el tramite/operacion.

En tabla1 solo se usa para cargar un nuevo registro de una persona, para modificar algun dato de alguna persona o para agregar el numero de operacion que aya realizado en algun momento. Asi cuando se desee obtener los datos de una persona, se obtendra los datos personales y si tiene algun tramite, operacion.

Hacer un update para que sume o aumente una coma y un numero lo veo ilogico, mas pensando en posteriores reportes.

la coma era solo para separar los numero, uno de otro.
En el ejemplo que puse de JUAN SOLIS, este realizo 3 tramites, los cuales en tabla2 queda registrado. Y en tabla uno deberia quedar unicamente los numeros de tramites que el hizo.

Algo asi deberia mostrarce en el formulario de busqueda, junto con demas datos que haya para mostrar

Nombre y apellido___: JUAN SOLIS
Nro. Identificacon___: 10.025.545
Edad_____________: 55
Numeros tramites___: 01, 02, 04

En este caso 01, 02 y 04 con los tramites que juan solis realizo.

creo que me van a entender, jaja.. pero igual.. gracias por tomarce tiempo leer y tratar de entender.

saludos a todos y buenas noches... ya me voy a descansar...
Responder Con Cita
  #9  
Antiguo 19-02-2013
Avatar de ozsWizzard
ozsWizzard ozsWizzard is offline
Miembro
 
Registrado: may 2004
Ubicación: Murcia
Posts: 190
Poder: 20
ozsWizzard Va por buen camino
Si el problema es que no sale la coma, sustituye esta línea
Código Delphi [-]
query1.SQL.Add('set Numer = Numer + ' + QuotedStr(Edit3.text)); // tiene un numero, que seria un numero de tramite que realizo la persona

por esta
Código Delphi [-]
query1.SQL.Add('set Numer = Numer + ' QuotedStr(', ')  + ' + ' + QuotedStr(Edit3.text))
__________________
La Madurez se llama...
~~~Gaia~~~
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Guardar Imagen en Tablas DBF BPL Varios 2 30-07-2010 20:26:51
guardar color como numero o cadena Max_E. Varios 2 01-11-2008 20:20:34
como guardar un numero en la BD a travez del InputBox Nelly Varios 1 18-01-2006 21:12:59
EDIT guardar en dos tablas distintas el_barto Conexión con bases de datos 7 20-06-2005 21:14:17
Numero de Tablas en una BD lroblesco Conexión con bases de datos 0 15-03-2005 09:18:13


La franja horaria es GMT +2. Ahora son las 23:56:31.


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
Copyright 1996-2007 Club Delphi