Jump to content

<vb6> Ajuda Urgente


d@rk

Recommended Posts

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...

Link to comment
Share on other 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

"The Dark Side Clouds Everthing. Impossible To See The Future Is."My rig: Intel Core 2 Quad Q9450 | abit IP35P | 4G Kingston 800 Mhz | XFX GeForce 9800 GX2 1G ddr3 | 2X WD5000AAJS 500Gb Sata 2 | PSU 600W || Caixa El-Diablo | Creative XMod

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.