esa Posted April 26, 2009 at 02:54 PM Report #259170 Posted April 26, 2009 at 02:54 PM 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
jpaulino Posted April 26, 2009 at 06:34 PM Report #259191 Posted April 26, 2009 at 06:34 PM 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?
esa Posted May 1, 2009 at 01:31 AM Author Report #260457 Posted May 1, 2009 at 01:31 AM 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.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now