Jump to content

Recommended Posts

Posted

Boa tarde,

Preciso de uma ajudinha...

Estou a  criar uma base de dados em access 2003 e preciso:

a partir dos dados introduzidos no formulario quando entra o material no armazém, escolhemos o fornecedor e a família numa box - depois escrevemos a descrição e a quantidade e os restantes dados e ao gravar, preciso  de meter no botão

1)

criar um array com 12 posições

do nome do fornecedor, cortar as 3 primeiras letras e colar nos 3 1ºs lugares do array

no 4 lugar leva um traço

a seguir cortar as 3 primeiras letras da família e colar nas posições 5 6 e 7 do array

meter um traço na 8

da 9 a 12 meter um autonumber com 4 dígitos 0001, cada vez que se meter um novo produto

2)

criar duas variaveis em vb - quantidade e stock mínimo

se alguma vez a quantidade for menor que o stock, mínimo, fazer uma msgbox a avisar que deve contactar o fornecedor

Já gora outra questão:

Uma vez que tenho um campo de quantidades, penso que a melhor maneira de fazer os movimentos de stock será com querys de update nesse campo

ou seja fazer incrementos e decrementos do valor da quantidade, conforme se trate de uma abate ou reparação ou saída de material para um deposito, ou entrada de material

como necessito de criar históricos, acho que é necessário também haver tabelas para o abate e reparações?

Uma ultima questão - criei perfis de utilizador no access e não consigo descobrir como é que depois sei quem é que fez os movimentos de stock.

Alguém tem ideias?

Desde já um muito obrigado e boas programações!

ESA

Posted

Olá,

No ponto 2 vais utilizar variáveis ? Porque não colocar um campo extra em cada produto a indicar o stock minimo e o stock actual ?

Na ultima questão é só acrescentar um campo com o login do utilizador. Com tens definido a autenticação à db ou como defines os perfis?

Posted

Olá.

Desculpa só responder agora.

Resposta a primeira questão:

Já consegui utilizar a função (Left,3) que me devolve as 3 primeiras letras de duas text boxes e me devolve numa label p. ex: SIE-GSM-

agora pretendo adicionar mais um auto number 0001 ao primeiro produto e quando meter outro igual ele incrementar apenas o 0002.

E preciso de fazer isso para tudo o que adicionar daqui em diante.

Ou seja tenho duas boxes |________| |__________| - na primeira escrevo: ericsson e na label aparece ERI- na segunda escrevo: umts e na label aparece |_ERI-UMT-quando mudo de control, ele adiciona o cardinal respectivo, neste caso 0001 se ainda não houver nenhum, ou o seguinte se já houver.

e assim sucessivamente para tudo o que adicionar, criando assim um identificador unico para cada produto.

A minha questão é: crio um novo tipo de dados?

Já não me lembro é como faço isso...

E depois guardo esse valor na tabela dos produtos para futura referência não é?

E quando meter um novo produto, como é que depois se "apanha" o proximo ""identificador"" a atribuir?

++++++++++++++++++++++++++++++++++++++++++++++

Para a questão do stock mínimo, vou fazer isso mesmo - mais um campo - stock minimo, uma vez que a quantidade já lá tenho.

Depois é só comparar quando desejar fazer movimentos de stock.

++++++++++++++++++++++++++++++++++++++++++++++

Sobre a parte do login fiz desta forma:

tenho uma tabela de utilizadores com [PK]ID(autonumber), User(text) e Password(text) como campos - e agora quer tenha a pass certa quer nao tenha, dá sempre pass inválida.

O form tem uma combo box que vai buscar os utilizadores à tabela, e o utilizador escreve a pass na textbox em baixo.

carregando no botão OK, corre o código.

Option Compare Database

Dim verificapass As Long

Private Sub CMBempregado_AfterUpdate()

Me.txtpassword.SetFocus

'ao abrir o form, coloca o focus na combobox do user

End Sub

Private Sub Form_Open(Cancel As Integer)

'ao abrir o form, coloca o focus na combobox do user

Me.cmbempregado.SetFocus

End Sub

Private Sub Combo16_AfterUpdate()

    ' Find the record that matches the control.

    Dim rs As Object

    Set rs = Me.Recordset.Clone

    rs.FindFirst "[CodUser] = " & Str(Nz(Me![Combo16], 0))

    If Not rs.EOF Then Me.Bookmark = rs.Bookmark

End Sub

Private Sub Command27_Click()

On Error GoTo Err_Command27_Click

    DoCmd.Quit

Exit_Command27_Click:

    Exit Sub

Err_Command27_Click:

    MsgBox Err.Description

    Resume Exit_Command27_Click

   

End Sub

Private Sub Command28_Click()

'verifica se o utilizador foi introduzido

If IsNull(Me.cmbempregado) Or (Me.cmbempregado) = "" Then

    MsgBox "Deve escolher o utilizador!", vbOKOnly, "Campo obrigatório!"

    Me.cmbempregado.SetFocus

End If

'verifica se a password foi introduzida

If IsNull(Me.txtpassword) Or (Me.txtpassword) = " " Then

    MsgBox "Deve introduzir a password!", vbOKOnly, "Campo obrigatório!"

    Me.txtpassword.SetFocus

End If

If Me.txtpassword.Value = DLookup("password", "utilizadores", "[codUser]") = Me.cmbempregado.Value Then

verificapass & Me.cmbempregado.Value

'Fecha o form login e abre o form Produtos

    DoCmd.Close acForm, "F_login", acSaveNo

    DoCmd.OpenForm "Switchboard"

Else

'Password invalida, pede para repetir e coloca o focus na caixa de texto da password

    MsgBox "Password inválida, tente novamente!", vbOKOnly, "Entrada inválida!"

    Me.txtpassword.SetFocus

End If

End Sub

Melhores cumprimentos e muito obrigado.

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.