Skip to main content
How Can We Help?
Answer
The below script will update all controls that have a width property to 150 (This can be amended in the below script as required).
It affects the following controls:
- Simple text box
- Large text box
- Drop down
- Lookup
- Date picker
- Advanced Date picker
DECLARE @controlId BIGINT, @options XML
DECLARE @width BIGINT
DECLARE @errorMessage varchar(4000)
SET @errorMessage = ''
BEGIN TRANSACTION [controloption_update]
BEGIN TRY
DECLARE ControlOptionsCleaner CURSOR
FOR
SELECT [ID], [Options] FROM [dbo].[fcEventControl]
WHERE [Type] = 'Simple Text Box'
OR [Type] = 'Large Text Box'
OR [Type] = 'Drop Down'
OR [Type] = 'Lookup'
OR [Type] = 'Date Picker'
OR [Type] = 'Advanced Date Picker'
OPEN ControlOptionsCleaner
FETCH NEXT FROM ControlOptionsCleaner INTO @controlId, @options
WHILE (@@Fetch_Status = 0)
BEGIN
SELECT @width = @options.value('(/options/width)[1]', 'BIGINT')
If (@options.exist('/options/width') = 0 OR @width <= 0)
BEGIN
If (@width <= 0)
BEGIN
SET @options.modify('delete (/options/width)[1]')
END
DECLARE @INTVALUE NVARCHAR(5)
SET @options.modify('insert <width>150</width> as last into (/options)[1]')
UPDATE [dbo].[fcEventControl]
SET [Options]=CAST(@options AS VARCHAR(MAX))
WHERE [ID]=@controlId
PRINT @controlId
END
FETCH NEXT FROM ControlOptionsCleaner INTO @controlId, @options
END
COMMIT TRANSACTION [controloption_update]
CLOSE ControlOptionsCleaner;
DEALLOCATE ControlOptionsCleaner;
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION [controloption_update]
CLOSE ControlOptionsCleaner;
DEALLOCATE ControlOptionsCleaner;
SET @errorMessage = ERROR_MESSAGE()
PRINT @errorMessage
END CATCH
GO
Options update for blank column
When trying to update the event controls the above script will not work if the Options column is previously blank.
The following resolves that particular area:
UPDATE fcEventControl SET Options = '<options><width>150</width></options>' WHERE CAST(Options as NVARCHAR) = '' AND Type <> 'Reference Label' AND Type <> 'Command Option'

Comments are closed.