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)
-   -   Ayuda con un insert..... (https://www.clubdelphi.com/foros/showthread.php?t=58157)

cheoac 10-07-2008 16:15:49

Ayuda con un insert.....
 
Hola soy nuevo en el foro y tambien en delphi....tengo un problema que no se como remediarlo......tengo un formulario donde inserto datos.....cuando le doy al boton de insertar inserta los datos (me doy cuenta por o eo en la base de datos)...pero cuando cierro el formulario y abro otro dodne tengo un grid no aparencen los datos.......aparecen hasta que cierro toda la aplicacion y la vuelvo a abrir...este es mi codigo.....
Código:


Código Delphi [-]
query.Close;
 query.SQL.Clear;
 query.SQL.Text:='insert into candidatos(can_nom,can_apell,can_dir,can_tel,can_fecha,can_edad,can_mail,can_matricula,can_status,can_sexo,can_reg,can_par) values (:nom,:apell,:dir,:tel,:fecha,:edad,:mail,:matricula,:status,:sexo,:reg,:par)';
 query.Params.ParamByName('nom').Value:=edit1.Text;
 query.Params.ParamByName('apell').Value:=edit2.Text;
 query.Params.ParamByName('dir').Value:=edit3.Text;
 query.Params.ParamByName('tel').Value:=edit4.Text;
 query.Params.ParamByName('fecha').Value:=edit5.Text;
 query.Params.ParamByName('edad').Value:=edit6.Text;
 query.Params.ParamByName('mail').Value:=edit7.Text;
 query.Params.ParamByName('matricula').Value:=edit8.Text;
 query.Params.ParamByName('status').Value:=combobox1.Text;
 query.Params.ParamByName('sexo').Value:=rad1;
 query.Params.ParamByName('reg').Value:=combobox2.Text;
 query.Params.ParamByName('par').Value:=combobox3.Text;
 query.ExecSQL;


juanlaplata 10-07-2008 16:27:10

Al abrir el formulario verifica el dataset asociado al grid, hacer un refresh si esta relacionado directamente con una tabla, o close-open si esta relacionado con una consulta o query. Pues si mirando la base, los datos estan , no queda alternativa de por que no verlos. Suerte.

cheoac 10-07-2008 17:04:21

gracias pero ya lo prove y tampoco....incluso el problema esta tambien cuando lleno un combo los datos se ven reflejados hasta que cierro y abro por completo la aplicacion.....

coso 10-07-2008 18:12:15

hola cuando quieras ver los datos, usa el select

Código Delphi [-]
query1.Active := false;
query1.SQL.Text := 'select * from tabla';
query1.Active := true;

y deja la query activa (el datasource del dbgrid debe apuntar a un datasource el cual tenga por dataset query1)

PepeLolo 10-07-2008 18:20:56

Te pasa porque tienes una transacción que se abre cuando arrancas la aplicación y se cierra cuando sales de esta.

Tienes que crear una transacción para el insert y commit para finalizarla. De ese modo podrás ver los datos en la rejilla.

un saludo.

cheoac 10-07-2008 18:26:30

ya probe lo me estan diciendo pero no ams no jajaja.....o algo estay haciendo mal....en mi formulario del insert tengo un SQLconnection-> y un SQLquery...y en el boton tengo el codigo que antes menciones......en mi formulario dodne tengo el grid tengo un: SQLconnection->SQLquery->datasetprovider->clientdataset->datasource->dbgrid->dbnavigator......asi son mis relaciones.......pero les agradeceria si me explican lo delas transacines...mil gracias....

coso 10-07-2008 18:32:54

SQLconnection->query1->datasource->dbgrid
SQLconnection->query1->datasource->dbnavigator

si para el insert usas otra query, entonces deberas hacer posteriormente otro 'select' en query1 para que refleje los cambios de la base de datos. Debes tener, claro esta, la query en active := true. Deberias, tambien, usar un datamodule para agrupar todo.

Código Delphi [-]

dm.query_dbgrid.Connection := dm.conexion;
dm.datasource_dbgrid.dataset := dm.query_dbgrid;
...
dbnavigator.datasource :=  dm.datasource_dbgrid;
dbgrid.datasource := dm.datasource_dbgrid;
...
dm.query_insert.Connection := dm.conexion;
...
boton1.Click (insertar)
dm.query_insert ... (etc)

boton2.Click (ver, si no lo quieres hacer automaticamente)
dm.query_dbgrid.Active := false;
dm.query_dbgrid.SQL.Text := 'select ...';
dm.query_dbgrid.Active := true;
...

mas o menos


La franja horaria es GMT +2. Ahora son las 13:04:56.

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