• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

d@rk

<vb6> Ajuda Urgente

4 mensagens neste tópico

Boas.....

Peço k m ajudem urgentemente é k preciso de fazer um projecto e tou empancado lá com uma cena, tipo tenho de fazer uma aplicação tipo relogio de ponto (akele relogio k há a entrada das empresas onde as pessoas picam o ponto, mas tenho de fazer em aplicação tipo ñ precisa de nenhum hardware extra nem cartoes), onde a aplicação tem de pedir ao utilizador k faça login depois de o utilizador fazer login a aplicaçã regista essa hora na base de dados e ao fim do dia o utilizador faz logout e essa aplicação regista essa hora novamente, isto tudo numa base de dados, k é uma cena k tb ñ consigo...

peço ajuda é mt urgente.....

agradeço a kem m ajude...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

olha nao fassas topicos como "ajuda urgente" mas sim especifica o que queres na ajuda tipo " relogio de ponto"...epro que nao leves a mal este topico :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já que estas intalado numa coisa tao simples de fazer vou te dar umas dicas.

Isso o script de criacao da tabela Ponto que usamos na minha empresa, é MS SQL 2000 e nao access.

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ponto]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [dbo].[ponto]

GO

CREATE TABLE [dbo].[ponto] (

[movimento] [numeric](18, 0) IDENTITY (1, 1) NOT NULL ,

[Trabalhador] [numeric](3, 0) NOT NULL ,

[inicio] [smalldatetime] NULL ,

[Fim] [smalldatetime] NULL ,

[infim] [bit] NOT NULL ,

[delta] [numeric](6, 2) NULL ,

[deltah] [char] (5) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,

[tipo] [numeric](1, 0) NULL

) ON [PRIMARY]

GO

Campos : O movimento é necessario para poderes fazer alteracoes aos dados.

Trabalhador : num de trabalhador , vais a buscar o numero a tabela de trabalhador

Inicio : Hora de abertura do ponto

Fim : hora de fecho de ponto

Infim : 0 : movimento aberto, 1 movimento fechado

Delta : diferenca em minutos entra a hora inicial e final

DeltaH: diferenca em minutos entra a hora inicial e final em formato texto : hh:mm

Tipo : tipo de horario.

A minha empresa considera os seguintes tipos de horarios :

1 Normal                       

2 Extra.                       

3 Faltas Injustificadas       

4 Faltas Just. s/ Retribuição 

5 Faltas Just. c/ Retribuição 

6 Férias                       

7 Doença                       

8 Compensação                 

A seguir o script do inicia_ponto que recebe o numero de trabalhador e tipo de horario

CREATE  PROCEDURE Inicia_ponto

-- Versão 1 - dia 04-01-98

-- Inicia um movimento de um trabalhador

-- Tipos :

-- 1 Normal                       

-- 2 Extra.                       

-- 3 Faltas Injustificadas       

-- 4 Faltas Just. s/ Retribuição 

-- 5 Faltas Just. c/ Retribuição 

-- 6 Férias                       

-- 7 Doença                       

-- 8 Compensação                 

@trabalhador numeric(3,0), -- numero de trabalhador

@tipo numeric (1,0) -- tipo de horario

AS

Insert into ponto values(@trabalhador, getdate(),null,1,0,'',@tipo)

return 1 /* ok */

GO

A funcao getdate() devolve  a hora do servidor onde esta instaldo o sql server

A seguir o script o Fecha_Ponto que recebe o numero de trabalhador

CREATE  PROCEDURE dbo.Fecha_ponto

-- Versao 1 -- Dia 04-01-98

-- Fecha o ponto aberto de um trablhador

@trabalhador numeric(3,0) -- numero do trabalhador

AS

declare @delta  numeric(15,5) -- diferenca

declare @Inicio smalldatetime -- inicio

declare @data smalldatetime -- data actual

declare @mov numeric(18,0) -- numero de movimento

If exists (select * from ponto where trabalhador = @trabalhador and infim = 1 )

begin

select @Inicio=Inicio, @mov = movimento from ponto where trabalhador = @trabalhador and infim = 1

select @data = getdate()

select @delta = (datediff(mi,@Inicio,@data))

update ponto set infim = 0, fim = @data, delta = @delta where trabalhador = @trabalhador and infim = 1 and movimento = @mov

update ponto set delta = delta/60 where trabalhador = @trabalhador and movimento = @mov

update ponto set deltah = rtrim(convert(char(2),floor(delta))) + ':' + rtrim(convert(char(2),convert(int,((delta-floor(delta)))*60))) where trabalhador = @trabalhador and movimento = @mov

return 1

end

else

return 0

GO

O datediif devolve a diferenca em minutos entre as duas datas.

Asumo que sabes chamar stored procedures a partir do vb 6?

Jorge

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é facil fazer isso, simplesmente explicar aqui tudo é que é dificil

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora