PDA

Ver la Versión Completa : Como capturar Excepcione EIBClientError


dmagui
06-02-2006, 16:22:01
Buenos Dias:

Tengo un inconveniente en los DBGrid, estoy utilizando uno para que me muestre la tabla de monedas que tengo en mi BD, para esto utilizo un IBDataSet, del cual estoy utilizando el Select y el update.

Especialmente hago que me liste las monedas para poderlas modificar, bueno el inconveniente es que al desplazarme de un registro a otro utilizo las flechas, cuando me desplazo hacia abajo y llego al ultimo registro y oprimo de nuevo la flecha hacia abajo me sale una Excepcion de:

EIBClientError.
Cannot insert into dataset (No insert query)

Lo que deseo es capturar esa excepcion o que si llega al ultimo registro no se pueda desplzar mas, para que no me genere ese error.

Agradeceria muchisimo que me ayudaran.:confused:

Thales
06-02-2006, 17:36:14
Podrías definir un manejador para el evento BeforeInsert de la consulta asociada al grid


procedure DataModule.QueryBeforeInsert(DataSet: TDataSet);
begin
Abort
end;


Esto impide por completo las inserciones en esa consulta

Un saludo

dmagui
07-02-2006, 19:47:09
Ante todo gracias por haberme respondido.

Mira no me funciono, sigue saliendo esa excepcion, cuando estoy posionada en el ultimo registro de la tabla, eso ocurre con la flecha hacia abajo.
que puedo hacer?

cuburu
07-02-2006, 21:03:26
Mira, como entiendo, estas utilizando un DBGrid para este truco, tienes tres maneras de hacerlo, una como ya lo comento es buscar en los eventos del DBGrid, no del query o lo que uses y colocar la instrucción Abort.

La segunda es sin tener que colocar ninguna clase de código, solo te vas en las propiedades del DBGrid, en opciones y colocas la propiedad edit en FALSE.

La tercera es la más sencilla de todas, lo que tienes que hacer es, como el DBGrid esta conectado a un data set supongo, ir al data set y colocar sy propiedad EDIT en FALSE.

Espero que te halla servido de algo esto, suerte.

dmagui
07-02-2006, 23:02:48
no me funciono, porque si coloco la opcion edit en false, no me dejaria modificar las monedas que deseo,

lo que quiero es que me deje modificar las ya existentes, mas no me deje hacer un append en la grilla, ya que no debe dejar insertar.

y por no tener la instruccion sql del insert es por eso que me genera la excepcion que no la he podido capturar, originada cuando lo hago con la flecha abajo, donde especificamente me sale el error en el (end;).

ojala me halla hecho entender y me puedan ayudar.

Gracias ante todo por las respuestas.

cuburu
07-02-2006, 23:15:06
Entonces lo que se me ocurre de golpe es que utilices uno o unos DBEDITs que apunten a o los valores que estas seleccionando y que cuando desees modificar el valor lo hagas en el DBEDit en lugar de hacerlo directamente en el DBGrid.

Thales
07-02-2006, 23:21:27
Aparte de hacer lo que te he indicado en el post anterior, pon en la propiedad InsertSQL del IBDataSet cualquier cosa (la letra que más rabia te dé bastaría). De esta manera no saltará el error.

Un saludo

Fernando
08-02-2006, 07:52:29
De Darío Álvarez Aranda en trucomanía (www.q3.nu)


with (Sender as TDbGrid) do

if (Key = VK_DOWN) or ((Key = VK_TAB) and (SelectedIndex = Columns.Count-1)) then
begin

DataSource.DataSet.DisableControls;

DataSource.DataSet.Next;

if DataSource.DataSet.EOF then
Key := 0
else
DataSource.DataSet.Prior;

DataSource.DataSet.EnableControls;

end;


Saludos.