![]() |
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.
|
Hola, bienvenido a clubdelphi :)
Exactamente, ¿qué quieres hacer? |
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.
|
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:
Y si hacés uso de CachedUpdates podés de asociarle un TIBUpdateSQL al efecto. Un saludo. |
Cita:
|
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.
|
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...
|
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...
|
Cita:
Saludos. |
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)... |
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. |
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. |
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. |
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 ? |
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:
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:
�� 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:
�� Para recorrer los datos después de ejecutar un SELECT Si necesitas procesar los resultados de una consulta:
![]() 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 |
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 |
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 |
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:
�� Ejemplo de Uso Después de configurar las sentencias, puedes utilizar ApplyUpdates para aplicar los cambios:
�� ¿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) |
Cita:
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. |
Esta bien asi Casimiro, guarda relacion con el tema del hilo y creo que ya no queda mucho mas que explicar
|
La franja horaria es GMT +2. Ahora son las 11:19:09. |
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