Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Editar A Mano Datos En Firebird (https://www.clubdelphi.com/foros/showthread.php?t=82495)

bulc 12-03-2013 21:34:22

Editar A Mano Datos En Firebird
 
He conseguido acceder a una tabla de Bdatos Firebird. Uso los componentes IBExpert: IBDataBase, IBTransaction, IBQuery, IBUpDateSQL y DataSource más un DBGrid y DBNavigator. Puedo guardar datos e imágenes en el DBGrid, pero el Navigator me da muchos errores. Apenas tiene código. Sólo la mera conexión. Me gustaría poder editar, modificar etc. con loss DBEdit y un DBImage. El caso es que no sé por dónde empezar. ¿Alguién me puede decir dónde puedo encontrar ejemplos de código para este punto?
Espero no salirme de cauce haciendo esta pregunta. Me he roto la cabeza para conseguir llegar a este punto.
Gracias.

roman 12-03-2013 21:37:29

¿Y qué errores son esos que te da? Sería conveniente que ahondaras en la explicación de lo que sucede.

// Saludos

bulc 12-03-2013 23:08:29

No hay código, sólo conexión
 
Se me ocurre pensar que tal vez deba colocar un IBTable para centrar el trasiego a una tabla. Hasta otra.

Young 14-03-2013 03:13:09

Para trabajar con IBExpert en la edición de una tabla te recomiendo que uses IBDataset, para eso supongamos que tienes una tabla cliente, en la propiedad SQL del Dataset ingresas lo siguiente:

Código SQL [-]
SELECT * FROM CLIENTES

Deberás tener el componente enlazado a IBDatabase e IBTransaction correspondiente. Posteriormente haces click derecho sobre el componente dataset y seleccionas la opción de menú Dataset Editor, veras que esta seleccionado el nombre de la tabla y en resumidas cuentas pulsas los botones "Get Table Fields", "Dataset Defaults", "Select Primary Keys" y finalmente "Generate SQL". Todo esto para definir los campos que serán actualizados (todos en este caso), la llave primaria y crear las sentencias sql necesarias para insertar, modificar y eliminar.

Luego y trabajas el dataset como cualquier otro:
Código Delphi [-]
IBDataset1.Append;
..
IBDataset1.Edit;
..
IBDataset1.Delete:
..
IBDataset2.Post;

Espero que te sirva de orientación.

Saludos.

bulc 14-03-2013 21:30:56

Gracias, parece tan fácil... pero ya veremos.
 
Muchas gracias, lo había hecho pero se ve que no del todo bien. Sólo funcionaba el append/insert de altas del navegador. El refresh me daba error. Lo volveré a intentar.

beginner01 15-03-2013 03:24:36

Hola!

Que error es el que te da?

bulc 15-03-2013 13:52:57

No va el Refresh del Navegador
 
Como digo, me da error el Refresh del Navegador y también la modificación de registros. No pongo el error literal porque no lo tengo a mano.
Gracias.

bulc 10-04-2013 14:28:34

Firebird me funciona perfectamente.
 
Ya lo tengo todo en marcha.

Casimiro Notevi 10-04-2013 16:05:17

Creo que te hace falta leer "la otra guía de estilo" ;)

Al González 10-04-2013 19:38:39

██████████

bulc 05-05-2013 20:15:58

Cita:

Empezado por bulc (Mensaje 458372)
Ya lo tengo todo en marcha.

Código Delphi [-]
//Quiero ordenar la tabla por el campo 'ELEMENTO'
//Al usar este código me da el error: Token unknown -line2, column 1, SELECT
SQLQuery1.Close;
SQLQuery1.SQL.Add('SELECT * FROM NEW_TABLE ORDER BY ELEMENTO');
SQLQuery1.Open;

El caso es que cuando doy la orden en otra Aplicación (con la misma tabla) donde pruebo las ordenes, me funciona.
¿Alguien sabe qué hago mal? Gracias.

Casimiro Notevi 05-05-2013 20:57:36

Para empezar, cambiar el .add por .text ya que de esa forma en cada pasada por ahí vas añadiendo (Add) al código que tenga

Código Delphi [-]
SQLQuery1.Close; 
SQLQuery1.SQL.Text = 'SELECT * FROM NEW_TABLE ORDER BY ELEMENTO'; 
SQLQuery1.Open;

ecfisa 05-05-2013 21:23:15

Hola bulc.

Agregando algo a lo que correctamente te señaló Casimiro, cuando utilices el método Add, siempre antepone la llamada al método Clear para borrar de la lista todas las cadenas previas.
Código Delphi [-]
SQLQuery1.Close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add(....
Pero sigo coincidiendo que cuando se trata de una consulta que ocupa sólo una línea es mucho mejor usar la propiedad Text.

Saludos. :)

bulc 06-05-2013 14:47:10

Ya lo hago. Uso Clear al empezar
 
Lo dicho, antes de usar el método Add, uso Clear. Gracias por vuestras aportaciones.

bulc 17-05-2013 14:23:05

Coloco un TDBNavigator y ClientDataSet, o no
 
Cita:

Empezado por Young (Mensaje 456733)
Para trabajar con IBExpert en la edición de una tabla te recomiendo que uses IBDataset, para eso supongamos que tienes una tabla cliente, en la propiedad SQL del Dataset ingresas lo siguiente:

Código SQL [-]
SELECT * FROM CLIENTES

Deberás tener el componente enlazado a IBDatabase e IBTransaction correspondiente. Posteriormente haces click derecho sobre el componente dataset y seleccionas la opción de menú Dataset Editor, veras que esta seleccionado el nombre de la tabla y en resumidas cuentas pulsas los botones "Get Table Fields", "Dataset Defaults", "Select Primary Keys" y finalmente "Generate SQL". Todo esto para definir los campos que serán actualizados (todos en este caso), la llave primaria y crear las sentencias sql necesarias para insertar, modificar y eliminar.

Luego y trabajas el dataset como cualquier otro:
Código Delphi [-]
IBDataset1.Append;
..
IBDataset1.Edit;
..
IBDataset1.Delete:
..
IBDataset2.Post;

Espero que te sirva de orientación.

Saludos.

Me pregunto si el TDBNavigator ya habilita los cambios o debo usar las sentencias SQL del Dataset.
Ahora estoy atascado porque mi Delphi no enseña los campos, una vez asignado el DatSource. Pero no me da errores, así que sigo.
Saludos, Bulc.

Casimiro Notevi 17-05-2013 17:31:55

Te aconsejo encarecidamente el libro "La cara oculta de delphi 4", está en nuestro FTP, después de leerlo "serás otro" ;)


La franja horaria es GMT +2. Ahora son las 20:03:20.

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