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 capturar Excepcione EIBClientError (https://www.clubdelphi.com/foros/showthread.php?t=29982)

dmagui 06-02-2006 16:22:01

Como capturar Excepcione EIBClientError
 
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

Código Delphi [-]
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)

Código Delphi [-]
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.


La franja horaria es GMT +2. Ahora son las 22:37:30.

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