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 04-03-2008
silverscr silverscr is offline
Miembro
 
Registrado: feb 2008
Posts: 14
Poder: 0
silverscr Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 04-03-2008
Avatar de Kipow
Kipow Kipow is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guatemala
Posts: 329
Poder: 19
Kipow Va por buen camino
Vistas modificables mmmm no me suena, lo puedes hacer pero desde delphi. que componentes usas para conectarte?
Responder Con Cita
  #3  
Antiguo 04-03-2008
silverscr silverscr is offline
Miembro
 
Registrado: feb 2008
Posts: 14
Poder: 0
silverscr Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 04-03-2008
Avatar de Kipow
Kipow Kipow is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guatemala
Posts: 329
Poder: 19
Kipow Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 04-03-2008
silverscr silverscr is offline
Miembro
 
Registrado: feb 2008
Posts: 14
Poder: 0
silverscr Va por buen camino
Ok, gracias probare eso a ver si funciona.
Responder Con Cita
  #6  
Antiguo 05-03-2008
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
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.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #7  
Antiguo 06-03-2008
silverscr silverscr is offline
Miembro
 
Registrado: feb 2008
Posts: 14
Poder: 0
silverscr Va por buen camino
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?
Responder Con Cita
  #8  
Antiguo 06-03-2008
Avatar de Kipow
Kipow Kipow is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guatemala
Posts: 329
Poder: 19
Kipow Va por buen camino
Eso lo podes hacer directamente en Firebird, ya se con una Contraint o con un trigger.
Responder Con Cita
  #9  
Antiguo 06-03-2008
silverscr silverscr is offline
Miembro
 
Registrado: feb 2008
Posts: 14
Poder: 0
silverscr Va por buen camino
Thumbs up

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.
Responder Con Cita
  #10  
Antiguo 07-03-2008
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
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.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #11  
Antiguo 08-03-2008
silverscr silverscr is offline
Miembro
 
Registrado: feb 2008
Posts: 14
Poder: 0
silverscr Va por buen camino
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.
Responder Con Cita
  #12  
Antiguo 11-03-2008
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
resp

la misma respuesta que te di anteriormente es la solucion.
haslo en los disparodores de las vista.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #13  
Antiguo 11-03-2008
silverscr silverscr is offline
Miembro
 
Registrado: feb 2008
Posts: 14
Poder: 0
silverscr Va por buen camino
Cool

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 .

Te agradezco a ti y a Kipow la ayuda prestada, muchas gracias. Nos vemos
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Vistas kejos MS SQL Server 1 25-08-2006 22:12:21
Vistas de Postgre desde Delphi macrespi SQL 0 20-04-2006 18:22:12
ventaja de las vistas .. ingel SQL 2 29-12-2005 18:39:34
¿Como se utilizan las Vistas en Delphi? (VIH)Lestat Conexión con bases de datos 9 13-07-2005 05:26:43
Vistas Edu Rod SQL 10 14-04-2004 17:55:51


La franja horaria es GMT +2. Ahora son las 14:06:51.


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