PDA

Ver la Versión Completa : luegode la busqueda los DBedit estan bloqueados


kryna
31-03-2005, 23:47:06
hola a todos...

Estoy haciendo un programa que contiene 3 tablas t1, t2, t3 en las que inserto, modifico, elimino los registros de estas tablas mediante las instrucciones tabla.insert... tabla.edit...tabla.delete... y me funciona bien..

La consulta la estoy realizando mediante Tquery y tambien me funciona..

El problema viene cuando consulto un registro para luego eliminarlo o modificarlo, ya que luego que regresa la busqueda los DBedit estan como bloqueados.. y no permiten escritura.. a que se debe esto

Este es el codigo de busqueda
if editorcodigo <> nil then

qrycodigo.Close;
qrycodigo.ParamByName('Codigo').AsInteger := StrToInt(editorcodigo.text);
Dscodigo.dataset := qrycodigo;
qrycodigo.Open;

el codigo del query es

SELECT *FROM tb1, t2, t3

WHERE (tb1.c1 = t2.c2) AND (t2.c2 = t3.c2) AND (t2.c2 = :Codigo)


El gestor es paradox

Espero me haya podido explicar

Lepe
01-04-2005, 00:15:17
Desde un Query que une varias tablas, en paradox, no se puede borrar, y mucho menos mantener la integridad referencial, por tanto:

- Te queda anotar el codigo o clave primaria de cada tabla, y despues borrarlo de las 3 tablas.

Para el borrado, puedes hacer una consulta con:

query1.sql.clear;
query1.sql.text := 'DELETE FROM T1 WHERE T1.C1 = :codigo';
query1.ParamByName('Codigo').AsInteger := StrToInt(editorcodigo.text);
query1.ExecSql;

Y repetir el proceso para las 2 tablas.

O bien hacer:

if tabla1.locate('Codigo',StrToInt(editorcodigo.text), []) then
tabla1.delete
else
showMessage('codigo no encontrado');

Personalmente prefiero la primera, ya que no mueve el registro activo de esa tabla.

Un saludo, y recuerda englobar entre [ delphi ] y [ /delphi ] tu código para que sea más legible.

Un saludo

kryna
01-04-2005, 14:45:06
Hola!!!!

Muchas gracias me funciono perfecto para borrar pero si lo que quiero es incluir o modifica registros como tengo que hacer??

lo estoy haciendo de la siguiente manera

Tb1.Insert;
Tb1.FieldByName('c1').AsString := Clave;
Tb1.FieldByName('c2').AsString := clave2;
Tb1.FieldByName('c3'.AsString := clave3;
Tb1.Post;
Tb1.Next;
Tb1.FlushBuffers;
Tb1.Close;

Quisiera hacer la inclusion y modificacion mediante Tquery

Lepe
02-04-2005, 12:27:20
Revisa este hilo (http://www.clubdelphi.com/foros/showthread.php?t=18467&highlight=update+insert)

Un saludo