Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-04-2007
Avatar de Alejandrina
Alejandrina Alejandrina is offline
Miembro
 
Registrado: mar 2007
Ubicación: Medellin
Posts: 46
Poder: 0
Alejandrina Va por buen camino
Question Actualizar tabla

Hola a todos,
Tengo el siguiente problema y es que necesito actualizar los datos en una tbl pero el procedimiento que tengo solo lo hace con el primer registro, que error tengo?

Código:
DmProcedimientos.QTerminarSolicitudes.params[0].assmallint := strtoint(DBENumeroSolicitud.text);;
      DmProcedimientos.QTerminarSolicitudes.Close;
      DmProcedimientos.QTerminarSolicitudes.open;
      while not DmProcedimientos.QTerminarSolicitudes.eof do
        begin
          DmSip.TblSolicituDiarios.edit;
          Dmsip.TblSolicituDiarios['HORATERMINACION']:=horaFinSolicitud;
          Dmsip.TblSolicituDiarios['ESTADO']:=estado;
          Dmsip.TblSolicituDiarios['DESCRIPACT']:=descripAct;
          DmSip.TblSolicituDiarios.post;
          DmProcedimientos.QTerminarSolicitudes.next;
        end;
Gracias por la ayuda que me puedan brindar
__________________
Alejandrina
Responder Con Cita
  #2  
Antiguo 26-04-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
El problema está en que estás recorriendo un DataSet y actualizando en otro.
Puedes explicar lo que es QTerminarSolicitudes y TblSolicituDiarios para ayudarte mejor, sobre todo si están relacionados de alguna manera.
Responder Con Cita
  #3  
Antiguo 26-04-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Ese bucle que haces es muy costoso, es más rápido una consulta de este tipo:
Código SQL [-]
update solicituDiarios
set HORATERMINACION = :horaFinSolicitud,
    ESTADO = :estado;
    DESCRIPACT' = :descripAct
where NumeroSolicitud = :numero;

Código Delphi [-]
query1.sql.text := todo el texto anterior;
query1.parambyname('horaFinSolicitud').AsDatetime := datetimepicker1.date;
query1.parambyname('estado').AsXXXX := lo que sea
query1.parambyname('descripAct').AsXXXX := lo que sea;
query1.parambyname('numero').AsInteger := strtoint(dbenumero.text);
query1.ExecSql;
con eso actualizarás todos los registros de la tabla solicitudDiarios.

Busca un manual de Sql si tienes ansiedad
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 09-06-2007
Avatar de Alejandrina
Alejandrina Alejandrina is offline
Miembro
 
Registrado: mar 2007
Ubicación: Medellin
Posts: 46
Poder: 0
Alejandrina Va por buen camino
Question Siempre graba en el mismo registro

Hola, aun tengo problemas con guardar en tablas
Lo que pasa es lo siguiente:
Pretendo que cuando un elemento es seleccionado de un DBLookupComboBox este se grabe en la TblEnsamble y visualice los datos de este dato en un TDBGrid, asi que hago lo siguiente

Código:
procedure TFrmOrdenProceso.DBLOrdenCloseUp(Sender: TObject);
begin
  DmSip1.TblEnsamble.edit;
  DmSip1.TblEnsamble['DOCENSAMBLE']:=DBEDocumentoE.Text;
  DmSip1.TblEnsamble['DOCORDEN']:=DBLOrden.Text;
  DmSip1.TblEnsamble.Post;
end;
asi para guardar la relacion en la TblEnsable, pero cuando reviso la tabla siempre hay un solo registro, y fuera de esto no me esta mostrando los datos en el TDBGrid.
Espero haberme explicado bien al igual que espero que me puedan colaborar, de ante mano muchas gracias
__________________
Alejandrina
Responder Con Cita
  #5  
Antiguo 09-06-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Yo no usaría el evento CloseUp, ya que el usuario puede equivocarse con facilidad y grabar más registros de los que realmente quiere. Pondría un botón guardar.

Es lógico que solo guarde 1 registro, porque haces un TblEnsamble.edit, es decir, Editar el registro actual de la tabla Ensamble. Tendrás que hacer un TBlEnsamble.Insert o Append para añadir un registro nuevo al presionar el botón que dije al principio.

Para que el Grid muestre los datos, debes hacer una relación Maestro-detalle. Hay varias formas de hacerlo. Busca en el foro y si tienes dudas las comentas.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 13-06-2007
Avatar de Alejandrina
Alejandrina Alejandrina is offline
Miembro
 
Registrado: mar 2007
Ubicación: Medellin
Posts: 46
Poder: 0
Alejandrina Va por buen camino
Question Visualización de los datos

Hola,
Lepe tenias toda la razón cambie el edit por el insert y ahora guarda todos los datos pero tambien hice la relación maestro-detalle pero el TDBGrid solo me muestra un registro (el segundo dato que ingreso no inserta en el TDBGrid los datos que se ingresan). Que puedo mirar para que este TDBGrid muestre cada uno de los datos que el usuario esta ingresando? (El DataSource del TDBGrid es una vista esto influye en algo?).
Y pues la parte del control de registros a grabar la pensaba manejar con un TDBNavigator, la idea es que visualice los datos y si alguno no va lo quita.
__________________
Alejandrina
Responder Con Cita
  #7  
Antiguo 13-06-2007
Avatar de Alejandrina
Alejandrina Alejandrina is offline
Miembro
 
Registrado: mar 2007
Ubicación: Medellin
Posts: 46
Poder: 0
Alejandrina Va por buen camino
Question

Bueno ya revise de nuevo y efectivamente hice la relacion del cod de la vista con el cod de la otra tabla, pero aun asi sigue sin mostrarme los datos, y pues no estoy usando commit...¿que mas podra ser?

Muchas gracias por tu ayuda
__________________
Alejandrina
Responder Con Cita
  #8  
Antiguo 13-06-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Lo primero es asegurarse que los registros que se dan de alta, forma parte de la relación Maestro-Detalle. En dicha relación siempre hay un campo en común en el Maestro y Detalle. Si olvidas asignar ese campo en el detalle, el registro no formará parte de la Relación y nunca aparecerá en pantalla (aunque puede estar en la tabla guardado en la tabla detalles).

Otra cosa que puede estar fallando es el tipo de transacción que hagas, ya que usas vistas, me parece un motor cliente/servidor, y si aquí usas Commit, los cambios no se reflejan hasta cerrar la consulta y volverla a abrir.

Saludos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
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
Actualizar un campo de una tabla con datos que se encuentran en otra tabla Morphine SQL 4 15-12-2006 22:47:42
Actualizar una tabla con una consulta de otra tabla JODELSA SQL 2 14-09-2006 04:07:01
Actualizar tabla con datos de otra tabla ElDioni SQL 2 02-05-2006 16:04:04
actualizar tabla davidgaldo Conexión con bases de datos 5 18-02-2004 15:21:59
no puedo actualizar una tabla jzginez Firebird e Interbase 8 07-12-2003 02:38:12


La franja horaria es GMT +2. Ahora son las 09:11:57.


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