Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   update, insert, delete fibplus, ayuda!!! (https://www.clubdelphi.com/foros/showthread.php?t=81709)

montesoft 10-12-2012 21:51:19

update, insert, delete fibplus, ayuda!!!
 
Muy buenas tardes, debido a algunos inconvenientes con ibx decidí usar fibplus, la documentación y ejemplos q ofrece el desarrollador no es muy clara o detallada. En delphi puedo realizar una consulta con el tpFIBDataset sin problemas pero a la hora de insertar (INSERT),modificar (UPDATE) o eliminar (DELETE) la instruccion no genera error pero no hace lo q se necesita, el código base q uso es el siguiente:
Código Delphi [-]
with tpFIBDataset1 do
 begin
  Close;
  UpdateSQL.Clear;
  UpdateSQL.Text := 'UPDATE TABLA SET CAMPO = ' + VALOR + ' WHERE CAMPO = ' + VALOR;
  Open;
 end;

Alguien me puede ayudar?, de antemano mil gracias.

Casimiro Notevi 10-12-2012 22:12:25

Si no sabes conducir, al cambiar de coche, sigues sin saber ;). ¿Por qué cambiaste de IBX a FIBplus?, ¿y qué problema es el que tienes?
¿Te podemos ayudar?, anda, léete la guía de estilo ;)

maeyanes 10-12-2012 22:17:58

Hola...

La mayoría de los componentes para acceso a Firebird/Interbase (y puede que para cualquier base de datos), usan el método ExecSQL cuando lanzas una consulta que modifica los datos en la base de datos.

En tu caso, prueba usando el método ExecSQL (o alguno equivalente para esos componentes) en lugar de Open.



Saludos...

montesoft 10-12-2012 22:24:40

Los inconvenientes se presentaban al usar la instruccion INSERT INTO con valores string (ya ni me acuerdo lo q decia el error), buscando la posible solucion m dijeron q el problema era en el archivo ibquery.pas y me ofrecieron el codigo para corregirlo pero eso no pasó. Ademas no he encontrado documentación o ejemplos para realizar la relacion maestro - detalle asi q opte x otra alternativa.

Casimiro Notevi 10-12-2012 22:27:17

Ufff... has mezclados muchas preguntas, tendrás que ir paso a paso, creo que mejor mira este hilo, es un minitutorial que creó Caral.

Casimiro Notevi 10-12-2012 22:29:19

Y también te interesa este otro, está en formato pdf.

montesoft 10-12-2012 22:29:26

No existe una instruccion EXECSQL ni he encontrado un equivalente.

Casimiro Notevi 10-12-2012 22:38:54

Cita:

Empezado por montesoft (Mensaje 451592)
No existe una instruccion EXECSQL ni he encontrado un equivalente.

Entonces es que no has leido nada de lo aconsejado.

montesoft 10-12-2012 22:46:52

Cita:

Empezado por Casimiro Notevi (Mensaje 451594)
Entonces es que no has leido nada de lo aconsejado.

A ver "Casimiro Notevi", en primera empiezas diciendo q son muchas preguntas, es solo una "xq no funciona el codigo q planteo en fibplus?", 2 - me recomiendan q pruebe la instruccion EXECSQL y le respondo q esa no existe para fibplus, x ultimo tu aconsejas q lea un hilo y un pdf (ya los lei), eso q está allí yo lo se hacer, pero igual no responde a mi inquietud.

Casimiro Notevi 10-12-2012 22:54:09

Te he pasado enlace a un minitutorial también.
Disculpa, pero si supieras todo eso, como dices, no tendrías estas dudas, es como si dices que sabes multiplicar y preguntas cómo se suma :S

Para select... usa .open
Para update, insert, delete... usa .execsql (tanto con IBX como con FIBplus)

montesoft 10-12-2012 23:04:14

Cita:

Empezado por Casimiro Notevi (Mensaje 451596)
Te he pasado enlace a un minitutorial también.
Disculpa, pero si supieras todo eso, como dices, no tendrías estas dudas, es como si dices que sabes multiplicar y preguntas cómo se suma :S

Para select... usa .open
Para update, insert, delete... usa .execsql (tanto con IBX como con FIBplus)

Amigo no se q version de fibplus usas (tengo la 6.9.9) pero los TPFIBDATASET no tienen un metodo EXECSQL, ya lo busque y nada. En todo caso agradezco tu paciencia.

maeyanes 10-12-2012 23:08:04

Hola...

Si vas a usar las propiedades UpdateSQL, InsertSQL y DeleteSQL de TPFIBDataSet, estas no se ejecutan mediante Open, si no usando los métodos Edit, Insert y Delete y en los casos de los dos primeros, tienes que hacer un Post al finalizar de modificar los datos. Esto es de la misma forma en que lo harías usando un TIBDataSet.


Saludos...

Casimiro Notevi 10-12-2012 23:09:11

El FIBquery, te aconsejo que uses ese.
El FIBdataset úsalo cuando quieras hacer selects y necesites mostrar el resultado en un dbgrid, por ejemplo.

Casimiro Notevi 10-12-2012 23:12:30

Si leyeras el tutorial, no te ocurriría esas cosas, ni tendrías que cambiar de componentes por desconocimiento, amigo. Hay que leer, mirar lo que hacen otros, probar, etc.
No hay otra forma de aprender.

ecfisa 10-12-2012 23:18:01

Cita:

Empezado por montesoft (Mensaje 451584)
Muy buenas tardes, debido a algunos inconvenientes con ibx decidí usar fibplus, la documentación y ejemplos q ofrece el desarrollador no es muy clara o detallada.

Hola montesoft.

Revisando uno de estos enlaces pude leer:
Cita:

...

Basic principles of work with datasets

TpFIBDataSet enables developers to select, insert, update and delete data. All these operations are executed by TpFIBQuery components in TpFIBDataSet.

To select data you set the SelectSQL property. It’s similar to setting the SQL property of the QSelect component (TpFIBQuery type). Define the InsertSQL.Text property to insert data, UpdateSQL.Text to update, DeleteSQL.Text to delete and RefreshSQL.Text to refresh the data.

We will use a demo database employee.gdb (or .fdb for Firebird) to show how to write Select
SQL and get a list of all employees. We will write all queries in InsertSQL, UpdateSQL, etc.
Código Delphi [-]
with pFIBDataSet1 do
begin
  if Active then Close;
  SelectSQL.Text := 'select CUST_NO, CUSTOMER, CONTACT_FIRST, CONTACT_LAST from CUSTOMER';
  InsertSQL.Text := 'insert into CUSTOMER(CUST_NO, CUSTOMER, CONTACT_FIRST, CONTACT_LAST )'+
                    ' values (:CUST_NO, :CUSTOMER, :CONTACT_FIRST, :CONTACT_LAST)';
  UpdateSQL.Text := 'update CUSTOMER set CUSTOMER = :CUSTOMER, '+
                    'CONTACT_FIRST = :CONTACT_FIRST, CONTACT_LAST = :CONTACT_LAST '+
                    'where CUST_NO = :CUST_NO';
  DeleteSQL.Text := 'delete from CUSTOMER where CUST_NO = :CUST_NO';
  RefreshSQL.Text:= 'select CUST_NO, CUSTOMER, CONTACT_FIRST, CONTACT_LAST ' +
                    'from CUSTOMER where CUST_NO = :CUST_NO';
  Open;
end;
...
Saludos.

Casimiro Notevi 10-12-2012 23:28:04

Es que decir que FIBplus tiene una documentación escasa y poca clara, cuando realmente tiene una impresionante documentación con ejemplos de todos los componentes, tutoriales, etc.
Pues eso, que si no se lee... pasan estas cosas.

montesoft 10-12-2012 23:29:14

Cita:

Empezado por maeyanes (Mensaje 451598)
Hola...

Si vas a usar las propiedades UpdateSQL, InsertSQL y DeleteSQL de TPFIBDataSet, estas no se ejecutan mediante Open, si no usando los métodos Edit, Insert y Delete y en los casos de los dos primeros, tienes que hacer un Post al finalizar de modificar los datos. Esto es de la misma forma en que lo harías usando un TIBDataSet.


Saludos...

Ok amigo, muchas gracias (no pensé q seria como paradox) y para "ecfisa" creeme q eso lo intenté pero fijate q todas usan un metodo "open" al final y al parecer solo es util para los "select". Muchas gracias por la ayuda prestada.

montesoft 10-12-2012 23:36:31

Cita:

Empezado por Casimiro Notevi (Mensaje 451602)
Es que decir que FIBplus tiene una documentación escasa y poca clara, cuando realmente tiene una impresionante documentación con ejemplos de todos los componentes, tutoriales, etc.
Pues eso, que si no se lee... pasan estas cosas.

Hombre, yo en ningun momento dije q fuera escasa. No crees q hubiera sido suficiente con una respuesta como la q m dió "maeyanes" o tu mismo al decir q usara fibquery?. Demos el asunto x terminado no crees.

ecfisa 11-12-2012 00:14:45

Hola montesoft.

Primeramente tengo que aclararte que no he tenido ni el más mínimo roce con esos componentes.

Pero me estaba preguntando si el componente TpFIBDataSet no tendrá similitud con el TIBDataSet donde, una vez definidas las sentencias SQL basta con ponerlo en modo edición (Edit), o inserción(Append,Insert), realizar los cambios y por último guardarlos con(Post)... :rolleyes:

Saludos.

Casimiro Notevi 11-12-2012 00:53:55

Cita:

Empezado por montesoft (Mensaje 451604)
Hombre, yo en ningun momento dije q fuera escasa.

Cierto, dijiste:
Cita:

Empezado por montesoft (Mensaje 451584)
... decidí usar fibplus, la documentación y ejemplos q ofrece el desarrollador no es muy clara o detallada.

Cita:

Empezado por montesoft
No crees q hubiera sido suficiente con una respuesta como la q m dió "maeyanes" o tu mismo al decir q usara fibquery?. Demos el asunto x terminado no crees.

No hay ningún problema, montesoft, pero en los dos tutoriales que te he indicado usan IBquery, por eso te indiqué esos, precisamente, para que vieras la diferencia, y no te indiqué otros tutoriales ni hilos donde se ha tratado el tema.


La franja horaria es GMT +2. Ahora son las 08:21:14.

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