Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Providers
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-10-2008
Buelos Buelos is offline
Miembro
 
Registrado: jun 2007
Posts: 51
Poder: 17
Buelos Va por buen camino
Hola rockin muchas gracias por la ayuda, la he implementado y no ha hecho nada, no se pero tengo la impresion ke mi problema viene del ibquery o del clientdataset pero no he dado con el chiste, en todas partes donde he leido dicen ke ddebo poner el applyupdates en el evento afterpost pero es que nisquiera llego a ese evento es decir cuando pongo clientdataset.post me dice ke el cds no esta en modo insercion le pongo el clientdataset.insert o .edit y me dice que el datasetdebe estar abierto, pongo clientdataset.open y me arroja el error de mismatch in datapacket, ke es lo mismo que me pasa cuando intento poner en true la propiedad active, la verdad no se que esta pasando si sirve de ayuda el codigo sql que pongo en el ibquery es
Código SQL [-]
delete campo1 from tabla where campo2=arametro
no se que estoy haciendo mal, cualquier pista es bienvenida muchas gracias por el tiempo y la voluntad, ya estoy super cabezon con esto de nuevo muchas gracias y ojala puedan ayudarme
Responder Con Cita
  #2  
Antiguo 24-10-2008
Rockin Rockin is offline
Miembro
 
Registrado: may 2003
Ubicación: Málaga
Posts: 264
Poder: 22
Rockin Va por buen camino
Para borrar datos con un ClientDataSet debes de implementarlo de la siguiente manera, por ejemplo;

Código Delphi [-]
with CDSClientes do
Close;
CommandText:= 'select * from clientes where cod_cliente= :cod_cliente'
Params.ParambyName('cod_cliente').AsInteger:= StrToint(txtCodCliente.text);
Open;
Delete;
end;

Cambia la sentencia SQL para elegir el registro a borrar, una vez hecho eso tienes que poner en el evento AfterDelete del CDSClientes lo siguiente;

Código Delphi [-]
CDSClientes.ApplyUpdates(0);

Así para borrar, para insertar o modificar es igual pero en vez de DELETE pon INSERT para insertar y EDIT para borrar, luego tienes que llamar al POST y haber puesto en el evento CDSClientes.AfterPost, lo mismo que antes, es decir:

Código Delphi [-]
CDSClientes.ApplyUpdates(0);

Pruebalo, tiene que funcionarte.

Suerte
Responder Con Cita
  #3  
Antiguo 25-10-2008
Buelos Buelos is offline
Miembro
 
Registrado: jun 2007
Posts: 51
Poder: 17
Buelos Va por buen camino
Gracias por la ayuda Rockin eh hecho lo que me recomendo y ma salio perfecto, en serio muchas gracias por todo, no sabe lo importante que era para mi resolver este conflicto de verdad muchas gracias.
Responder Con Cita
  #4  
Antiguo 26-10-2008
Rockin Rockin is offline
Miembro
 
Registrado: may 2003
Ubicación: Málaga
Posts: 264
Poder: 22
Rockin Va por buen camino
De nada, me alegro de que te funcione. Para eso estamos por aqui.

Saludos.
Responder Con Cita
  #5  
Antiguo 27-10-2008
Buelos Buelos is offline
Miembro
 
Registrado: jun 2007
Posts: 51
Poder: 17
Buelos Va por buen camino
Problema al modificar

Buenas tardes rockin otra ves yo por aca, que pena tanta molestia, pero es que tengo un nuevo problema, la solucion esta perfecta, cuando elimino o inserto (con algunas modificaciones de orden) me funciona correctamente, pero cuando trato de modificar hago el mismo procedimiento pero no he podido me bota errores, cuando lo hago asi
Código Delphi [-]
with ClientDataSet2 do
begin
Close;
CommandText:='select * from materia WHERE nombre_materia=:materia';
open;
edit;
Params.ParambyName('materia').AsString:=edit1.Text;
Params.ParambyName('id').AsInteger:=strtoint(edit2.Text);
post;
end;
me bota un error que dice Project Project1.exe raised exception class EDatabaseError whit message 'ClientDataSet2:Parameter 'id' not found'. Process stopped. Use Step or Run to continue.
segun lo que he analizado y las pruebas que he hecho este error lo bota porke en el commandtext no le paso el parametro de id, entonces trato de incluir en el commandtext el parametro id y lo hago asi
Código Delphi [-]
CommandText:='select * from materia WHERE nombre_materia=:materia or id_materia=:id';
pero al hacer esto me dice Project Project1.exe raised exception class EDatabaseError whit message 'field 'Nombre_materia' must have a value'. Process stopped. Use Step or Run to continue.
he probado muchas cosas y nada me ha resultado, puede ke sea una bobada la verdad no se pero ya me estan saliendo canas verdes tratando de arreglar esto, le agradeceria si me pudiera ayuda, y muchas gracias por toda la atencion y el tiempo dedicado a la solucion de mi problema.
se me olvidaba el codigo ke tiene el ibquery es el siguiente
Código SQL [-]
UPDATE materia
 SET nombre_materia=:materia
 WHERE id_materia=:id
le agradesco en el alma cualquier ayuda que me pueda brindar chao
Responder Con Cita
  #6  
Antiguo 27-10-2008
Rockin Rockin is offline
Miembro
 
Registrado: may 2003
Ubicación: Málaga
Posts: 264
Poder: 22
Rockin Va por buen camino
Así por encima tienes que realizar lo siguiente:

Vete a tu DataSet del Servidor de Capa Intermedia, con el boton derecho pulsa en Fields Editor, añade todos los campos de la tabla.

Luego elige el campo Key que entiendo será el ID, y en sus propiedades dile que es el KeyFields, ahora en la propiedad ProviderFlags pon a true el pfInKey.

Vete a tu DataSetProvider y pon la propiedad UpdateMode a upWhereKeyOnly.

Prueba a ver que tal y nos cuentas.

Saludos.
Responder Con Cita
  #7  
Antiguo 27-10-2008
Rockin Rockin is offline
Miembro
 
Registrado: may 2003
Ubicación: Málaga
Posts: 264
Poder: 22
Rockin Va por buen camino
Pon lo siguiente:

Código Delphi [-]
with ClientDataSet2 do
begin
Close;
CommandText:='select * from materia WHERE nombre_materia=:materia and id = :id';
open;
edit;
Params.ParambyName('materia').AsString:=edit1.Text;
Params.ParambyName('id').AsInteger:=strtoint(edit2.Text);
post;
end;


Y no olvide realizar lo siguiente:

Vete a tu DataSet del Servidor de Capa Intermedia, con el boton derecho pulsa en Fields Editor, añade todos los campos de la tabla.

Luego elige el campo Key que entiendo será el ID, y en sus propiedades dile que es el KeyFields, ahora en la propiedad ProviderFlags pon a true el pfInKey.

Vete a tu DataSetProvider y pon la propiedad UpdateMode a upWhereKeyOnly.

Prueba a ver que tal y nos cuentas.

Saludos.[/quote]
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Duda con CancelUpdates y ApplyUpdates con ClientDataSet David Conexión con bases de datos 1 11-02-2011 20:00:07
ayuda ClientDataSet, DataSetProvider y ApplyUpdates cmm07 Varios 1 23-03-2008 08:27:28
ClientDataSet - ApplyUpdates luchopriet Providers 8 17-11-2007 09:19:21
No puedo hacer un LOCATE [], con un ClientDataSet David Conexión con bases de datos 2 13-06-2007 19:01:17
Error en Applyupdates() de ClientDataSet con TIbQuery y Delphi 7 jmoran Conexión con bases de datos 1 16-07-2003 18:47:03


La franja horaria es GMT +2. Ahora son las 20:02:04.


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
Copyright 1996-2007 Club Delphi