FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Duda con el uso del ClientDataSet
Hola otra vez.
No tengo mucha experiencia con los clientdataset, estuve leyendo algunos artículos y foros en internet pero no logré aclarar algo. Lo que entendí hasta ahora es que el clientdataset es como tener una tabla en memoria que se puede recorrer y modificar y luego enviar los cambios al origen de los datos, en mi caso una tabla Paradox. Lo que no me queda claro es si el clientdataset permite insertar, por ejemplo, 10 registros y enviar a la base esos 10 registros mediante ApplyUpdates() o si solo puede insertarse de a 1 solo registro. Por la experiencia que he tenido, aparentemente solo puede insertarse de a 1. (es lo que consulté ayer en este hilo http://www.clubdelphi.com/foros/showthread.php?t=59992 ) Esto es así?? Muchas gracias de antemano. Saludos |
#2
|
||||
|
||||
Hola, claro que con Clientdataset puedes insertar 10 registros a la base, actualiza registros nuevos e incluso eliminar datos.
Saludos
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#3
|
|||
|
|||
Gracias enecumene por tu respuesta.
Entonces, no se que es lo que estoy haciendo mal, sigo con el mismo problema que comentaba en aquel hilo. Gracias. Un abrazo |
#4
|
||||
|
||||
Hola, ¿y como haces el Applyupdate?, inserta el código si no es ninguna molestia.
Saludos.
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#5
|
|||
|
|||
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!! |
#6
|
||||
|
||||
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. |
#7
|
|||
|
|||
mmmmm, no entiendo en que cambia ApplyUpdates(-1)?, me sigue insertando los items de a 1. ¿?
|
|
|
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 |
|