PDA

Ver la Versión Completa : Insertar dato en Tabla Paradox


Abuelo7
23-09-2008, 19:15:40
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.


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


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
¡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
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
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