Ver Mensaje Individual
  #1  
Antiguo 28-06-2012
Avatar de Jere_84
Jere_84 Jere_84 is offline
Miembro
NULL
 
Registrado: sep 2011
Ubicación: Córdoba, Argentina
Posts: 214
Reputación: 0
Jere_84 cantidad desconocida en este momento
Unhappy Problema de edición en SQLQuery

Hola, estoy haciendo una prueba en delphi 2010 datasnap utilizando los componentes de la paleta DbExpress. El ejemplo consta de una carga de facturación y al momento de grabar se descuenta el stock en la tabla de artículos. Esta operación la estoy haciendo en la aplicación servidor en el ServerMethod correspondiente, en el evento AfterUpdateRecord del componente DataSetProvider.

Este es mi codigo:

Código Delphi [-]
var
  CodigoArtic: integer;
  CantidadArtic: double;
  oTempArticulos: TSQLQuery;
//..
  case UpdateKind of
    ukInsert: Begin  //si es una inserción
         if SourceDS.Name = 'SQLDataSetDetalle' then  //si el que pasa es un SQLDataSetDetalle
         begin
           if DeltaDS.FieldByName('CANTIDAD').Value > 0 then
           begin
             CodigoArtic:= DeltaDS.FieldByName('COD_ARTIC').AsInteger;
             CantidadArtic:= DeltaDS.FieldByName('CANTIDAD').AsFloat;
             oTempArticulos:= TSQLQuery.Create(nil);
             oTempArticulos.SQLConnection:= SQLConnectionMovimientos;
             oTempArticulos.Close;
             oTempArticulos.SQL.Clear;
             oTempArticulos.SQL.Add('Select * From "Articulos" Where CODIGO= ' + inttostr(CodigoArtic));
             oTempArticulos.Open;
             oTempArticulos.Edit; <----------ERROR
             oTempArticulos.FieldByName('CANTIDAD').AsFloat:= oTempArticulos.FieldByName('CANTIDAD').AsFloat - CantidadArtic;
             oTempArticulos.Post;
           end;
         end;
     End;

El Error dice: Project servidor.exe raised exception class EDatabaseError with message 'Cannot modify a read-only dataset'.

Elegí este foro porque no creo que la excepción tenga que ver con Datasnap, mas bien parecería que me falta aclarar algo del componente. Como dice el enunciado de la excepción "no se puede modificar un dataset de solo-lectura" pero lo cierto es que ni siquiera hay una propiedad ReadOnly en el SQLQuery. Bueno cualquier sugerencia es bienvenida, gracias de antemano.
Responder Con Cita