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 30-01-2004
TJose TJose is offline
Miembro
 
Registrado: may 2003
Posts: 162
Poder: 21
TJose Va por buen camino
Question UIB Components

Hola a todos
Hace poco instale los UIB Components y todo funcion Ok. La duda que tengo es como se comportan estos componentes en una aplicacion real.
Hasta ahora siempre use los IBX, pero quiero despegarme de estos.

Saludos

TJOSE
Responder Con Cita
  #2  
Antiguo 30-01-2004
Avatar de hecjona
hecjona hecjona is offline
Miembro
 
Registrado: may 2003
Ubicación: Guadalajara, Jal. Mexico
Posts: 84
Poder: 21
hecjona Va por buen camino
Acerca de los UIB Componentes no los he instalado, sin embargo instale el DRIVER para DBEXPRESS y te puedo decir que no me convencio a primera vista, ya Ejecutas un EXECSQL y no te lo refleja en la base hasta que cierras el SQLDATASET, y lo intente implementando transacciones y no obtuve un resultado favorable.
__________________
Saludos desde la tierra del tequila y las mujeres hermosas
Responder Con Cita
  #3  
Antiguo 30-01-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hola.

No acabo de entender el problema que comentas. No se puede ejecutar un ExecSQL sobre un Dataset. Si tienes otro Dataset, no verás los resultados ocasionados por el ExecSQL hasta que no lo vuelvas a cargar. Esto es normal en todos los datasets en caché.

Si no me equivoco no has encontrado un problema del driver dbExpress de UIB, sinó que no te has adaptado a la peculiar filosofia de trabajo de los componentes dbExpress.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #4  
Antiguo 30-01-2004
Avatar de hecjona
hecjona hecjona is offline
Miembro
 
Registrado: may 2003
Ubicación: Guadalajara, Jal. Mexico
Posts: 84
Poder: 21
hecjona Va por buen camino
guillotmarc
usando el driver que trae pordefecto dbexpress para interbase tu haces un EXECSQL y lo ves reflejado en la base de datos, si tu cambias el driver por el de UIB no lo hace.
__________________
Saludos desde la tierra del tequila y las mujeres hermosas
Responder Con Cita
  #5  
Antiguo 01-02-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hola.

Ya me parecía que no entendí bien el problema.

¿ A que te refieres con cerrar el SQLDataset ?, no puede estar abierto para poder hacer un ExecSQL, ¿ Te refieres a que hay que cerrar el SQLConnection ?.

Tiene todo el aspecto de ser simplemente el nivel de aíslamiento de transacciones al que se configura por defecto la conexión (y no un bug). El driver de Borland lo configura a ReadCommited, en cambio el driver de UIB lo debe configurar a un nivel superior.

Revisa ese parámetro. En el driver de Borland se llama Interbase TransIsolation.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #6  
Antiguo 02-02-2004
Gydba Gydba is offline
Miembro
 
Registrado: ene 2004
Ubicación: Argentina
Posts: 673
Poder: 21
Gydba Va por buen camino
Ayer mismo estube probando los UIB, a primera vista tiene buena performance en las querys. También probé los drivers para DBExpress y a simple vista presentaron un buen funcionamiento, claro que lleva su configuración.

Algo también interesante es la forma de creación de consultas, utiliza un control (creo que es synedit) al mejor estilo de IBExpert, realmente simplifica bastante la tarea.

El principal problema que encontré es que los dataset que ofrece son unicamente de lectura no si si es porque no pude configurarlos bien o por la versión que utilizo.
__________________
Suerte
.: Gydba :.
Responder Con Cita
  #7  
Antiguo 02-02-2004
Avatar de hecjona
hecjona hecjona is offline
Miembro
 
Registrado: may 2003
Ubicación: Guadalajara, Jal. Mexico
Posts: 84
Poder: 21
hecjona Va por buen camino
Gracias guillotmarc por tu interes ,
Cita:
Empezado por guillotmarc
¿ A que te refieres con cerrar el SQLDataset ?, no puede estar abierto para poder hacer un ExecSQL, ¿ Te refieres a que hay que cerrar el SQLConnection ?.
Si es correcto fue un error mio al redactar, Cerrar el SQLconnection.
Cita:
Empezado por guillotmarc
Tiene todo el aspecto de ser simplemente el nivel de aíslamiento de transacciones al que se configura por defecto la conexión (y no un bug). El driver de Borland lo configura a ReadCommited., en cambio el driver de UIB lo debe configurar a un nivel superior.
Por defecto el UIB tambien lo configura con ReadCommited.

Hice un sencillo ejemplo para que vean de lo que estoy hablando, creo que ya viendo el comportamiento con un ejemplo sera mas facil entender lo que trato de decir, y si alguien da alguna explicacion o otro punto de vista sera bien recibida.

Para correr los archivos deben estar instalado los dos drivers de DBExpress - el de UIB y el Default para Interbase-, ademas uso el Employee.gdb que viene con delphi asi que pueden bajarlo o usar el que tengan, solo tiene que estar en el mismo directorio de esta aplicacion.
Entre los archivos viene un Readme.txt que explica como usarlos para ver la situacion que comento.
Binarios
Source code
Employee.gdb
__________________
Saludos desde la tierra del tequila y las mujeres hermosas
Responder Con Cita
  #8  
Antiguo 02-02-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hola.

Tienes razón, no se cual puede ser exactamente el problema.

Si cambias el código del update para la utilización explícita de una transacción definida manualmente al nivel de ReadCommited, funciona bien :

Código:
procedure TForm1.btUIBClick(Sender: TObject);
var TD: TTransactionDesc;
begin
  qUIB.CommandText := edSQLCommand.Text;
  TD.TransactionID := 1;
  TD.IsolationLevel := xilREADCOMMITTED;
  dbUIB.StartTransaction(TD);
  qUIB.ExecSQL;
  dbUIB.Commit(TD);
end;
Aunque tiene que haber una forma de no tener que realizar esto. Imagino que lo mejor seria contactar por email con los creadores.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #9  
Antiguo 09-02-2004
TJose TJose is offline
Miembro
 
Registrado: may 2003
Posts: 162
Poder: 21
TJose Va por buen camino
Hola, gracias por responder. Al final decidi crear la aplicacion utilizando DBX en lugar de componentes de acceso nativo a FB/IB.
Ya que el hilo se desvió hacia transacciones en DBX y si el moderador considera que podemos seguir en este hilo o bien se podria abrir otro.
Alguien sabe como realizar una transaccion distribuida?
No tuve la necesidad de realizar esto, pero probando con los IBX lo podia lograr, y quisiera saber si es posible con los DBX. (Con los IBX, a un objeto transaccion le agregaba objetos base de datos, y ejecutaba sentencias SQL contra diferentes las bases dentro de una misma transaccion).

Saludos a todos
TJOSE
Responder Con Cita
  #10  
Antiguo 09-02-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hasta donde yo se, no se puede hacer una transacción que implique dos objetos SQLConnection. Este es el problema de usar controles genéricos (dbExpress), que no se pueden usar algunas de las características avanzadas de cada base de datos (eventos del servidor, ...).

Respecto al problema comentado por hecjona, referente al Isolation Level de la transacción, informé al autor de los componentes sobre dicho problema. El autor ya ha actualizado el driver, pero el problema persiste. Vista la celeridad con la que ha actualizado el driver, no creo que tarde mucho en solventarlo.

http://www.progdigy.com/boards/index...ST&f=4&t=1464&

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #11  
Antiguo 09-02-2004
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 23
kinobi Va por buen camino
Hola,

Cita:
Empezado por TJose
Ya que el hilo se desvió hacia transacciones en DBX y si el moderador considera que podemos seguir en este hilo o bien se podria abrir otro.
si se van a tratar temas nuevos, mi opinión es que es mejor abrir otro hilo.

Saludos.

Nota: no moví el hilo a "Conexión con bases de datos" (ya que allí se tratan, en general, los temas de componentes de acceso) debido a que tocaba temas demasiado específicos de InterBase. Si abres un hilo nuevo sobre asuntos genéricos de DBX mejor que sea en aquel foro.
Responder Con Cita
  #12  
Antiguo 10-02-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hola Gydba.

Si te refieres a los datasets obtenidos mediante dbExpress, efectivamente siempre són de solo lectura. Además de no permitir la navegación, són de solo avance, es decir se puede ir al siguiente registro pero nunca al anterior. Por lo que no se puede conectar un dataset obtenido mediante dbExpress a una grid.

Esta es la forma como se ha diseñado esta tecnología. Para poder modificar un dataset, u obtener un cursor navegable, tienes que enlazar tu SQLQuery a un ClientDataset mediante un DatasetProvider. El ClientDataset si que permite la modificación y navegación por el dataset.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #13  
Antiguo 10-02-2004
Gydba Gydba is offline
Miembro
 
Registrado: ene 2004
Ubicación: Argentina
Posts: 673
Poder: 21
Gydba Va por buen camino
Gracias guillotmarc, siempre muy completo lo tuyo.

Pero yo me refería a los UIB que traen un componente Dataset propio, pero aparentemente es de solo lectura:
Cita:
fecha 2003-09-21
UIB v 1.1 RC3
New TJvUIBDataSet component, at this time the component is "read only".
info en http://www.progdigy.com/UIB/

Por otra parte conozco dbExpress y es una buena alternativa, pero por el momento prefiero componentes nativos en Firebird.

Gracias de todas formas
__________________
Suerte
.: Gydba :.
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


La franja horaria es GMT +2. Ahora son las 09:04:02.


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
Copyright 1996-2007 Club Delphi