Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-05-2011
victor2211 victor2211 is offline
Registrado
NULL
 
Registrado: may 2011
Posts: 3
Poder: 0
victor2211 Va por buen camino
Duda al hacer insert con delphi/firebird/IBObjects

Hola a todos, soy nuevo por aqui. El caso esque me han mandado un proyecto en el que debo usar delphi, firebird e Ibojets. Hasta ahora consegi hacer un select y que me recorra los campos usando el IBOquery y el IBOdatabase. Ahora me toca hacer un insert no tengo ni idea de como hacerlo. Nunca e usado delphi y nunca e usado pascal asique estoy un poco pegado. Busque por internet pero no encontre ningun ejemplo, asique cualquier ayuda sera bien recibida. Un saludo a todos y gracias de antemano.
Responder Con Cita
  #2  
Antiguo 05-05-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.405
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hola, bienvenido a clubdelphi
Exactamente, ¿qué quieres hacer?
Responder Con Cita
  #3  
Antiguo 05-05-2011
victor2211 victor2211 is offline
Registrado
NULL
 
Registrado: may 2011
Posts: 3
Poder: 0
victor2211 Va por buen camino
pues quiero hacer un insert a una tabla, pero ya lo consegi. El problema era que yo estaba usando el IBOquery, y este solo te permite obtener datos pero no midificarlos, asique al final use el IBOTable y ya me hace tanto la consulta, como el insert,delete y modificacion.
Responder Con Cita
  #4  
Antiguo 05-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 37
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Victor2211.

A modo de aclaración, se pueden modificar datos con un TIBQuery, con la salvedad que en lugar de Open debes usar ExcecSQL.

Como ejemplo:
Código Delphi [-]
var
  SQLStr: string;
begin
  SQLStr:= IBQuery1.SQL.Text;
  IBQuery1.Close;
  IBQuery1.SQL.Clear;
  IBQuery1.SQL.Add('UPDATE CLIENTES SET RAZON = ''PEREZ JUAN''');
  IBQuery1.ExecSQL;
  IBQuery1.Close;
  IBQuery1.SQL.Text:= SQLStr;
  IBQuery1.Open;
end;

Y si hacés uso de CachedUpdates podés de asociarle un TIBUpdateSQL al efecto.


Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 05-05-2011 a las 21:51:34.
Responder Con Cita
  #5  
Antiguo 06-05-2011
victor2211 victor2211 is offline
Registrado
NULL
 
Registrado: may 2011
Posts: 3
Poder: 0
victor2211 Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola Victor2211.

A modo de aclaración, se pueden modificar datos con un TIBQuery, con la salvedad que en lugar de Open debes usar ExcecSQL.

Como ejemplo:
Código Delphi [-]
var
  SQLStr: string;
begin
  SQLStr:= IBQuery1.SQL.Text;
  IBQuery1.Close;
  IBQuery1.SQL.Clear;
  IBQuery1.SQL.Add('UPDATE CLIENTES SET RAZON = ''PEREZ JUAN''');
  IBQuery1.ExecSQL;
  IBQuery1.Close;
  IBQuery1.SQL.Text:= SQLStr;
  IBQuery1.Open;
end;

Y si hacés uso de CachedUpdates podés de asociarle un TIBUpdateSQL al efecto.


Un saludo.
ok, muchas gracias por la ayuda, lo tendre en cuenta tambien.
Responder Con Cita
  #6  
Antiguo 19-05-2011
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 22
rastafarey Va por buen camino
Resp

Pon un bdgrid un dbnavigator. Estable ce las relaciones dataset datasuorce etc. Has doble click sobre el tibquiery. click la parte de select sql click en la tabal y click en los campos que quieres insertar o actualizar. luego uodatesql y le das generar las instrcciones el lo hace solito. lo activas y listo. mas facil que pelar mandarina.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #7  
Antiguo 19-05-2011
coej coej is offline
Miembro
NULL
 
Registrado: abr 2011
Ubicación: MANCHEGO-ESPAÑOL
Posts: 65
Poder: 15
coej Va por buen camino
rastafarey , me he quedado en el segundo gajo, en el select, eliges los campos, pero a partir de ahi para que te haga los borrados o updates en las modificaciones... ahi me he perdido, si es que la mandarina...
__________________
NOVATAZO...
Responder Con Cita
  #8  
Antiguo 19-05-2011
coej coej is offline
Miembro
NULL
 
Registrado: abr 2011
Ubicación: MANCHEGO-ESPAÑOL
Posts: 65
Poder: 15
coej Va por buen camino
es decir, todo esto lo puedes hacer con los botones del dbnavigator, para que el tibquery???, o no he entendido bien como lo quiere hacer victor...
__________________
NOVATAZO...
Responder Con Cita
  #9  
Antiguo 19-05-2011
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 25
guillotmarc Va por buen camino
Cita:
Empezado por coej Ver Mensaje
es decir, todo esto lo puedes hacer con los botones del dbnavigator, para que el tibquery???, o no he entendido bien como lo quiere hacer victor...
Victor ya ha comentado que ha cambiado el IBQuery por un IBTable, puesto que el IBQuery no sirve para hacer inserciones/modificaciones (a menos, claro, que utilices el IBQuery para lanzar manualmente una sentencia INSERT o UPDATE, como bien ha dicho ecfisa). En cualquiera de los casos dbNavigator no nos sirve para hacer inserciones/modificaciones desde un IBQuery (en todo caso habría que cambiarlo por un IBTable o IBDataset, como ha hecho Victor).

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #10  
Antiguo 19-05-2011
coej coej is offline
Miembro
NULL
 
Registrado: abr 2011
Ubicación: MANCHEGO-ESPAÑOL
Posts: 65
Poder: 15
coej Va por buen camino
ok, eso si lo he pillado, lo que no entiendo es lo que comenta rastfary, con los borrados y updates desde la propiedad sql del ibquery, eso es lo que no me ha quedado claro...
Yo creo que con el dbnavigator y dbgrid es suficiente, aunque supongo que habrá gente que no le guste así y se haga de otras formas , quizás asociando a botones código asociado el ibquery(que no se si se podra hacer que soy muy novato en esto)...
__________________
NOVATAZO...
Responder Con Cita
  #11  
Antiguo 07-06-2011
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 22
rastafarey Va por buen camino
Resp

A los ibquery debes establecerles las instrccuines sqls. select, insert, update y delete.

HAs doble clic sobre el componente
PAra establecer los sqls.

Para select pestaña SQL. Click sobre la tabal y o sobre los campos y veras como funciona.

Luego pesdtaña UPDATE SQL y le das A generate for table y listo.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #12  
Antiguo 07-06-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 37
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola rastafarey.

Puedo estar confundido, pero hasta donde sé, la única forma de usar las propiedades ModifySQL, InsertSQL y DeleteSQL con un TIBQuery es asignándole a la propiedad UpdateObject un TIBUpdateSQL. O de otra forma lanzar una sentencia de ese tipo manualmente.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 07-06-2011 a las 16:10:25.
Responder Con Cita
  #13  
Antiguo 22-05-2012
JPCastro JPCastro is offline
Registrado
 
Registrado: may 2008
Posts: 3
Poder: 0
JPCastro Va por buen camino
Cool Modificar datos a través de un TIBOQuery

Hola a todos
Seguramente a estas alturas has podido resolver tu problema Victor, pero escribiré esto por si alguien más consulta esta liga, a manera de aclaración.
Para poder modificar datos con un objeto tIBOQuery, es necesario poner código en tres propiedades: DeleteSQL, EditSQL e InsertSQL, con las respectivas sentencias en sql para hacer la operación respectiva. Esto puede hacerse escribiendo el código directamente en estas propiedades en el inspector de objetos de delphi (una vez que está seleccionado el objeto tIBOQuery, por supuesto) o bien haciendo uso del asistente: se selecciona el objeto, luego botón secundario (generalmente botón derecho del ratón), en el menú contextual seleccionar la opción "Edit query" y aparece el asistente de configuración del objeto, por default en la pestaña SQL, donde se pone la sentencia Select con la cual extraeremos los datos de una tabla; la última pestaña de ese pagecontrol, se llama UpdateSQL, ahí están en tres secciones las propiedades referidas, y dos botones "Generate for table" y "Generate for procedure", al dar click llenará los espacios respectivos con el código SQL para hacer el UPDATE, INSERT y DELETE.

Una vez hecho esto, se pueden hacer las operaciones de modificación a la tabla referida.

Saludos.
Responder Con Cita
  #14  
Antiguo 12-03-2025
cdamer cdamer is offline
Registrado
 
Registrado: jun 2008
Ubicación: Argentina, Entre Rios, Gualeguaychu
Posts: 9
Poder: 0
cdamer Va por buen camino
Como es el uso practico de un DeleteSql por ej.

Hola,
se que ha pasado un tiempo, pero sigo sin poder usar esta caracteristica de los TIBOQuery, que podria ser muy util aparentemente.
entiendo como generar los SQL en el TIBOQuery.
pero no comprendo como seria el codigo para pasar parametros si deseo eliminar un registro por ej.
como es el uso practico de esos sql's generados ?
se asigna un SQL generado, a otro componente ?
se usa el mismo componente ?
como se asignan los parametros en cada caso y como se ejecuta cada SQL ?
Responder Con Cita
  #15  
Antiguo 12-03-2025
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 280
Poder: 2
navbuoy Va por buen camino
En Delphi usando TIBOQuery (de IBObjects), puedes ejecutar una sentencia SQL de varias maneras dependiendo del tipo de consulta que deseas hacer.

�� Para consultas de selección (SELECT)
Si necesitas recuperar datos de la base de datos:

Código Delphi [-]
IBOQuery1.SQL.Text := 'SELECT * FROM clientes WHERE ciudad = :ciudad';
IBOQuery1.ParamByName('ciudad').AsString := 'Madrid';
IBOQuery1.Open;  // O usar IBOQuery1.Active := True;

Aquí se usa ParamByName para evitar SQL Injection y mejorar rendimiento.

�� Para consultas de acción (INSERT, UPDATE, DELETE)
Si necesitas ejecutar una consulta que modifique datos:

Código Delphi [-]
IBOQuery1.SQL.Text := 'UPDATE clientes SET telefono = :telefono WHERE id = :id';
IBOQuery1.ParamByName('telefono').AsString := '123456789';
IBOQuery1.ParamByName('id').AsInteger := 10;
IBOQuery1.ExecSQL;

�� ExecSQL se usa en sentencias que no devuelven datos.

�� Para ejecutar una consulta sin parámetros
Si la consulta es fija y sin parámetros, puedes ejecutarla directamente:

Código Delphi [-]
IBOQuery1.SQL.Text := 'DELETE FROM pedidos WHERE estado = ''cancelado''';
IBOQuery1.ExecSQL;

�� Para recorrer los datos después de ejecutar un SELECT
Si necesitas procesar los resultados de una consulta:

Código Delphi [-]
IBOQuery1.SQL.Text := 'SELECT id, nombre FROM clientes';
IBOQuery1.Open;

while not IBOQuery1.Eof do
begin
  ShowMessage('Cliente: ' + IBOQuery1.FieldByName('nombre').AsString);
  IBOQuery1.Next;
end;

IBOQuery1.Close; // Cerrar consulta al finalizar



en concreto Cdamer, lo que ParamByName te permite es con ayuda de la "cadena de texto" construir sentencias SQL para el TQuery asi digamos "personalizadas" como con variables y tal que podrian tomar ciertos valores en el transcurso del programa o bien por ejemplo si tenemos alguna especie de "Constructor" (en nuestra app) para que el usuario digamos "pregunte (via SQL)" cosas que le vengan en gana (al usuario) a la BD variando esos valores de la consulta SQL me refiero mediante algun sistema que tu mismo elabores para el usuario por ejemplo un desplegable con opciones relativas a cierto campo o bien un Editbox donde el usuario meteria numeros para por ejemplo listar registros cuyo "salario" sea de tanto ..... entiendes no?? eso le da mucha mas flexibilidad y customizacion potente que si por ejemplo solo estableces en el codigo la sentencia SQL pre-fijada.

Espero que asi te quede mas claro todo, un saludo amigo

Última edición por navbuoy fecha: 12-03-2025 a las 16:17:57.
Responder Con Cita
  #16  
Antiguo 12-03-2025
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 280
Poder: 2
navbuoy Va por buen camino
y si, se usa el mismo componente IBOQuery para todo lo unico en tu parte del codigo que proceda, asignar la propiedad de SQL con la consulta EXCEPTO que por alguna razon necesites por ejemplo usar un TQuery para un SELECT y conservar el resultado porque dependiendo de lo que leas de los datos del SELECT tengas por ejemplo que hacer modificaciones a la propia TABLA u otra TABLA en cuyo caso necesitarias 2 objetos TIBOQUERY (ya que como digo, necesitas disponer de los datos del primero para recorrerlos y actuar segun sea la interpretacion o valores o lectura de esos campos/datos del SELECT con un INSERT o UPDATE en el otro TQUERY o tal)

porque como ya estaras suponiendo, si haces el SELECT y vuelves a utilizar el TIBOQUERY de nuevo pues los resultados del SELECT adios adios..... ajjajaja

y otra cosa que no se si han dicho por aqui Cdamer, es que por ejemplo si utilizas la TTABLE en memoria, dependiendo de si tienes muchisimos registros puede petar la propia memoria o el Stack o algo de la app, pero con una consulta SQL en un TIBOQuery creo que no pasa eso ya que no carga el contenido de toda la tabla en la memoria, eso es bueno saberlo si, porque si eres capaz de "gestionar" todo el tema de la BD solo con el TQuery pues mejor

Última edición por navbuoy fecha: 12-03-2025 a las 16:28:44.
Responder Con Cita
  #17  
Antiguo 12-03-2025
cdamer cdamer is offline
Registrado
 
Registrado: jun 2008
Ubicación: Argentina, Entre Rios, Gualeguaychu
Posts: 9
Poder: 0
cdamer Va por buen camino
ModifySQL, InsertSQL y DeleteSQL con un TIBQuery

Muchas gracias por la pronta respuesta, navbuoy !!
pero me referia a como usar las propiedades ModifySQL, InsertSQL y DeleteSQL con un TIBQuery
Responder Con Cita
  #18  
Antiguo 12-03-2025
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 280
Poder: 2
navbuoy Va por buen camino
realmente creo que no hace falta si usas la propiedad SQL del componente, porque la propia "sentencia SQL" que implementes ya resuelve eso

pero aqui te doy la informacion relativa a eso:

Las propiedades ModifySQL, InsertSQL y DeleteSQL en TIBQuery (de IBObjects) permiten definir manualmente las sentencias SQL para las operaciones de actualización, inserción y eliminación, en lugar de depender de la generación automática de IBObjects.

�� Uso de ModifySQL, InsertSQL y DeleteSQL en TIBQuery
1️⃣ Configuración en tiempo de diseño
Abre el diseñador de Delphi.
Agrega un componente TIBQuery al formulario.
Configura la propiedad SQL con la consulta SELECT.
Expande la propiedad UpdateSQL en el Inspector de Objetos.
Define las sentencias en ModifySQL, InsertSQL y DeleteSQL.
2️⃣ Configuración en código
Puedes definir las sentencias manualmente en tiempo de ejecución:

Código Delphi [-]
IBQuery1.SQL.Text := 'SELECT id, nombre, telefono FROM clientes WHERE id = :id';

// Configuración de Update (ModifySQL)
IBQuery1.ModifySQL.Text :=
  'UPDATE clientes SET nombre = :nombre, telefono = :telefono WHERE id = ld_id';

// Configuración de Insert (InsertSQL)
IBQuery1.InsertSQL.Text :=
  'INSERT INTO clientes (id, nombre, telefono) VALUES (:id, :nombre, :telefono)';

// Configuración de Delete (DeleteSQL)
IBQuery1.DeleteSQL.Text :=
  'DELETE FROM clientes WHERE id = ld_id';

�� Ejemplo de Uso
Después de configurar las sentencias, puedes utilizar ApplyUpdates para aplicar los cambios:

Código Delphi [-]
IBQuery1.Open;  // Abrimos la consulta

// Modificar un registro
IBQuery1.Edit;
IBQuery1.FieldByName('nombre').AsString := 'Juan Pérez';
IBQuery1.FieldByName('telefono').AsString := '987654321';
IBQuery1.Post;

IBQuery1.ApplyUpdates; // Aplica los cambios en la base de datos

// Insertar un registro
IBQuery1.Append;
IBQuery1.FieldByName('id').AsInteger := 100;
IBQuery1.FieldByName('nombre').AsString := 'Nuevo Cliente';
IBQuery1.FieldByName('telefono').AsString := '123456789';
IBQuery1.Post;

IBQuery1.ApplyUpdates;

// Eliminar un registro
IBQuery1.Delete;
IBQuery1.ApplyUpdates;

�� ¿Cuándo usar ModifySQL, InsertSQL y DeleteSQL?

Si la tabla no tiene una clave primaria bien definida.
Si necesitas consultas personalizadas (ejemplo: manejar registros de auditoría).
Si hay restricciones específicas en la base de datos que requieren manejar los cambios manualmente.



Creo que asi lo vas a tener ya claro del todo..... te pasare mi bizum, 100 euros bastaran (jajajaj es broma)

Última edición por navbuoy fecha: 12-03-2025 a las 16:44:49.
Responder Con Cita
  #19  
Antiguo 12-03-2025
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.405
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por cdamer Ver Mensaje
Muchas gracias por la pronta respuesta, navbuoy !!
pero me referia a como usar las propiedades ModifySQL, InsertSQL y DeleteSQL con un TIBQuery
Es igual al otro componente.
De todas formas, al seleccionar la tabla, pulsas en generar sql y se rellenan todos automáticamente.

Y si no es eso lo que preguntas entonces es mejor que crees un nuevo hilo con tu duda, aclarando exactamente lo que necesitas.
Responder Con Cita
  #20  
Antiguo 12-03-2025
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 280
Poder: 2
navbuoy Va por buen camino
Esta bien asi Casimiro, guarda relacion con el tema del hilo y creo que ya no queda mucho mas que explicar
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Desinstalando IBObjects de delphi 2010 jourdan Conexión con bases de datos 3 24-08-2010 20:45:46
duda edit, insert, delete en Delphi 7 y MySQL eneseme MySQL 11 25-05-2010 12:03:21
Conocer lista de tablas de Base Datos (Firebird 2.0 y Componentes IBObjects) mpedrero Conexión con bases de datos 5 16-02-2007 10:55:59
Error al hacer insert (campo fecha) en firebird con fibplus Acanol Firebird e Interbase 7 15-06-2006 09:05:07
Con delphi Insert en Firebird varios registros desde otra tabla lasweb Conexión con bases de datos 3 04-04-2005 20:58:26


La franja horaria es GMT +2. Ahora son las 11:44:52.


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