Club Delphi  
    Paypal   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 17-05-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 27
__cadetill Va por buen camino
un par de cosas

1.- El TTable no lo necesitas para nada. Mírate el mensaje 6 de este hilo
2.- Para que una consulta la puedas modificar, has de poner la propiedad del TQuery RequestLive a true o bien usar el componente TUpdateSQL (creo recordar que se llama)

Espero te sirva
Responder Con Cita
  #2  
Antiguo 18-05-2004
RyAr RyAr is offline
Miembro
 
Registrado: oct 2003
Posts: 74
Poder: 23
RyAr Va por buen camino
Pero si que necesito la tabla para poder insertar registros y ver los datos en el grid, puesto que sino no sale nada en el grid, y no puedo insertar registros desde dbedit, no???

Una vez he activado esa propiedad, en un boton de guardar pongo este cogido query.updaterecord; y al volver a visualizar la tabla no se guardan los cambios.

Estoy liado con la tabla??

Saludos
Responder Con Cita
  #3  
Antiguo 18-05-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
RyAr

De tus mensajes en este hilo queda claro que apenas empiezas con bases de datos y muy posiblemente con Dephi así que primero que nada te recomiendo te leas algún tutorial para conocer el modelo entidad-relación- fundamental para el entendimiento y diseño de bases de datos relacionales. Una búsqueda en Google te ayudaá en esto, como muestra te pongo este. Después será bueno que entiendas lo básico del lenguaje SQL- imprescindible para obtener y modificar datos en las tablas de una base de datos. También encontrarás muchos tutoriales en línea como este. Desde luego será muy importante que aprendas los rudimentos de la conexión a bases de datos con Delphi para lo cual dispones de la ayuda del mismo Delphi y los demos que incluye. El acceso a bases de datos se incluye en prácticamente cualquier libro básico de Delphi y puedes incluso bajar gratuitamente La Cara Oculta de Delphi 4 que si bien fue escrito para la versión 4, te servirá perfectamente para empezar.

No se trata que profundices en cada uno de estos tópicos sino sólo que te des una buena idea de qué trata todo el asunto de manera que entiendas bien, por ejemplo, la diferencia entre usar un TTable y un TQuery para no andar "dando palos de ciego". Si bien la lectura de estos temas te puede llevar una semana, a la larga será más rápido que el método de "prueba y error" y te dará unos fundamentos mucho más sólidos para tu desarrollo.

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

Dicho lo anterior y para que no se diga que no contesto te comento que normalmente los datos que obtienes de una consulta SQL con un TQuery no son editables salvo que se den ciertas condiciones. En tu caso es muy posible que así sea para lo cual bastará que pongas la propiedad RequestLive del Query en true. Con esto te olvidas por completo de tu componente TTable- bórrala ya del formulario.

Ahora, si resultase que tu consulta SQL no es editable (aun con RequestLive) puedes optar, al menos, por dos caminos: uno es el usar una componente TUpdateSQL para proveer al motor de bases de datos de las consultas SQL necesarias para la edición, inserción y borrado de registros. Pero, claro, tendrás que entender un poco más de cómo funcionan las componentes de acceso a bases de datos y de SQL en general. También puedes olvidarte del Query y quedarte con tu TTable y utilizar el evento OnFilterRecord que te permite filtrados más complejos al permitirte decidir por cada registro si se muesra o no. Pero si bien te puede parecer lo más sencillo yo en lo personal usaría esto como último recurso ya que suele ser bastante más lento en rendimiento que otros métodos.

// Saludos
Responder Con Cita
  #4  
Antiguo 19-05-2004
RyAr RyAr is offline
Miembro
 
Registrado: oct 2003
Posts: 74
Poder: 23
RyAr Va por buen camino
Buenas, ya he estado mirando los manuales, y toda esta confusion se debe a un profesor que nos dio Delphi sin tener ni puta idea, así va la enseñanza...

Te comento que ya he logrado hacer lo que queria, solo hay un problema. Quiero actualizar un dato en todas las filas el cual introduzco por teclado, siendo este el codigo SQL:

Código SQL [-]
UPDATE basedatos 
SET Precio_unidad = recio, Total = Superficie * Precio_unidad 
WHERE Superficie IS NOT NULL

Y le paso el precio que introduzco en un edit:

Código Delphi [-]
Form3.Query1.Close;
Form3.Query1.ParamByName('precio').AsFloat := strtofloat(Edit1.Text);
Form3.Query1.Open;

Entonces al darle al boton de aceptar me salta este error "Error creating cursor handle", y entonces me voy a ver los registros, y da la casualidad que ha actualizado todos menos el primero, y que si cierro y vuelvo a entrar al programa estan todos actualizados, ¿que problema hay?.

Saludos, y gracias por tu apciencia
Responder Con Cita
  #5  
Antiguo 19-05-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por RyAr
Código Delphi [-]
Form3.Query1.Close;
Form3.Query1.ParamByName('precio').AsFloat := strtofloat(Edit1.Text);
Form3.Query1.Open;

Usa ExecSQL en lugar de Open. Open es para consultas tipo SELECT que te devuelven registros y ExecSQL es para consultas que actualizan, insertan o borran registros.

// Saludos
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


La franja horaria es GMT +2. Ahora son las 18:32:04.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi