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
|
|||
|
|||
Agregar datos en grid llenado con dataset
Hola a todos, espero y poder explicar de la mejor manera mi problema:
Cuento con un TADOStored Proc ligado a un DataSource para regresar datos y mostrarlos en una forma delphi usando un boton de la siguiente manera:
Funciona el código al presionar el boton una vez y me pasa los datos de la consulta, que es un "select" a un grid, pero al volver a dar click al botón me muestra el siguiente mensaje: spAgregarArt Cannot perform this operation on an open data set Y era de esperarse, ya que deje el dm.spAgregarArt.Open, pero mi duda es si puedo recorrer ese data set y volver a usarlo para agregar otro elemento a mi grid o de que manera hacerlo?, para que al dar click cuantas veces desee, se me agreguen datos al grid usando la consulta y el stored procedure Espero y puedan ayudarme, muchas gracias!! Última edición por Casimiro Notevi fecha: 21-07-2012 a las 00:40:51. |
#2
|
||||
|
||||
Lo que no entiendo, en principio, es para qué haces una consulta si lo que quieres es agregar registros.
|
#3
|
|||
|
|||
Respuesta
Buen dia
El programa que estoy intentando desarrollar es sobre facturacion. Cuento con un TextEdit que al momento de poner por ejemplo un ID de algún articulo y dar click en el botón llamado "agregar" en el evento onclick llamado "agregarProducto", quiero que se llene un grid con los datos del articulo, por ejemplo, descripción, precio, cantidad, etc. Para realizar una venta. Si por ejemplo pusiera un nuevo ID, entonces desearía que mi grid se llenara con el nuevo articulo, sin borrar el anterior y así sucesivamente El primer stored procedure llamado "consultaArticuloVentaEx" la realizo para comprobar si existe el ID en la base de datos, sino solamente regreso algun valor que me indica que no existe el articulo y muestro un mensaje. El segundo stored procedure llamado "consultaArticuloVenta", lo mando llamar en caso de que si exista un ID válido y dejo el dm.spAgregarArt.Open; que en este caso si me llenaria mi grid con los datos correspondientes, saludos! |
#4
|
||||
|
||||
Hola disturbednoise.
Si no entiendo mal lo que estas buscando, un modo de hacerlo podría ser:
Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 22-07-2012 a las 23:20:44. Razón: agregar comentario |
#5
|
|||
|
|||
Hola ecfisa
Gracias por tu respuesta, lo que entendí de tu solución es por ejemplo traer dentro del dataset al crear la forma todos los datos de la tabla y hacer una búsqueda en el data set por el dato ingresado en mi text edit, si por ejemplo mi tabla va creciendo demasiado no existiría alguna manera de contar con dos data set o una tabla temporal en el que pueda ir abriendo y cerrando un data set, para hacer las llamadas a mi stored procedure pero al mismo tiempo ir grabando los datos a una tabla temporal para de ahí colgarlos al grid? Disculpa la tardanza en contestar, pero me encontraba fuera de la ciudad, saludos! |
#6
|
|||
|
|||
Mas concretamente lo que quiero hacer es un grid que contenga los detalles de Factura o de alguna venta.
Lo llevo a cabo con un datasource y de ahi ligado a mi grid agrego el resultado de la busqueda de un articulo, pero no puedo agregar varios articulos al grid, ya que al querer usar de nuevo el datasource, me dice que esta abierto, si lo cierro entonces mi grid se queda en blanco, espero y me explique un poco mejor, gracias!! |
#7
|
||||
|
||||
Creo que estás algo confundido, un dbgrid es un "visor" de un dataset. Cualquier dataset, lo asocias a un datasource y este mismo datasource lo asocias a un dbgrid... y voilá, ya aparece en el dbgrid los datos que tiene el dataset.
Lo que tenga el dataset es lo que aparecerá, se mostrará, se visualizará... en el dbgrid. |
#8
|
|||
|
|||
Esta parte que comentas ya me quedó mas clara, pero por ejemplo si quiero agregar el resultado de varias consultas a mi grid haciendo uso del mismo dataset seria con el ejemplo que me pusiste arriba o de que manera?
Porque tengo entendido que realizo una consulta, cuento con mi data set, lo asocio al data source y de ahi al grid y veo el resultado, pero lo que quisiera es dejar en el grid el resultado y volver a usar el data set con otra consulta para llenar el grid con mas resultados, hay alguna manera de hacer eso?, saludos y muchas gracias por todo enserio |
#9
|
||||
|
||||
Hola disturbednoise.
¿ Que componente estas usando para la inserción y cuál para la consulta o utilizas el mismo para ambas cosas ? Pareciera que estas utilizando ADO, pero ¿ Podrías especificar exáctamente el nombre de los componentes ? Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#10
|
|||
|
|||
Si utilizo los componentes Ado
Mira para en mi TDataSource tengo mi DataSet con un TAdoStoredProc para realizar la consulta y un TcxGrid asociado a mi datasource, gracias.. |
#11
|
||||
|
||||
Hola.
¿ Has probado haciendo un Refresh al finalizar la ejecució del ADOStoredProc ? ( ADODataSet.Refresh; ) Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 01-08-2012 a las 19:23:03. Razón: quitar ícono del texto |
#12
|
||||
|
||||
Yo creo que el compañero lo que quiere hacer es llenar los itemes de una venta y, claro quiere ir viendo los artículos ue se añaden en una rejilla. ¿No es así?
Pero entonces tiene que tener una relación maestro-detalle entre la tabla de ventas y la de detalles de la venta. Agregar el registro maestro de la venta y asociar un dbgrid al dataset de los detalles. Éste mostrará sólo los de la venta actual en tanto que está mandada por el registro de la tabla maestra. // Saludos |
#13
|
|||
|
|||
Asi es, lo que quiero hacer es eso, ir viendo los articulos que se van agregando en el grid para realizar la venta
Habrá algun ejemplo que me proporcionen para que me quede mas claro?, ya cheque datasource, componentes TdxMemData, clientDataset, dataset provider, pero aun no logro usarlos de la mejor manera, para lograr el resultado esperado con un TAdo Stored Proc, gracias por todo y saludos |
#14
|
||||
|
||||
A ver, vamos a suponer que tienes tablas de ventas, articulos y articulosVenta (detalles de la venta):
articulo = (articuloId, ... ) venta = (ventaId, ...) articulosVenta = (ventaId, articuloId, ...) Un primer dbgrid lo conectas a la tabla de ventas. El segundo dbgrid puedes conectarlo a una consulta SQL:
El dataset que uses para la consulta lo pones como tabla detalle del dataset que uses para las ventas. Eso hace que el de la consulta sólo muestre los detalles de la venta actual. Cuand inicias una venta agregas un registro a la tabla de ventas. Para agregar artículos, haces tu consulta que trae los datos del artículo e insertas un nuevo registro en la tabla articulosVenta poniendo en el campo ventaId el valor del ID de la nueva venta. Haces un refreseh de la consulta del segundo dbgrid para que refleje al artículo insertado. No es la única manera de hacerlo pero para que te des una idea. // Saludos |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
dbgrid llenado de datos | emenchi34 | Conexión con bases de datos | 14 | 16-11-2006 11:34:44 |
Grid a DataSet | robinsongm | Varios | 2 | 28-07-2006 14:53:00 |
Agregar datos a un string grid | zvf | OOP | 2 | 05-07-2006 18:55:54 |
Llenado de Base de datos | Luis Castillo | Firebird e Interbase | 1 | 16-01-2006 20:52:36 |
Extraer datos de un dataset? | Durbed | Conexión con bases de datos | 5 | 01-10-2004 16:40:30 |
|