Buenas tardes.
He adaptado el ejemplo en una lista de intervenciones que tengo y marcando una o varias al azar puedo reasignar el operario que tiene por el logueado. Hasta aquí perfecto.
Lo único que observo es que, cuando no marco ninguna intervención, si ejecuto la sentencia de cambio, TODAS las intervenciones que tiene esa colección me la asigna al operario logueado... como podría controlar que si no hay selección el procedimiento no haga nada?
Muchas gracias.
Daniel Lutz
El proceso recibe como último parámetro la lista de elementos seleccionados
La lista de elementos la pasamos a una tabla temporal para luego cruzarla con la tabla de cuentas.
También podríamos vaciar la selección de registros con una instrucción javascript.
CREATE PROCEDURE [dbo].[pAccounts_ChangeState] @state_id tinyint, @lockdate smalldatetime, @lockreason nvarchar(2000)=null, @employeechange_id int, @sysCollectionSentence nvarchar(max) AS declare @accounts Table (account_id int) declare @startdate smalldatetime BEGIN TRY BEGIN TRAN INSERT INTO @accounts EXEC sp_executesql @sysCollectionSentence; update A set state_id=@state_id ,lockdate= case when @state_id=0 then null else @lockdate end ,lockreason=case when @state_id=0 then null else @lockreason end ,modifiedby=@employeechange_id, modifieddate=getdate() from ACCOUNT A inner join @accounts Sel on A.account_id=Sel.account_id -- Si necesitaramos vaciar la selección de registros de la colección Accounts por javascript: --SELECT 'flexygo.selection.clear(''Account'')' AS Javascript COMMIT TRAN RETURN -1 END TRY BEGIN CATCH IF @@TRANCOUNT >0 BEGIN ROLLBACK TRAN END print 'The selected accounts could not be updated. ' + ERROR_MESSAGE() RETURN 0 END CATCH1 Persona le gusta esta idea