PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.
Moderadores: Administradores, Moderadores
por psyke » Quarta Jun 07, 2006 12:16
oi estou com um duvida urgente...
estou a trbalhar no SQL server...
Alguem sabe como se restringe o valor de um campo de data?
ou seja no atributo não deve de ser permitido introduzir horas anteriores as 8 da manha e superiores as 10 da noite?
como faço isso com rules?
que tipo de expressão utilizo?
abraço obrigadão
-
psyke
- Novato

-
- Mensagens: 10
- Registado: Quinta Jan 26, 2006 21:52
por Asgorath » Segunda Jun 12, 2006 9:48
Uma solução simples é criar um stored procedure que so insere datas validas.
Jorge
Intel Core 2 Quad Q9450 - Cache 12MB - 4x2,66GHz - FSB 1333MHz || abit IP35P ||
4G Kingston 800 Mhz || XFX GeForce 9800 GX2 1G ddr3 || WD5000AAJS 500Gb Sata 2 Raid 0 ||
Samsung SyncMaster 940nw || |
|| Caixa A+El-Diablo || Creative XMod
-
Asgorath
- Membro de Ouro

-
- Mensagens: 645
- Registado: Segunda Out 31, 2005 10:45
- Localização: C:\Portugal\Castelo Branco
-
por Blackbrier » Segunda Jun 12, 2006 13:28
Viva podes sempre fazer um procedure como disse o Asgorath, mas para garantires maior coerencia é melhor fazeres um trigger porque se fizeres um insert directo o procedure n te garante coerencia dos dados simplesmente faz-te validação dos dados antes de inserir, mas isto so acontece se chamares o procedure, mas se fizeres um insert directo o trigger é sempre accionado e trata disso, é mais seguro mas agora vai da tua implementacao,
Fica bem
Acer TM4001 Wlmi
-
Blackbrier
- Novato

-
- Mensagens: 13
- Registado: Segunda Dez 06, 2004 15:52
por psyke » Terça Jun 13, 2006 17:50
Não tem em conta o campo doa minutos mas ja +e um principio em termos de horas ja não deixa introduzir fora das indocadas.
Aqui vai o trigger
CREATE TRIGGER [range horas] ON [dbo].[Aula_Pratica]
FOR INSERT, UPDATE
AS
If EXISTS (SELECT *
FROM inserted i
Where (convert(int, convert(char (2), i.horainicio, 108))<8 or convert(int, convert(char (2), i.horainicio,108))>19) )
BEGIN
ROLLBACK TRANSACTION
RAISERROR ('A escola esta fechada a esta hora',16,1)
END
-
psyke
- Novato

-
- Mensagens: 10
- Registado: Quinta Jan 26, 2006 21:52
Voltar para Programação
Quem está ligado:
Utilizadores a ver este Fórum: Nenhum utilizador registado e 4 visitantes