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)
-   -   Problemas con vistas en delphi (https://www.clubdelphi.com/foros/showthread.php?t=53906)

silverscr 04-03-2008 17:37:35

Problemas con vistas en delphi
 
Hola buenas, soy nuevo por aqui. Actualmente estoy empezando a trabajar con firebird pero me he encontrado un pequeño problema.

Como he leido por aqui podemos hacer q una vista sera de lectura escritura tan solo ecribiendo los triggers correspondientes (before delete, update, insert).

Asi pues yo creo una vista usando ibexpert pero q en su interior hace un join. Le creo los triggers correspondientes y cual es mi sorpresa q en delphi cuando abro la vista como si fuera una tabla no me deja modificarla a pesar de tener los triggers.

Creo q el problema viene por hacer un join en la vista (porque he comprobado vistas siemples y funciona)

Asi pues mi pregunta es, ¿Como puedo solucionarlo? ¿Hay alguna forma de usar vistas con joins como tablas en delphi??

gracias.

Kipow 04-03-2008 18:06:15

Vistas modificables mmmm no me suena, lo puedes hacer pero desde delphi. que componentes usas para conectarte?

silverscr 04-03-2008 18:15:07

Las vistas las he creado usando IBExpert y Firebird 2.0, y mi intencion es usarlas como si fueran unas tablas normales desde delphi.

Luego en delphi uso los componenetes IBX.

Kipow 04-03-2008 18:21:55

ok,

entonces la forma correcta es definir dentro de tu IBDataset en la propiedad SelectSQL el JOIN que utilizas en la vista, y ha de ahi puedes tratar esa info como una sola tabla.

Saludos

silverscr 04-03-2008 18:46:26

Ok, gracias probare eso a ver si funciona.

rastafarey 05-03-2008 17:36:49

resp
 
Lo que que dices esta perfecto.

No veo cual es el problema.

Tendras que decirme se usas un tquery o una ttable o lo que usas.

Por ami jamas me ha pasado eso.

silverscr 06-03-2008 17:59:58

Buenas, lo del IBDataSet parece q soluciona en parte el problema pero ahora me encuentro con otro problema y es q en ese componente cuando defino en la propieda deleteSQL si pongo mas de una sentecia delete from .... me da error cunado activo el IBDataSet.

¿Que puedo hacer?

¿esta limitado a una sola instruccion delete?

Kipow 06-03-2008 18:31:20

Eso lo podes hacer directamente en Firebird, ya se con una Contraint o con un trigger.

silverscr 06-03-2008 19:16:09

Gracias Kipow pero creo q eso no lo puedo hacer.

Quizas con un stored procedure, pero como lo invoco desde deleteSQL??

o hay alguna forma de poner varias sentecias como si fueran una sola, algo asi como los begin ... end.

Gracias por la ayuda.

rastafarey 07-03-2008 17:57:59

resp
 
un componente tiene soporta una sola intrucion sql paraa delete un apara insert y otra para update no puedes poner mas.

pero en disparador de borrado de la vista si quieres puedes poner 1000 instrucciones. ahora que las tengas bien escritas es optra cosa.

Pôr que no pones el codigo de las vistas y de los disparadores actualizable de las vista.

silverscr 08-03-2008 11:26:45

ahora problema con los memos
 
Primero ante todo agredecer vuestros consejos por que me han aclarado mucho las cosas.

Pero ahora tengo otro atolladero y no se bien como resolverlo.

Tengo creada una vista q toma datos de dos tablas distintas y ademas le he definido tres triggers before delete.

Porr otro lado en delphi utilizo el ibdataset para acceder a dicha vista poniendo en la propieda selectSQL : "select * from vista" y definiendo el resto de propiedades de forma adecuada.

Mi idea con esto es q cuando desde delphi haga un insert en el ibdataset salten los triggers y se almacenen los datos en las tablas correspondientes.

hasta aqui todo va bien pero cuando pon un valor distinto de null a un campo memo (q esta definido asi como blob y subtipo 1) al hacer post() me aparece un error EIBInteBaseError con el mensaje "Internal Error".

Alguien sabe por que pasa esto?? hay alguna forma de resolverlo??

PD: lo mas curioso es q aun asi llega a escribir los datos en la base de datos, esto es acojonante.:eek:

rastafarey 11-03-2008 17:04:24

resp
 
la misma respuesta que te di anteriormente es la solucion.
haslo en los disparodores de las vista.

silverscr 11-03-2008 18:40:32

Tenias razon Rastafarey, el error que me daba era por que en la propiedad refreshSQL hacia una comparacion de dos blobs y por eso saltaba el error :p.

Te agradezco a ti y a Kipow la ayuda prestada, muchas gracias. Nos vemos :D


La franja horaria es GMT +2. Ahora son las 09:52:05.

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