PDA

Ver la Versión Completa : problemas al insertar con una consulta


maruenda
30-04-2004, 18:30:32
hola a tod@s. Tengo un form con objetos tdbedit, un tquery y conectado a el , un objeto tupdatesql. Cuando traigo datos con el query, los veo en los tdbedit, y si modifico algo, con la propiedad modifysql del tupdatesql grabo los cambios. El problema me surge al insertar un registro nuevo. Si utilizase una tabla, haria tabla.insert e insertaria datos, pero al usar un tquery, si hago tquery.insert me pide una sentencia sql, que no tengo. La sentencia la tengo en la propiedad insertsql del tupdatesql. No puedo ponerla en el tquery, porque los campos todavia estan vacios. alguna opinion que me saque de este lio?. Espero haberme explicado bien. graciasssssss. ;)

delphi.com.ar
30-04-2004, 18:32:40
¿Esta relacionado el TUpdateSql con el TQuery?

maruenda
30-04-2004, 18:36:59
si. en la propiedad updateobject del query. Los cambios, me los graba bien. El problema es que al estar los tdbedits conectados al query, hasta que no lo abro, no puedo escribir nada.

delphi.com.ar
30-04-2004, 18:43:15
si hago tquery.insert me pide una sentencia sql, que no tengo. La sentencia la tengo en la propiedad insertsql del tupdatesql.No entiendo esta parte... ¿Cómo "te pide una sentencia sql"?

maruenda
30-04-2004, 18:46:45
muy sencillo. si pongo en el codigo, query. insert me dice que no puede realizar esta operacion en un dataset cerrado. Yo, como soy muy bueno, voy y pongo query.open, y luego query. insert, y entonces me dice que no tiene una sentencia sql disponible. Estoy confundioooooo :confused:

delphi.com.ar
30-04-2004, 18:47:30
El query tiene un SELECT en el SQL???

maruenda
30-04-2004, 18:50:31
no. solo lo tiene cuando hago una busqueda. se lo pongo en tiempo de ejecucion. Cuando voy a insertar la propiedad sql esta vacia. :confused:

delphi.com.ar
30-04-2004, 18:54:35
Ok.. el tema es así: El TUpdateSql sirve para poder hacer TQuerys modificables ( http://www.clubdelphi.com/foros/showthread.php?t=985 ), ahora si quieres hacer un insert simplemente, puedes hacer lo siguiente:
Query1.Sql.Text := 'INSERTI INTO....';
Query1.ExecSQL;
Sencillamente: el open es para "Abrir" consultas que devuelvan datos, el ExecSQL es para el resto de los querys.

Saludos!

maruenda
30-04-2004, 18:59:57
a ver si lo entiendo. En el boton de insertar pongo query.sql ='insert into tabla ...... '. y luego query. execsql. Pero si los valores todavia no los se, porque los tdbedit estan vacios, uso parametros. entonces, para que sirve la propiedad insert del tupdatesql.? :(

delphi.com.ar
30-04-2004, 19:03:41
Me olvide de los DBEdits... para que los DBEdits automáticamente se guarden, tienen que estar relacionados con un dataset, la opción que te dí es para trabajar con Edits comunes, para hacer lo que tu quieres, vas a tener que poner una consulta editable como en el link que te he pasado.

Saludos!

maruenda
30-04-2004, 19:10:00
gracias. esta noche lo probare. un saludo a tod@s. :)