Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Insertar dato en Tabla Paradox (https://www.clubdelphi.com/foros/showthread.php?t=60179)

Abuelo7 23-09-2008 19:15:40

Insertar dato en Tabla Paradox
 
Hola amigos.

Tengo una tabla con 2 campos, Usuario y Fecha.

Lo que quiero es insertar en el campo Usuario el contenido de un Edit1.Text

He hecho un código pero no me funciona.

Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
        if Key=#13 then
 begin
        Table1.Open;

        Table1.Append;
        Table1.fieldByName('Usuario').Value := Edit1.Text;

        end;
 begin
        Table1.Close;
        Edit1.Text :='';

        end;
        end;

end.

Que hago mal?

Gracias

Manuel

roman 23-09-2008 19:18:21

A primera vista, parece que te falta poner

Código Delphi [-]
Table1.Post;

después de la asignación del Edit.

// Saludos

Abuelo7 23-09-2008 19:33:06

Hola Roman.

Gracias, ha funcionado perfectamente ahora.

Una pregunta:

Tengo que introducir el campo fecha. Supongo que Table1.Post debo colocarlo una vez asignado el Edit y la fecha.

Es así?

Gracias

Manuel

roman 23-09-2008 19:35:47

Así es. Post lo que hace es mandar a la base de datos todos los cambios que hagas en el registro actual (en este caso el registro nuevo).

// Saludos

eduarcol 23-09-2008 20:08:05

Solo agregar que al tratarse de BDE y paradox hay que darle el flushbuffer en el afterpost

roman 23-09-2008 20:22:43

¡Ah caray! Pues yo el FlushBuffers sólo lo he usado cuando tengo un Query con CachedUpdates en true y necesito relanzar la consulta; o bien, cuando necesito que otras estaciones vean de inmediato los cambios.

// Saludos

eduarcol 23-09-2008 20:53:22

Cita:

Empezado por roman (Mensaje 315805)
¡Ah caray! Pues yo el FlushBuffers sólo lo he usado cuando tengo un Query con CachedUpdates en true y necesito relanzar la consulta; o bien, cuando necesito que otras estaciones vean de inmediato los cambios.

// Saludos

la verdad es que cuando comenze con el paradox se me presentaba un problema de perdida de información, alguien aqui, creo que fue Marcos me sugirio eso y hasta el sol de hoy

marcoszorrilla 23-09-2008 21:22:10

Tiene razón Eduardo, es preciso poner en el evento AfterPost del Ttable el código apuntado:
Table1.FlushBuffers;

Esto vuelca la memoria intermedia en la tabla de lo contrario corremos el riesgo de perder los últimos registros grabados.

Un Saludo.

roman 23-09-2008 21:28:18

Pues no sé Marcos. Como dije, yo no lo uso más que en casos muy específicos y no he tenido problemas. Hasta donde entiendo, FlushBuffers se asegura que todos los cambios se escriban al disco, pero es como si tuviéramos que vaciar el caché de Windows cada vez que hacemos una escritura al disco duro. Claro que hay en teoría un riesgo de perder algún dato (por ejemplo, si se apaga la pc y el sistema no ha vaciado el caché) pero la más de las veces funciona bien.

Pero bueno, de todas formas no hace daño poner el FlushBuffers.

// Saludos

eduarcol 23-09-2008 23:09:37

Cita:

Empezado por roman (Mensaje 315836)
Pues no sé Marcos. Como dije, yo no lo uso más que en casos muy específicos y no he tenido problemas. Hasta donde entiendo, FlushBuffers se asegura que todos los cambios se escriban al disco, pero es como si tuviéramos que vaciar el caché de Windows cada vez que hacemos una escritura al disco duro. Claro que hay en teoría un riesgo de perder algún dato (por ejemplo, si se apaga la pc y el sistema no ha vaciado el caché) pero la más de las veces funciona bien.

Pero bueno, de todas formas no hace daño poner el FlushBuffers.

// Saludos

es que a mi me sucedia en casos muy puntuales, por ejemplo el cliente que mas le sucedia de 100 facturas perdia 1, pero al ser facturacion esa una ya era demasiado

zeta2 09-10-2008 21:36:11

A mi me pasa algo parecido... Yo lleno un DBEdit y cuando presiono el boton que contiene el codigo "Table1.Refresh" no lo inserta en la Base de Datos... No quiero tener que hacerlo manual, insertar por codifo cada campo. Si alguien tiene una idea de que pude ser que no me lo actualiza se lo agradeceré, gracias...

eduarcol 09-10-2008 23:09:12

Cita:

Empezado por zeta2 (Mensaje 319225)
A mi me pasa algo parecido... Yo lleno un DBEdit y cuando presiono el boton que contiene el codigo "Table1.Refresh" no lo inserta en la Base de Datos... No quiero tener que hacerlo manual, insertar por codifo cada campo. Si alguien tiene una idea de que pude ser que no me lo actualiza se lo agradeceré, gracias...

es que Refresh no inserta nada en la BD, tienes que hacer Table1.Post


La franja horaria es GMT +2. Ahora son las 19:20:56.

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