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)
-   -   dudas sobre uso de query, clientdataset en ADO (https://www.clubdelphi.com/foros/showthread.php?t=63690)

djanp 26-02-2009 15:24:15

dudas sobre uso de query, clientdataset en ADO
 
hola de nuevo a todos
llevo pegandome con esto ni se sabe...
intento hacer un programa de facturacion en el que ya tengo la BBDD hecha y llena
segun me dijo bluesteel hay algun ejemplo de facturacion en el ftp, pero lo unico que encontre fue ejemplos de ADO
y use uno de ellos para cargar tablas en formularios, como muestro a continuacion
// Conectar
ADOConnectionAC.Open;

// Preparar la Query
ADOQueryAC.Close; // por si acaso
ADOQueryAC.SQL.Clear;

//Cargar los datos de la tabla AC
ADOQueryAC.SQL.Add('Select * from [Cabecera Facturacion Compras]where Serie=''AC''');
// Activar la consulta
ADOQueryAC.Open;
// Enganchar el TClientDataSet (se utiliza el Provider)
DataSetProviderAC.DataSet := ADOQueryAC;
// Activar el DataSet
ClientDataSetAC.Open;
// Cerrar la consulta
ADOQueryAC.Close;


esto funciona
cargo los datos en el clientedatasetAC-->datasource-->dbedit o dbgrid
pero el dbedit no me deja modificarlo en tiempo de ejecucion, por lo que no puedo cambiar valores cosa que no entiendo
ademas uso un DBlookupcombobox para cambiar el cliente en el albaran y una vez elegido modifico automaticamente los dbedit relacionados con el cliente(direccion , poblacion,etc...pob.EditText:= (ClientDataSetprov.FieldByName('poblacion').AsString);) lo cual nunca llegara a guardarse en la BBDD, solo en memoria, dado q si el query esta cerrado, no sabe como guardase creo
una de mis preguntas es
- ¿¿¿como hacer que se guarden en la BBDD cuando se modifique o yo crea conveniente hacerlo???
- ¿¿es buena idea el query para estas cosas??
- ¿hay ejemplos mas especificos para lo que hago??
- al abrir el form quiero q se conecte a la BBDD ¿uso form.onactivate, onshow o oncreate???
- y al cerrarlo desconectar el adoconection ¿supungo en onclose, no???

muchas dudas que hacden que no avance nada, a ver si alguien puede echarme una mano, gracias a todso

Caro 26-02-2009 15:46:19

Hola, tratare de responder a tus preguntas

Cita:

Empezado por djanp (Mensaje 339415)
- ¿¿¿como hacer que se guarden en la BBDD cuando se modifique o yo crea conveniente hacerlo???

Cuando utilizas el ClientDataSet todo se guarda en memoria, por lo que debes utilizar la función ApplyUpdates paar que se guarde fisicamente "ClientDataSet1.ApplyUpdates(-1)" , para ello no deberías hacerle un Close a tu DataSetcomo esta ahora "ADOQueryAC.Close;
".

Cita:

Empezado por djanp (Mensaje 339415)
- ¿¿es buena idea el query para estas cosas??

Yo creo que no deberías tener problemas al usar el Query.

Cita:

Empezado por djanp (Mensaje 339415)
- ¿hay ejemplos mas especificos para lo que hago??

Si buscas en el foro seguro que encuentras.

Cita:

Empezado por djanp (Mensaje 339415)
- al abrir el form quiero q se conecte a la BBDD ¿uso form.onactivate, onshow o oncreate???

El OnActivate yo creo que no, porque se da cada vez que se activa el formulario y eso puede ocurrir por varias razones. Puedes utilizar el OnShow o el OnCreate de tu formulario principal.

Cita:

Empezado por djanp (Mensaje 339415)
- y al cerrarlo desconectar el adoconection ¿supungo en onclose, no???

Si.

Saluditos

djanp 26-02-2009 15:55:59

gracias por la rapidez
en cuanto a lo de ClientDataSet1.ApplyUpdates(-1)"
lo use tambien, pero como tu dices me debio dar error por tener cerrado el query
pero es que ese query lo reutilizo para cargar datos en otros 3 datasetprovider, por lo que la habro y cierro 3 veces, supongo que si simplemente antes de hacer el ClientDataSet1.ApplyUpdates(-1)" hago ADOQueryAC.Open funcionaria??? o tendria que hacer otra vez ADOQueryAC.SQL.Add('Select * from [Cabecera Facturacion Compras]where Serie=''AC'''); antes??? dado que el sql que guarda seguramente no tenga nada que ver con el de este clientdataset

y una cosa mas
¿¿¿¿se puede asignar campos al DBedit, que pueden que esten vacios?? (son string) es que a mi me falla cuando les hago esto


La franja horaria es GMT +2. Ahora son las 06:13:39.

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