Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 12-11-2009
alquimista_gdl alquimista_gdl is offline
Miembro
 
Registrado: ago 2008
Ubicación: Guadalajara, México
Posts: 78
Poder: 16
alquimista_gdl Va por buen camino
Hola Al,

Gracias por tu respuesta.

Se trata de un componente grid de DevExpress, de las últimas versiones que muestra los datos de un query. Anteriormente el query base era un simple "select * from z_usuario" y todo bien. Ahora es:

Cita:
select
z_usuario.usuario_id,
z_usuario.zus_usuario,
z_usuario.zus_nombre,
zus_contrasena,
zus_telefono,
zus_email,
zus_localidad,
zus_notas,
zgr_nombre
from z_usuario_grupo_x_v right join z_usuario
on(z_usuario.usuario_id = z_usuario_grupo_x_v.usuario_id)
order by zus_nombre
En el SQLDataSet y ClientDataSet he especificado el campo llave (usuario_id) y los campos que debe actualizar (los que tienen prefijo "zus"). Se trata de una relación N_N entre Usuarios y sus Grupos, y la consulta raíz se hace sobre la tabla de intersección "z_usuario_grupo_x" sobre su vista "z_usuario_grupo_x_v".

Por otro lado, y para indicar a qué tabla se hacen los cambios, en el evento OnGetTableName del Provider, tengo:

Cita:
procedure Tz_DataModule_Seguridad.DataSetProvider_UsuarioGetTableName(
Sender: TObject; DataSet: TDataSet; var TableName: WideString);
begin
if DataSet.Name = 'SQLDataSet_Usuario' then
TableName:= 'Z_USUARIO';

end;
Como me cansé un poco de el DataSet anidado (aunque estaba funcionando perfectamente antes de este cambio), opté por separar los dataset Meastro y Detalle, cada uno con su Provider; los relacionoa pata" vía código, y ahora al oprimir el botón de "Cambiar", sale el error "Key violation"

El error lo está marcando en este contexto:

Cita:
procedure TLista_bd.CambiosExecute(Sender: TObject);
begin
DataSource.DataSet.Refresh; <--- Aquí marca el error
DataSource.DataSet.Edit;
forma.MuestraForma;
DataSource.DataSet.Refresh;
self.Action_ControlBotonesExecute(self);

end;
Este es el método activado para cambiar el registro elegido en el Grid, cuando el usuario oprime el botón "cambiar", en donde DataSource es:

DataSource:= z_DataModule_Seguridad.DataSource_Usuario;


Alguna idea?
Responder Con Cita
 



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
Clientes: Record Not Found en Evento ClientesFilterRecord behert666 MS SQL Server 4 02-06-2008 19:49:59
applyupdates (record not found or changed by another user) Stell Conexión con bases de datos 4 13-05-2008 13:36:20
Record not Found juliobuitrago Firebird e Interbase 0 25-12-2007 22:00:32
Record not found or changed by another user felixgo Conexión con bases de datos 1 30-09-2005 13:07:40
Record not found or changed by another user. Luis Conexión con bases de datos 2 12-08-2005 19:50:45


La franja horaria es GMT +2. Ahora son las 03:22:00.


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