![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Lo explico mejor. Tengo un formulario donde el usuario va agregando los articulos, y 2 datamodules (1 para la logica de negocios donde estan los clientdatasets y otro para el acceso a datos donde estan las ttables Paradox).
Lo que hago en el form cuando el usuario inserta un articulo es llamar al procedimiento InsertarItem del datamodule de la siguiente manera: Código:
procedure TdmDomain.InsertarItem(item : TArticle);
begin
with cdsDetailOrder do
begin
Open;
Insert;
FieldByName('CODIGO').AsString := item.Code;
FieldByName('MARCA').AsString := item.Mark;
FieldByName('PRECIOUNITARIO').AsFloat := item.Price;
FieldByName('CANTIDAD').AsInteger := item.Quantity;
Post;
end;
end;
Project PPedidos.exe raised exception class EDBClient with message ". Process stopped. Use Step or Run to continue. Si lo hago de esta manera: Código:
procedure TdmDomain.InsertarItem(item : TArticle);
begin
with cdsDetailOrder do
begin
Open;
Insert;
FieldByName('CODIGO').AsString := item.Code;
FieldByName('MARCA').AsString := item.Mark;
FieldByName('PRECIOUNITARIO').AsFloat := item.Price;
FieldByName('CANTIDAD').AsInteger := item.Quantity;
Post;
ApplyUpdates(0); //nueva linea
Close; //nueva linea
end;
end;
Evidentemente algo estoy haciendo mal. Muchas gracias!! |
|
#2
|
||||
|
||||
|
Dos cosas, intenta hacer el open del clientdataset fuera del procedimiento, o sea, tenerlo abierto todo el tiempo, puede ser al crear el formulario y la otra agrega lo siguiente:
Comentanos como te fue. Saludos.
__________________
![]() Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
|
#3
|
|||
|
|||
|
mmmmm, no entiendo en que cambia ApplyUpdates(-1)?, me sigue insertando los items de a 1. ¿?
|
|
#4
|
||||
|
||||
|
Cita:
y en el botón donde tienes el applyupdates le cambias el 0 por -1. Saludos. PD. el open del ClientDataset lo abres cuando creas el form u en otro sitio.
__________________
![]() Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
|
#5
|
|||
|
|||
|
Haciendolo de esa manera, al hacer el Post (en el 2do. registro) me tira el error que comentaba antes.
|
|
#6
|
||||
|
||||
|
A mi con un código como este (lo he hecho a partir del tuyo) funciona perfectamente y me inserta varios registros.
Revisa que el error no te lo estén generando los datos que insertas; Problemas con claves duplicadas, índices únicos,... Revisa el parámetro entero del ApplyUpdates que te da el número de errores; También puedes intentar programar alguna cosa en los eventos que se refieren a los posibles errores en la inserción; OnPostError, OnAfterPost, OnAfterApplyUpdates,...
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#7
|
|||
|
|||
|
Hola,
mira el evento OnReconcileError del ClientDataSet, en la ayuda te dice como hacer que te aparezca una ventana donde se muestra el motivo que causa el error del ApplyUpdates, pero para ello deberás ponerle ApplyUpdates( 0 ) Un saludo |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
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 |
| Between y ClientDataSet | d2nemi | Firebird e Interbase | 10 | 26-02-2008 09:21:00 |
| ClientDataSet y XML | gsilvei | Conexión con bases de datos | 0 | 03-10-2007 22:59:18 |
| ClientDataSet y W98 | tgsistemas | Conexión con bases de datos | 5 | 03-08-2004 10:13:06 |
|