Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-07-2004
RyAr RyAr is offline
Miembro
 
Registrado: oct 2003
Posts: 74
Poder: 21
RyAr Va por buen camino
Leer fila en la que estoy situado en un DBgrid

Buenas a todos, tengo un problemilla con un dbgrid. El caso es que tengo men formulario un dbgrid basado en un query a una tabla paradox, y me gustaria que al seleccionar una fila en el dbgrid, al darle a un boton de modificar me saliera otro form con dbedits para poder editar los datos de la tabla. Mi pregunta es, ¿como se en la fila en la que estoy posicinado en el dbgrid?

Saludos, y gracias
Responder Con Cita
  #2  
Antiguo 07-07-2004
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
La fila es fácil ya que tu dbgrid esta moviendo el propio cursor de tu consulta asi que en el momento de posicionarte en una determinada fila puedes preguntar por cualquier campo identificativo/indice de la consulta y por ejemplo a su vez hacer un locate en una tabla.

Código Delphi [-]
tutabla.locate ("campoindicetabla", query1.fieldbyname("campoindice").value,[]);
// aqui abririas tu form con tus dbedits apuntando a tutabla.

Saludos, Tony
Responder Con Cita
  #3  
Antiguo 07-07-2004
RyAr RyAr is offline
Miembro
 
Registrado: oct 2003
Posts: 74
Poder: 21
RyAr Va por buen camino
Buenas, lo que me has dicho funciona, pero tengo un problema tal y como lo he puesto, y es que si el mismo dia hay varias reservas me saca la solo la primera. El codigo que he metido es este:

Código Delphi [-]
Form2.Table2.Locate ('FECHARESERVA', Form2.Query2.Fieldbyname('FECHARESERVA').value,[]);

Tambien tengo estos campos como clave EMPRESA2, HORAINICIO, HORAFIN, ANULADO2, por lo que me gustaria incluirlos en el locate para que vaya a ese registro, y no al primero del dia, que puede ser de otra reserva, como lo meto??

Saludos, y gracias
Responder Con Cita
  #4  
Antiguo 07-07-2004
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
No tienes ningun campo clave que te identifique un único registro??? si no lo tienes en el locate puedes meter varios campos:

Código Delphi [-]
Form2.Table2.Locate('EMPRESA2;HORAINICIO;HORAFIN;ANULADO2', VarArrayOf([Form2.Query2.Fieldbyname('FECHARESERVA').value, 
Form2.Query2.Fieldbyname('HoraInicio').value, Form2.Query2.Fieldbyname('HoraFin').value,Form2.Query2.Fieldbyname('Anulado2').value]), []);

Espero que te sirva, saludos, Tony

Última edición por tcp_ip_es fecha: 07-07-2004 a las 13:02:48.
Responder Con Cita
  #5  
Antiguo 07-07-2004
RyAr RyAr is offline
Miembro
 
Registrado: oct 2003
Posts: 74
Poder: 21
RyAr Va por buen camino
Buenas, no tengo campo unico, ya que te comento. Esta tabla esta relacionada con otra mediante el campo EMPRESA2, y lo que hace es almacenar simplmente las fechas de las reservas de los salones, y es que he declarado todos los campos como clave primeria, ya que dos empresas puede tener el mismo dia, y a las mismas horas una reserva, y que ambas no esten anuladas.

El codigo que me has dado, siempre se posiciona en el primer registro de la tabla. ¿Alguna idea mas?.

Gracias por tu paciencia

Saludos
Responder Con Cita
  #6  
Antiguo 07-07-2004
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
No te entiendo muy bien, vamos a ver si haciendo un locate con esos cuatro campos no existe un registro unico sino varios, es lógico que se posicione en el primero que encuentra, si tu tabla solo tiene esos cuatro campos y hay varios registros con esos cuatro campos iguales lo que deberías hacer es mostrar un dbgrid editable ya que sobre dbedits solo puedes editar/mostrar un solo registro.

Pon un if a ver si te realiza el locate:

Código Delphi [-]
if Form2.Table2.Locate('EMPRESA2;HORAINICIO;HORAFIN;ANULADO2', VarArrayOf([Form2.Query2.Fieldbyname('FECHARESERVA').value, 
Form2.Query2.Fieldbyname('HoraInicio').value, Form2.Query2.Fieldbyname('HoraFin').value,Form2.Query2.Fieldbyname('Anulado2').value]), []) then 
// abres tu form
else
 showmessage('No existen entradas');

Saludos, Tony
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


La franja horaria es GMT +2. Ahora son las 12:18:08.


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