Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problema al escribir datos en tabla (https://www.clubdelphi.com/foros/showthread.php?t=42776)

snowlis 23-04-2007 14:10:04

Problema al escribir datos en tabla
 
Tengo dos tablas, una que se llama MAECLIE y la otra AVISOS. Las 2 estan en paradox y cada una tiene definidas sus respectivas claves principales. En avisos tengo definido un indice secundario con el que luego hago la relación con las 2 tablas.
Lo que hago es lo siguiente. Me he hecho un dblookupcombobox que me saca una lista desplegable con todos los nombres que encuentra en la tabla maeclie. Yo lo que quiero es que cuando seleccione un cliente, luego al darle a un botón que tengo me consulte el código que tiene ese cliente y me lo guarde en la tabla avisos en su respectivo campo.

El problema viene cuando hago clic en el botón para hacer todo eso y escribir ese dato en la tabla avisos (el número si que me lo saca bien), que me da el siguiente error : Query1: Cannot modify a read-only dataset.

El dataset he visto que es una propiedad del datasource(no un componente), pero no veo ningun sitio donde quitarle lo de la lectura.

Aquí os dejo el codigo del botón que os digo :

Código Delphi [-]
 
procedure TForm13.Button1Click(Sender: TObject);
var ncliente:Integer;
begin
Query1.Close;
query1.SQL.Clear;
Query1.SQL.add('SELECT CLIEN FROM MAECLIE WHERE NOME="'+DBLooKupComboBox1.Text+'"');
query1.Open;
ncliente:=Query1.Fields[0].AsInteger;
//edit1.Text:=inttostr(ncliente);
datasource3.DataSet.Active:=true;
datasource3.DataSet.Insert;
table1.FieldByName('NUMCLIENTE').AsInteger:=ncliente;
end;

He consultado otros temas que he visto en el foro sobre ese error pero no consigo solucionarlo. Para información, solo uso componentes ttable y datasource.

He probado otra cosa que he encontrado que es hacer lo siguiente :
Cita:

table1.Insert;
table1.FieldByName('NUMCLIENTE').AsInteger:=ncliente;
table1.Post;
Y tampoco funciona, ahora me dice Index is read only.

Saludos.

droguerman 23-04-2007 17:36:59

Cita:

Empezado por snowlis
Query1: Cannot modify a read-only dataset.

si lees bien dice Query1, eso significa que tu datasource está apuntando a Query1 y no al table.
Cita:

Empezado por snowlis
Index is read only

se me ocurren dos posibilidades, tu archivo de indice no tiene permisos de escritura (revisa en las propiedades del archivo en el explorador de windows), o quizás tienes definido un índice secundario con propiedad mantained.

Saludos.

snowlis 23-04-2007 17:55:28

Si, me había equivocado, ahora lo he cambiado y le he asignado la tabla que toca, que en mi caso apuntaba a la query y no a la tabla.

De vez en cuando me salta el error de index is read only y he revisado todo lo que dices y esta bien.

Ahora cuando le doy al botón para que escriba no me sale ningun mensaje de error y parece que va bien. Pero luego cuando voy a ver si hay algo en la tabla me sale vacía, no aparece nada.

También he probado a hacerlo de la siguiente manero me me sigue dando el mismo error --> Table1NUMCLIENTE.value:=valor;

EDITO: Ya he solucionado el problema, entre un amigo y yo hemos dado con la solución. Si ha alguien le interesa que lo diga y pondré el código en cuestión.

Saludos ;)

ebeltete 18-05-2007 17:44:20

Hola tengo un problema semejante, tengo un tquery relacionado a un updatesql, el query funciona barbaro con insert, post, delete, etc. pero cuando le doy query.applyupdate me da este error "Table is read only", tengo la propiedad query.cachedupdate:= true.


La franja horaria es GMT +2. Ahora son las 02:29:54.

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