<\/HEAD>
É muito fácil, como administrador GIS, adicionar muitos e muitos campos a uma classe de feição e ainda mais fácil pensar ingenuamente que as pessoas vão preenchê-los ou editá-los! Um tema comum para mim são os campos de data. Temos data de edição, data de criação, data de edição e criação FGDC, ano... blá blá blá.<\/P>
<\/P>
Eu gostaria que houvesse apenas um, ou até nenhum, ônus para os editores terem que pensar sobre datas e o banco de dados simplesmente... cuidasse disso.<\/P>
<\/P>
Isso pode ser feito. Com um gatilho de banco de dados. Vamos começar com as datas FGDC. Se você está implementando algum tipo de metadado em nível de feição, ou alguma mineração de dados que marca outro elemento de metadado com fonte FGDC, data de criação ou edição e ainda tem o editor tracking habilitado, não há razão para que você também tenha que preencher a coluna FGDC[qualquer]DATE.<\/P>
<\/P>
CREATE TRIGGER [dbo].[SOMETABLE_DATE]
ON [dbo].[SOMETABLE]
AFTER INSERT, UPDATE NOT FOR REPLICATION
AS BEGIN
SET NOCOUNT ON;
UPDATE [dbo].[SOMETABLE]
SET
SRCDATEFGDC = (convert(varchar(8), SOURCEDATE, 112)),
CREATEDATEFGDC = (convert(varchar(8), CREATEDATE, 112)),
EDITDATEFGDC = (convert(varchar(8), EDITDATE, 112))
END
GO<\/PRE><\/P>Aqui estamos pegando os valores EDITDATE e CREATE date, que são sql<\/P>datetime(2)<\/PRE>e convertendo-os para um formato string como yyyymmdd. O 112 é o que controla o formato da saída. Veja CAST and CONVERT (Transact-SQL)<\/A> para uma lista completa dos formatos de conversão de data.<\/P><\/P>
Além disso, o usuário também está selecionando uma data fonte neste caso que pode ser diferente da data de criação e essa também é convertida.<\/P>
<\/P>
Se você tem uma coluna de ano você também pode<\/P>
<\/P>
YEAR = CASE WHEN SOURCEDATE IS NULL THEN NULL ELSE YEAR(SOURCEDATE) END<\/PRE><\/P>com tratamento para valores nulos incluído.<\/P><\/P>Se você tem editor tracking desabilitado por algum motivo (frequentemente causa problemas com Collector for ArcGIS) você poderia colocar uma restrição padrão na(s) sua(s) coluna(s) de data como<\/P>getdate()<\/PRE>.<\/P><\/P>Este é um blog pessoal e não recomenda, endossa ou apoia os métodos descritos acima. Alteração de dados usando SQL fora do stack de software ESRI, claro, não é suportada e não deve ser aplicada a um banco de dados de produção sem um entendimento completo e plano de recuperação de desastres.<\/EM><\/P><\/BODY><\/HTML>