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)
-   -   Como puedo ver el contenido de IBTable en un DBGrid (https://www.clubdelphi.com/foros/showthread.php?t=35313)

Delphius 06-09-2006 22:22:38

Como puedo ver el contenido de IBTable en un DBGrid
 
Antes que nada, disculpen si ya había un hilo con algo similar, la verdad es que no busqué en los foros porque no puedo darme más tiempo.

Estoy manejando Firebird 1.5.3 con Delphi 6. He arrastrado los componentes que aparecen en la pestaña Interbase (IBTable, IBDatabase, IBTransaction, etc) para hacer algunas pruebas.
Puedo hacer la conexión, pero la verdad es que me quedé colgado cuando veo que no se de que manera ver el contenido de las tablas... se que soy un novato en esto de firebird (me estoy iniciando) y el manejo de base de datos con delphi (mi expereiencia anterior fue en VB y SQL Server).

No se como hacer la conexión entre IBTable y DBGrid.
Si alguien puede darme una guía en esto le agradecería su ayuda.
Saludos,

Casimiro Notevi 06-09-2006 22:31:47

Hola, tan sólo debes poner un datasource, le asocias el ibtable al mismo y luego al dbgrid le asocias el datasource, listo :)

Caral 06-09-2006 22:33:01

Hola
Es interesante, y ahunque nunca he trabajado con Interbase supongo que debe ser lo mismo, bueno por si acaso:
Tienes un from,
Un IBTable, conectado a la base de datos y a su vez a una tabla en especial.
Un Datasorce, conectado en Dataset a Ibtable1
Un DBgrid, conectado al Datasorce
Un boton de cerrar, y ya
Supongo que el camino basico debe ser parecido para conectar cualquier base de datos.
Ojala te sirva.
Saludos

Delphius 06-09-2006 22:37:41

¿Estoy loco?
 
Pues debo estar loco (o a lo mejor mi tesis.. ya consiguí su propósito:D ), pero podría jurar que ingrese el DataSource... pero no me dajaba asociarle el IBTable ¿?:confused: ... ahorita estoy en la facu, y no tienen delphi... cuando vuelva a casa me fijo bien....

Saludos,

Delphius 07-09-2006 14:28:33

Estuve probando...
 
Hola de nuevo, pobré lo del datasource pero no me muestra el contenido en dbgrid. Para ser preciso hago esto:
1. Inicio un nuevo proyecto,
2. Coloco los siguientes componentes: IBDatabase1, IBTransaction1, IBTable1, DataSource1, DBGrid1, Button1.
3. Asocio lo siguiente:
* IBDatabase1.DatabaseName = 'C:\....\EMPLOYEE.FDB'
* IBDatabase1.Conected = True
Ingreso usuario y contraseña, listo... Firebird Guardian detecta un attachment!Con lo cual se logró la conexión.
* IBTable1.Database = IBDataBase1
* IBTable1.Transaction = IBTransaction1
* IBTable1.MasterSource = DataSource1
* IBTable1.TableName = EMPLOYEE
* DBGrid1.DataSource = DataSource1
3. Pongo en Active = True a todos,
4. Al botón le ingreso el siguiente código:
Código Delphi [-]
IBTable.Open;
5.¡No muestra nada! ¡No pasa absolutamente nada!
¿Que puedo estar haciendo mal?
Repito, por si las dudas, Hago uso de Delphi 6 y Firebird 1.5. Lo que se me ocurre es que a lo mejor los componentes InterBase no funcionan bien con esta versión de Firebird.
Por el momento estoy haciendo pruebas, pero dentro de poco ya debo tenerlo más dominado...
Desde ya, muchas gracias.

Casimiro Notevi 07-09-2006 15:06:59

Pues a mí sí que me funciona perfecto...:)

Y por supuesto que son compatibles delphi 6 y firebird 1.5, faltaría más, jejeje

A ver, a ver... qué estás haciendo... ah, ya veo:

Código:

IBTable1.MasterSource = DataSource1
Eso te sobra.

Delphius 08-09-2006 00:59:55

Gracias!
 
OK, probaré lo que me comentas Casimiro Notevi, gracias por ayudarme.

Ahora, explicame,si tienes un tiempito,... ¿porque el Datasource no debe estar unido al IBTable? ... o sea... no veo como se enlaza el Grid con el IBTable... el nexo que veía era con el DataSource... pero como dices que sobra...
IBTable1.MasterSource = DataSource1

....se me rompen los esquemas.

Saludos,

Casimiro Notevi 08-09-2006 14:06:33

Cita:

Empezado por Delphius
OK, probaré lo que me comentas Casimiro Notevi, gracias por ayudarme.
Ahora, explicame,si tienes un tiempito,... ¿porque el Datasource no debe estar unido al IBTable? ... o sea... no veo como se enlaza el Grid con el IBTable... el nexo que veía era con el DataSource... pero como dices que sobra...
IBTable1.MasterSource = DataSource1
....se me rompen los esquemas.
Saludos,

La propiedad MasterSource del IBTable es para hacer un maestro/detalle.

Los pasos a seguir son estos:

En el IBDataBase asignamos la base de datos, la transaction y sus valores:
Código:

ibdatabase1.databasename=basedatos.fdb
ibdatabase1.defaulttransaction=ibtransaction1
dobleclick y pones user,password, etc.

En el IBTransaction le asociamos la base de datos y seleccionamos el nivel de 'isolation'
Código:

ibtransaction1.defaultdatabase=ibdatabase1
dobleclick y elijes readcommited (por ejemplo)

En el DataSource sólo hemos indicarle la tabla
Código:

datasource1.dataset=ibtable1
A la tabla le decimos su base de datos y la tabla que queremos presentar
Código:

ibtable1.database=ibdatabase1
ibtable1.tablename=tbArticulos (por ejemplo)

Al DBGrid le asociamos el DataSource
Código:

dbgrid1.datasource=datasource1
Y para terminar abrimos y activamos todo
Código:

ibdatabase1.connected=true
ibtransaction1.active=true
ibtable1.active=true (es lo mismo que ibtable1.open por código)

... et voilà ...

y colorín, colorado, este bonito cuento se ha acabado :)

Casimiro Notevi 08-09-2006 14:09:56

Cita:

Empezado por Delphius
[...]Ahora, explicame,si tienes un tiempito,... ¿porque el Datasource no debe estar unido al IBTable? ... o sea... no veo como se enlaza el Grid con el IBTable... el nexo que veía era con el DataSource... pero como dices que sobra...
IBTable1.MasterSource = DataSource1[...]

Como ves, al grid se le asigna el datasource, y es el datasource el que tiene asignado la tabla, el query, el dataset que sea. El datasource hace de puente de unión entre ambos.
Lo que sobra es el "mastersource" porque esa propiedad es para un maestro/detalle

Delphius 08-09-2006 20:53:07

Gracias!
 
No habìa visto que en el DataSource estaba las asociaciòn DataSet!:p
Gracias,... ahora si funciona!... Mejor explicación, al estilo cuento, no hay. Lo entendí bien...

Gracias por tomarte tu tiempo, Casimiro.


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

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