Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-06-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 20
el_barto Va por buen camino
Post 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??
Responder Con Cita
  #2  
Antiguo 13-06-2005
axelbb axelbb is offline
Miembro
 
Registrado: oct 2004
Posts: 127
Poder: 20
axelbb Va por buen camino
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?
Responder Con Cita
  #3  
Antiguo 13-06-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 20
el_barto Va por buen camino
Post

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;
este es el codigo usado para insertar nuevos productos a mi base y se ejecuta cuando hago click sobre el boton

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
pero cuando hago click en el boton me saca error diciendo que el valor cod_prod es NULO y pues por supuesto que es nulo por que no he podido ingresar los datos por que la grilla no me da una fila en blanco para insertar datos....
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.
Responder Con Cita
  #4  
Antiguo 13-06-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 20
el_barto Va por buen camino
Post

[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;
necesito que lo que yo escriba en una grilla me lo copie a la base de datos mediante un query pero no se como solo llegue hasta aqui:

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
Responder Con Cita
  #5  
Antiguo 13-06-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 20
el_barto Va por buen camino
Intente hacer esto pero esta mal

Código:
DataModule2.IBQuery2.ParamByName('cod_prod').AsInteger := DBGrid1.Columns[0].Value;
solo por esto estoy barado les agradezco
Responder Con Cita
  #6  
Antiguo 14-06-2005
axelbb axelbb is offline
Miembro
 
Registrado: oct 2004
Posts: 127
Poder: 20
axelbb Va por buen camino
Exclamation 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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 09:01:06.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi