FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
como ejecutar un sql mediante un Button
Buenos dias de antemano agradezco la atencion prestada a este hilo
Tengo un problema yo tengo una base de datos manejada en interbase y uso como lenguaje de programacion Delphi, yo deseo usar un boton para ejecutar una sentencia sql, dado que en una de mis ventanas solo va a ser usada para la adicion de mis productos no se veria bien si utilizo un dbnavigator. El problema radica en que el boton no tiene la propiedad datasource para conectarlo a mi DataModule2.DataSource1... En este caso como hago para ejecutar mi sql?? |
#2
|
|||
|
|||
No hay problema
El botón no tiene por qué tener asociado un datasource. Simplemente ejecuta un procedimiento que a su vez hace lo que necesitas. Por ejemplo:
procedure TForm1.BitBtn1Click(Sender: TObject); begin TuDataModule.Query1.Open; end; Desde luego, es un código elemental, podés hacer que abra una transacción para ejecutar tu SQL, una ventana con componentes diferentes para mostrar los datos... Mil cosas. Dentro del Query1.SQL tenés la sentencia SQL, donde podés pasarle parámetros, qué se yo. Esa es la duda o no entendí bien? |
#3
|
||||
|
||||
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. |
#4
|
||||
|
||||
[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 |
#5
|
||||
|
||||
Intente hacer esto pero esta mal
Código:
DataModule2.IBQuery2.ParamByName('cod_prod').AsInteger := DBGrid1.Columns[0].Value; |
#6
|
|||
|
|||
Cambiate a un IBDataSet
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 |
|
|
|