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

 
 
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
 



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 23:57:35.


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