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 22-10-2008
Buelos Buelos is offline
Miembro
 
Registrado: jun 2007
Posts: 51
Poder: 17
Buelos Va por buen camino
no puedo hacer applyupdates en clientdataset

Buenas tardes compañeros, tengo un problema que me esta matando la cabeza, he probado de todo y no he dado con el chiste, ojala me puedan ayudar, estoy desarrollando una aplicacion cliente servidor, en el servidor uso componentes ibx (actualizados a la version 7.04 esto lo encontre en un blog), tengo un ibdatabase un ibtansaction, un datasetprovider y un ibquery con la siguiente sentencia sql
Código SQL [-]delete from profesores where nombreProf=:ProfesorAEliminar

en el cliente tengo un socketconnection, un clientdataset, un datasource, un edit y un boton, al hacer click en el boton debe tomarme lo que esta en el edit pasarlo como parametro al clientdataset y ejecutarme la sentencia sql del servidor y eliminarme los registros correspondientes, en el boton tengo este codigo
Código Delphi [-]form1.ClientDataSet2.Params[0].AsString:=form1.Edit2.Text; form1.ClientDataSet2.Execute;

si lo hago asi, lo elimina correctamente pero el cambio no se ve reflejado en mi bd hasta que cierro mi aplicacion, yo necesito que se vea reflejado inmediatamente, segun lo que he leido en diferentes foros manuales y tutoriales esto lo hago con la funcion applyupdates(), pero al poner esta funcion me bota un error "project Project1.exe raised exception class EDatabaseError whit message 'ClientDataSet2:Cannot perfom this operation on a closed dataset'. Process stopped. Use Step or Run to continue". ahora segun esto entonces yo pongo la siguiente linea de codigo antes del applyupdate Código Delphi [-]form1.ClientDataSet2.Open;

, y al hacer esto entonces me bota el siguiente error "project Project1.exe raised exception class EDBClient whit message 'Mismatch in datapacket.'.Process stopped. Use Step or Run to continue"., Este mismo error aparece cuando trato de poner la propiedad del clientdataset active:=true, sea por codigo o en el objetcinspector. La verdad he probado mil y mil cosas y la verdad ya no tengo mas ideas, no se si el error este en el clientdataset o en la sentencia sql o en donde, agradesco en el alma cualquier ayuda u orientacion que me puedan brindar. muchas gracias de antemano por el interes el tiempo y la ayuda que me puedan brindar chao
Responder Con Cita
  #2  
Antiguo 23-10-2008
Rockin Rockin is offline
Miembro
 
Registrado: may 2003
Ubicación: Málaga
Posts: 264
Poder: 21
Rockin Va por buen camino
pon el siguiente codigo en tu servidor de capa intermedia, en el evento ApplyUpdates de tu DataSetProvider:

Código Delphi [-]
if TTransaction.InTransaction then
begin
      TTransaction.Commit;
end;

Espero que te valga.
Responder Con Cita
  #3  
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
  #4  
Antiguo 24-10-2008
Rockin Rockin is offline
Miembro
 
Registrado: may 2003
Ubicación: Málaga
Posts: 264
Poder: 21
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
  #5  
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
  #6  
Antiguo 26-10-2008
Rockin Rockin is offline
Miembro
 
Registrado: may 2003
Ubicación: Málaga
Posts: 264
Poder: 21
Rockin Va por buen camino
De nada, me alegro de que te funcione. Para eso estamos por aqui.

Saludos.
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 21:00:07
ayuda ClientDataSet, DataSetProvider y ApplyUpdates cmm07 Varios 1 23-03-2008 09:27:28
ClientDataSet - ApplyUpdates luchopriet Providers 8 17-11-2007 10:19:21
No puedo hacer un LOCATE [], con un ClientDataSet David Conexión con bases de datos 2 13-06-2007 20:01:17
Error en Applyupdates() de ClientDataSet con TIbQuery y Delphi 7 jmoran Conexión con bases de datos 1 16-07-2003 19:47:03


La franja horaria es GMT +2. Ahora son las 22:31:41.


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