RESTRIÇOES

PROSOFTSISTEMAS 28/07/2025 14:26:38
#505023
Pessoal tenho a seguinte situação
Um cliente meu de retifica de motores precisa gerenciar a produção dos funcionários e eu desenvolvi uma ferramenta onde o operador, quando vai iniciar o serviço informa a hora de inicio e ao finalizar a hora do término. A partir dessas informações é feito uma série de outras tarefas, como calcular o tempo de produção e várias outras....
O que está acontecendo é que está aparecendo na tabela situações em que é informado a hora do término sem que a hora de inicio esteja informada. Eu sei que isso pode ser tratado via código, é isso é feito, porém, em algum local do sistema está ocorrendo um bug que leva a isso
Gostaria de saber se alguém conhece uma forma de impor uma restrição no banco de dados onde só pode ser informado o momento de término se a hora de inicio estiver preenchida. Daí eu iria tratar isso via restrição de banco de dados.

Tipo: Só preencher a coluna B se a coluna A estiver preenchida
Uso o SqlServer 2019
DAMASCENO.CESAR 29/07/2025 10:05:39
#505027
Bom dia, pesquise sobre insert if, ou algo parecido rsrsrs, não sou especialista em SGDB mas sei que é possível, ou também pode por na clausula where:
Update Tabela SET HoraTermino=@HoraTermino Where Codigo=@Codigo AND NOT HoraInicio IsNull
ou algo parecido. Não usei SqlServer
PROSOFTSISTEMAS 19/12/2025 21:21:06
#506202
Estou finalizando esse tópico e só pra auxiliar caso alguém tenha interesse resolvi meu problema e funciona perfeitinho
Criei uma função

ALTER Function [dbo].[CheckDatas](@Inicio SmallDateTime, @Termino SmallDateTime) Returns TinyInt AS
Begin
IF @Inicio IS NULL and @Termino IS NULL
Return 0
If @Inicio IS NULL and Not @Termino IS NULL
Return 1
If @Inicio > @Termino
Return 1
Return 0
End

Depois dessa funçao criada, foi só adicionar uma restrição na tabela
Essa restrição
([dbo].[CheckDatas]([Inicio],[Termino])=(0))

Funciona top e o proprio banco de dados gerencia o processo, não importando onde e como a atualização do registro é feita
PROSOFTSISTEMAS 20/12/2025 06:41:57
#506203
Topico resolvido
Tópico encerrado , respostas não são mais permitidas