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
  #1  
Antiguo 28-06-2005
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 22
sitrico Va por buen camino
Question Uso del SQLUpdate

Estoy usando por primera vez un componente tUpdateSQL pero cuando trato de hacer cualquier actualización sobre la consulta me genera una excepción: "Table is Read Only".

Como hago para que las acciones de incluir, modificar y borrar se ejecuten?

Estas son las sentencias SQL en FormCreate:

a = tQuery y uSql = TUpdateSQL

Código Delphi [-]
 
With a do
   Begin
   SQL.Add('Select IdComp XXIdComp, IdAsiento XXIdAsiento, CodCta, Ref,
             Concepto, (Debe+Haber) Monto From '+NombreArch(NArchAsi));
   SQL.Add('Where IdComp = :IdComp');
   SQL.Add('Order By IdAsiento');
   ParamByName('IdComp').AsInteger := StrToInt(ValorClave);
   // Los Nombres de campo con XX delante son para ocultar 
   // las columnas en el DBGrid
   Open;
   End;
With uSql do
   Begin
   With InsertSQL do
      Begin
      Add('Insert Into '+NombreArch(NArchAsi));
      Add('(IdComp, CodCta, Ref, Concepto, Debe, Haber) Values');
      Add('(:IdComp, :CodCta, :Ref, :Concepto, ebe, :Haber)');
      End;
   With ModifySQL do
      Begin
      Add('Update '+NombreArch(NArchAsi)+' Set');
      Add('CodCta = :CodCta, Ref= :Ref, Concepto = :Concepto,');
      Add('Debe = ebe, Haber = :Haber');
      Add('Where IdComp = :IdComp And IdAsiento = :IdAsiento');
      End;
   With DeleteSQL do
      Begin
      Add('Delete From '+NombreArch(NArchAsi));
      Add('Where IdComp = :IdComp And IdAsiento = :IdAsiento');
      End;
   End;
Y para su funcionamiento defino en a.onUpdateRecord:
Código Delphi [-]
procedure TfActComprobantes.aUpdateRecord(DataSet: TDataSet;
  UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
begin
//  inherited;
Case UpdateKind of
   ukInsert : Begin
              a.ParamByName('IdComp').AsInteger := StrToInt(ValorClave);
              // Aqui deberán ir las asignaciones de los parámetros
              End;
   ukModify : Begin
              // Aqui deberán ir las asignaciones de los parámetros
              End;
   ukDelete : Begin // para probar sólo funciona borrar
              a.ParamByName('IdComp').AsInteger := StrToInt(ValorClave);
              a.ParamByName('IdAsiento').AsInteger := 
                              a.FieldByName('XXIdAsiento').AsInteger;
              End;
   End;
   Try
      uSql.Apply(UpdateKind);
      UpdateAction := uaApplied;
   Except
      UpdateAction := uaFail;
      End;
end;
y para Incluir Modificar o Borrar Uso algo así:

Código Delphi [-]
procedure TfActComprobantes.LaToolBar1aBorrarExecute(Sender: TObject);
begin
If MessageBoxStr('¿ Borrar el Asiento ?','Atención',MB_YesNo) = IdYes Then
   a.Delete;
end;
Al llegar a la línea a.delete se gerena el error
__________________
Sitrico
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


La franja horaria es GMT +2. Ahora son las 07:05:17.


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