Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-01-2011
hondaalberto hondaalberto is offline
Miembro
 
Registrado: sep 2010
Ubicación: República Dominicana
Posts: 67
Poder: 14
hondaalberto Va por buen camino
Error al Modificar Datos en un DB Grid

Buenas tardes Amigos, ojala y alguno de ustedes me pueda dar una mano con la siguiente situacion:
estoy desarrollando una Pequeña aplicación Contable utilizando base de datos en Acces, y todo va bien hasta el punto que escribo en el DBGrid un ID de Cuenta y en el DBGRId me aparece el Numero de Cuenta y la Descripcion, pero mi problema esta si luego quiero cambiar alguna cuenta que ya esta digitada en el dbgrid me devuelve el siguiente error:
Cita:
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EOleException with message 'Key column information is insufficient or incorrect. Too many rows were affected by update'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
Tengo una tabla llamada Plan de Cuentas la Cual tiene los Siguientes Campos:
1)Id
2)Cuenta_No
3)Descripcion
4)Tipo Clasificacion
5)Grupo
6)Dimension
7) Bloqueado
8) Fecha_Modificacion

Tambien tengo otra tabla llamada TDetalleDiariosTemp que es la que utilizo para poner los datos que escribo en el DBGRid con los siguientes campos:
1)Id_Cuenta
2)Fecha
3)Descripcion
4)Cuenta_no
5)Seccion
6)Concepto
7)Ed_No
8)Debito
9)Credito

y Codigo que tengo es este:
Código Delphi [-]
var
  FEntradasdeDiario: TFEntradasdeDiario;
implementation
  Uses UMenuPrincipal,UMantPlanCuentas, UBuscarCuenta, Funciones;
{$R *.dfm}
procedure TFEntradasdeDiario.FormActivate(Sender: TObject);
begin
TDetalleDiariosTemp.Active:=True;
QCuentas.Active:= False;
end;

  procedure TFEntradasdeDiario.CerrarClick(Sender: TObject);
begin
  If Application.MessageBox('Esto le hara salir del formulario' +#13+'Seguro que desea salir?',
 'Salida del Formulario Para Entradas de Diario', MB_IconQuestion+MB_OkCancel)= IDOK then Close;
end;
procedure TFEntradasdeDiario.BCalculadoraClick(Sender: TObject);
begin
  WinExec('Calc.Exe',0);
end;

procedure TFEntradasdeDiario.DBGDatosDblClick(Sender: TObject);
begin
vidCuenta := 0;
QCuentas.DisableControls;
QCuentas.Active:=True;;
If (QCuentas.IsEmpty) Then
Begin
Showmessage('No hay ninguna Cuenta Registrado');
QCuentas.Active:= False;
exit;
End;
FBuscarCuenta:= TFBuscarCuenta.Create(Self);
FBuscarCuenta.showmodal;
If (VidCuenta>0) Then
Begin
If Not QCuentas.Locate('Id',VidCuenta,[]) Then
Begin
ShowMessage('La Cuenta Indicada no existe!');
QCuentas.Active:=False;
Exit;
End
Else
Begin
With TDetalleDiariosTemp Do
Begin
TDetalleDiariosTemp.Edit;
TDetalleDiariosTempCuenta_No.Value := QCuentas.FieldByName('Cuenta_No').AsString;
TDetalleDiariosTempDescripcion.Value := QCuentas.FieldByName('Descripcion').AsString;
End;
End;
End;
tstringgrid(DBGDatos).Refresh;
end;
procedure TFEntradasdeDiario.DBGDatosColExit(Sender: TObject);
begin
  If Not QCuentas.Active Then
QCuentas.Active := True;
If (ActiveControl Is TDBGrid) Then //Si el Grid tiene el foco me
With TDBGrid(ActiveControl) Do // preparo para trabajar en el
Begin
DBGDatos.DataSource.DataSet.Edit; //POne la tabla en modo edicion
If (SelectedIndex =0) Then //Para trabajar con el IdCuenta
Begin // Columna 1
vidCuenta := DBGDatos.DataSource.DataSet.FieldByName('Id').Asinteger;
//Toma el valor digitado en la columna
If (vidCuenta=0) Then
begin //a buscar
DBGDatosDblClick(Sender);
End;
// Si el idgrupo escrito no existe en la tabla
// Envia un mensaje y deja el cursor en la columna actual
If Not QCuentas.Locate('Id',vidCuenta,[]) Then
Begin
Showmessage('La Cuenta XXX '+InttoStr(vidCuenta)+' No Existe!');
DBGDatos.SelectedField.AsString:= ''; //Limpia la columna
End
Else
with tstringgrid(DBGDatos) do //Si encontro el dato
begin
DBGDatos.DataSource.DataSet.Edit;
TDetalleDiariosTempCuenta_No.Value := QCuentas.FieldByName('Cuenta_No').AsString;
TDetalleDiariosTempDescripcion.Value := QCuentas.FieldByName('Descripcion').AsString;
end;
End; // del SelectIndex = 1
End; // Del With
end;

end.

Gracias de Antemano y Feliz Año Nuevo para todos.

Última edición por rgstuamigo fecha: 07-01-2011 a las 22:17:42.
Responder Con Cita
  #2  
Antiguo 07-01-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
El error sucede cuando se quiere modificar algun dato de una consulta.
Si la consulta solo llama a ciertos campos, NO TODOS, entonces envia el error.
No se puede modificar un dato de esa forma, ose llama a toda la tabla o se hace un UpDate.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 09-01-2011
hondaalberto hondaalberto is offline
Miembro
 
Registrado: sep 2010
Ubicación: República Dominicana
Posts: 67
Poder: 14
hondaalberto Va por buen camino
Buenas tardes caral, pero en que parte debo hacer el Update, ya que el error me lo da cuando intento cambiar de una fila a otra...
Responder Con Cita
  #4  
Antiguo 09-01-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Project Project1.exe raised exception class EOleException with message 'Key column information is insufficient or incorrect. Too many rows were affected by update'. Process stopped. Use Step or Run to continue.
¿Has revisado el update?
Responder Con Cita
  #5  
Antiguo 11-01-2011
hondaalberto hondaalberto is offline
Miembro
 
Registrado: sep 2010
Ubicación: República Dominicana
Posts: 67
Poder: 14
hondaalberto Va por buen camino
Muchas Gracias amigos encontre el problema y era que a la Tabla TDetalleDiariosTemp le faltaba el indice...
Muchas Gracias a Todos por la ayuda.
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
Modificar datos de mi bese de datos desde un dbgrid? juliana_r Conexión con bases de datos 6 09-06-2010 01:14:22
Error al modificar datos en maestro detalle con dbexpress alopete Conexión con bases de datos 5 01-10-2007 12:00:32
Modificar datos en un Grid (table o query) hugohiram SQL 6 07-06-2007 18:59:20
Modificar datos de una grid gescoto99 Conexión con bases de datos 7 21-05-2004 03:02:26
Modificar Datos Grid de Consulta DANFIR Conexión con bases de datos 6 14-11-2003 16:52:57


La franja horaria es GMT +2. Ahora son las 18:38:55.


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