![]() |
![]() |
| 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
|
||||
|
||||
|
Gracias me has sabido ayudar pero tengo un problema:
Código:
procedure TForm4.Button1Click(Sender: TObject); begin DataModule2.IBQuery2.SQL.Text := 'INSERT INTO producto(cod_prod, nom_prod, atr_prod1, atr_prod2, atr_prod3, atr_prod4, atr_prod5) VALUES (:cod_prod, :nom_prod, :atr_prod1, :atr_prod2, :atr_prod3, :atr_prod4, :atr_prod5)'; DataModule2.IBQuery2.ExecSQL; end; el problema radica en que uso una grilla para poder ingresar los datos y esta grilla esta conectada a un datasource que a su vez esta conectada a un Query que como instruccion sql tiene: Código:
select * from producto Como debo conectar la grilla de manera que cuando haga click en el boton automaticamente la grilla me ofrezca una fila en blanco para ingresar los datos??? Espero haberme hecho entender y ojala puedan ustedes ayudarme gracias Última edición por el_barto fecha: 13-06-2005 a las 20:52:43. |
|
#2
|
||||
|
||||
|
[quote=el_barto]
Código:
procedure TForm4.Button1Click(Sender: TObject); begin DataModule2.IBQuery2.SQL.Text := 'INSERT INTO producto(cod_prod, nom_prod, atr_prod1, atr_prod2, atr_prod3, atr_prod4, atr_prod5) VALUES (:cod_prod, :nom_prod, :atr_prod1, :atr_prod2, :atr_prod3, :atr_prod4, :atr_prod5)'; DataModule2.IBQuery2.ExecSQL; end; DataModule2.IBQuery2.ParamByName('cod_pro').AsInteger := ?????? Pero no se como pasar el valor que tiene en la grilla en la columna 0, yo se que eso debe ser una tonteria pero recurro a ustedes dado que esa tonteria me quedo grande |
|
#3
|
||||
|
||||
|
Intente hacer esto pero esta mal
Código:
DataModule2.IBQuery2.ParamByName('cod_prod').AsInteger := DBGrid1.Columns[0].Value;
|
|
#4
|
|||
|
|||
|
Para usar grillas de ese modo, tendrías que elegir el componente IBDatSet. Tiene para asignarle SQL de consulta, borrado, modificación... Al conectarlo a un Grid, podés hacer las ediciones que quieras en él, y con el método ApplyUpdates los mandás todos juntos al servidor. No te preocupas por lo que hiciste en la grilla, lo que cambió, se actualiza todo junto automáticamente (genera los SQL de inserción, borrado y modificación él sólo, de acuerdo al modelo que le ponés en cada uno). Además te olvidás de las transacciones. Lógicamente, tu botón simplemente ejecuta ese método. Usando Query solamente, estás entrando en complicaciones innecesarias.
Con las opciones por defecto que trae el DBGrid, cuando te vas al final de la tabla y bajás con la flecha uno más, aparece un registro en blanco para editar, y escribir lo que quieras. Hay bastante material en este foro y en la web sobre cómo se usa ese componente. Vale la pena verlo. Un vínculo muy claro de cómo usar un dbgrid con un IBDataset está aquí: http://www.firebird.com.mx/modules/s...rticle&artid=7 Saludos. Última edición por axelbb fecha: 14-06-2005 a las 16:15:53. Razón: Agregar enlace relacionado al tema |
|
#5
|
||||
|
||||
|
Es que no deseo conectar la grilla a la base de datos directamente quiero es que la grilla sea un medio para pedir los datos y despues solo usar un boton que haga el query.
Por lo que he detallado si tu insertas datos o eliminas datos ( "solo por nombrar estas dos acciones" ) directamente sobre la tabla es un error grave, hay que suponer siempre que el usuario no tiene el nivel de habilidad que nosotros para manejar el aplicativo, por ejemplo: 1. Que tal que el usuario haya ingresado 10 registros y se de cuenta que estan mal no por error del programa si no por error del usuario y precisamente esta trabajando sobre la tabla, ummmm deberia cancelar la accion de ingresar datos peroooo ¡Mier....! estaba trabajando directamente sobre la base de datos nada que hacer ya inserto los registros. 2. Peor aun, que tal que el usuario este eliminando registros y elimine uno que nunca debio ser borrado deberia cancelar la accion hecha ¡H....p.....! nada que hacer lo borro directamente sobre la base. Y el usuario cada vez que tenga estos problemas puede llorar por que cada accion que ejecute es un camino sin retorno Ese es mi punto que cada accion que se haga no sea ejecutada sobre la base de datos si no en una grilla y despues cuando este seguro haga click en el boton Aceptar y este sea el encargado de ejecutar de ejecutar el IBQuery |
|
#6
|
|||
|
|||
|
Precisamente!!, si trabajas del modo que te explico, TODO EL TRABAJO DEL USUARIO será en memoria Y NO directamente en el servidor. Puede mandarse todas las cagadas que quiera... hasta apretar el botoncito que confirme los cambios:
procedure TForm1.Button1.Click(Sender: TObject); Begin // Pedir Mensaje de confirmacion antes de lo que sigue, obviamente!!! DataModule1.IBDataSet1.ApplyUpdates; end; Y después de esto, sí, a llorar al campito!! Pero si no, no se graba nada, aunque lo veas en el grid. Si desea descartar TODO lo que hizo después de la última ApplyUpdates, podés poner un botón que ejecute un: IBDataSet1.CancelUpdates y un IBDataSet1.Refresh y vuelve a estar como al principio. Es que nunca trabajó directamente sobre las tablas, sino en la caché local de su PC, mediante las sorprendentes posibilidades del componente DataSet. Probalo, lee el artículo que te sugerí antes. Suerte. |
|
#7
|
||||
|
||||
|
Lo voy aprobar y te cuento, Pero mientras me respondias no me quede con las manos cruzadas trabaje con el commit del IBTransaction, entonces coloque un boton que dice Aceptar y cuando lo presione hace un commit y otro boton que dice Cancelar y tambien cuando lo presione hace un rollback.
Pero sabes cual es el problema que me tiene a punto de mandar a la mier..... esta base?, es que manejo un boton que cuando se oprima funcione como el "+" del DBNavigator, ... es decir que cuando se presione se aliste para insertar y a la grilla se le agregue una fila en blanco lista para recibir datos.... Eso si es una mamera hacerlo y francamente ese puñetero Grid me tiene Loco si me podes ayudar con eso te lo agradecere por la eternidad |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|