
Iceguy
Membros-
Total de itens
274 -
Registro em
-
Última visita
Tudo que Iceguy postou
-
Em qual coluna estão od dados? na Campo6 mesmo? Esse código tem que ficar na coluna que tem os dados
-
Responde o outro tópico lá, nos mostra o seu projeto na visão do cliente e não do desenvolvedor. Você ta fazendo esse sistema como se faz no excel. Com isso podemos te orientar na estrutura do que você tem que fazer
-
E se for o cheque S3-0000127? O próximo seria S-30000128??? Essa que eu fiz faz assim: Analiza o texto contendo o nome código do cheque do fim para o início procurando por números. Se encontrar um número ele afaz o incremento e remonta o texto e devolve ele. Por exemplo o cheque "Ax-000129" Caracter = caracter mais a direita não testado, ou seja, o 9 é número? não? retorno = caracter & retorno, ou seja, adiciona o caracter em testes mais a esquerda do retorno sim? Que número é? menor que 9? incrementa o caracter e remonta a string, devolvendo o código atualizado é 9? como atualizar? aí verifica o caracter a esquerda do 9, é número? sim? muda o 9 pra 0 e procede com a varredura, isso fará com que o próximo seja incrementado. se eu enviar 109, ele muda o 9 pra 0 ficando 100 e verifica o próximo, 0 < 9 então ele incrementa e retorna 110. não? muda o 9 para 10 e remonta a string. Se eu passar A-99 ele vê o primeiro 9 e muda pra 0 porque a esquerda tem número, vê o segundo 9 e percebe que a esquerda não é número, então ele joga 10 e remonta a string, retornando A-100 Então, ele analiza o 9 e como a esquerda dele tem um número ele muda o 9 pra 0 e vê o próximo que é o 2, incrementa pra 3 e retorna "Ax-000130" Na questão que fiz sobre o outro código, a função que eu fiz retorna S3-0000128 Esse seu código calcula somente os cheques seguintes? Esse que você digitou já é adicionado ao sistema e você precisa só dos seguintes? Se for é só trocar a ordem da gravação pelo incremento e remover o If e a inicialização da variável, ficando assim: im db As Database, rs As Recordset Dim I As Long Dim nCheque As String Set db = CurrentDb() Set rs = db.OpenRecordset("tblLivroCaixa") For I = 1 To Me.txtNumParcelas - 1 rs.AddNew rs("idDentista") = Me.Dentista rs("idTipoPagamento") = Me.Tipo rs("data") = Me.Data rs("valor_LC") = Me.Valor_LC rs("discriminação") = Me.Discriminação rs("entrada_saida") = "Entrada" rs("bancoCheque") = Me.bancoCheque rs("titularCheque") = Me.titularCheque rs("dataCheque") = DateAdd("m", I, Me.dataCheque) nCheque = ProximoCheque(nCheque) rs("numeroCheque") = nCheque rs.Update Next rs.Close db.Close
-
Pelo que entendi tu quer uma espécie de controle de atividades realizadas pelos colaboradores? Como o Humm falou explique a atividade, esquecendo o que você fez no .mdb, só a atividade que você quer automatizar. ex: "Eu quero fazer um controle pra minha padaria, preciso controlar as vendas. As vendas funcionam assim: O cliente se dirige a um atendente e faz o pedido, o atendente pega os produtos e anota o preço no pacote e entrega ao cliente. O cliente se dirige ao caixa que soma o preço dos produtos e recebe o valor do cliente e preenche manualmente uma nota fiscal." Aí a nossa proposta seria de instalar um computador no atendimento e outro no caixa, no atendimento o atendente pega o prduto, lança no sistema que gera uma etiqueta que o atendente cola na embalagem e entrega ao cliente juntamente com um ticket contendo o número do pedido, este se dirige ao caixa e entrega o ticket ao caixa, ele lança no sistema e tem o pedido pronto. Após receber o valor o caixa confirma o pagamento no sistema e emite NF e entrega ao cliente.
-
Explica seu projeto todo, daí fica mais fácil de te ajudar. Com certeza tem maneiras mais fáceis de fazer isso. Pra que você precisa separar semana a semana as datas em tabelas diferentes? E você tem tabelas só com o campo data?
-
Opa... Fiz sem testar, mas corrigi uns negocinhos na função Public Function ProximoCheque(cheque As String) As String Dim i As Integer Dim caracter As String ProximoCheque = Empty For i = Len(cheque) To 1 Step -1 caracter = Mid(cheque, i, 1) If IsNumeric(caracter) Then Select Case caracter Case Is < 9: ProximoCheque = Mid(cheque, 1, i - 1) & (caracter + 1) & ProximoCheque Exit For Case Is = 9: If IsNumeric(Mid(cheque, i - 1, 1)) Then ProximoCheque = 0 & ProximoCheque Else ProximoCheque = Mid(cheque, 1, i - 1) & 10 & ProximoCheque Exit For End If End Select Else ProximoCheque = caracter & ProximoCheque End If Next i End Function Seu código fica assim: Dim db As Database, rs As Recordset Dim I As Long Dim nCheque As String nCheque = Me.numeroCheque Set db = CurrentDb() Set rs = db.OpenRecordset("tblLivroCaixa") For I = 1 To Me.txtNumParcelas - 1 rs.AddNew rs("idDentista") = Me.Dentista rs("idTipoPagamento") = Me.Tipo rs("data") = Me.Data rs("valor_LC") = Me.Valor_LC rs("discriminação") = Me.Discriminação rs("entrada_saida") = "Entrada" rs("bancoCheque") = Me.bancoCheque rs("titularCheque") = Me.titularCheque rs("dataCheque") = DateAdd("m", I, Me.dataCheque) rs("numeroCheque") = nCheque If I < (Me.txtNumParcelas - 1) Then nCheque = ProximoCheque(nCheque) End If rs.Update Next rs.Close db.Close
-
O que exatamente é o seu projeto? O que você quer fazer?
-
Vai em criar nova consulta, daí ele abre um formulário e tal. Aí tem lá onde muda pra modo de exibição e tal, tem modo SQL, abre lá e cola esse código substituindo o tabelaOrigem pelo nome da tabela de origem, tabelaDestino pelo nome da tabela de destino e campoData pelo nome do campo na tabela de origem onde está a data. Detalhe, as duas tabelas têm que ter a mesma estrutura, se não da problema
-
Cria essa consulta: INSERT INTO tabelaDestino SELECT * FROM tabelaOrigem WHERE campoData BETWEEN FORMAT(#04/01/2010#, 'mm/dd/yyyy') AND FORMAT(#08/01/2010#, 'mm/dd/yyyy');
-
Coloca essa função num módulo Public Function ProximoCheque(cheque As String) As String Dim codNumerico As Long Dim i As Integer Dim caracter As String ProximoCheque = Empty For i = Len(cheque) To 1 Step -1 caracter = Mid(cheque, i, 1) If IsNumeric(caracter) Then Select Case caracter Case Is < 9: ProximoCheque = Mid(cheque, 1, i - 1) & (caracter + 1) & ProximoCheque Exit For Case Is = 9: If IsNumeric(Mid(cheque, i - 1, 1)) Then ProximoCheque = 0 & ProximoCheque Else ProximoCheque = 10 & ProximoCheque End If End Select Else ProximoCheque = caracter & ProximoCheque End If Next i End Function e depois chama ela assim, cria uma variavel nCheque do tipo string e faz assim Dim nCheque As String . . . nCheque = Me.numeroCheque . . . rs("numeroCheque") = nCheque If I < (Me.txtNumParcelas - 1) Then nCheque = ProximoCheque(nCheque) End If . . .
-
Putz cara... aqui no meu trampo não posso acessar sites de compartilhamento de arquivos, e fim de semana nem mechi com PC. Mas imagino que o seu problema com formulário é que ao invés de vir 'CAMPUS I' vem 1, não é? Pra resolver isso você precisa dos JOINS.
-
Tem como explicar melhor um pouco o objetivo? Explica o que vcê quer fazer e qual método está usando. Na sua explicação você disse que quer registrar os 4 turno, pressuponho eu que os campos inicio são Datetime? (mm/dd/yyyy hh:mm:ss) O que é o inserido e o que é o vendido? E outra coisa, por que não usa uma tabela só e aiciona o campo 'turno'?
-
Qual versão do Office?
-
É algo assim: tblCampus codCampus nomeCampus enderecoCampus cidadeCampus tblDepartamento codDepartamento siglaDepartamento nomeDepartamento tblDepartamentosCampus codCampus codDepartamento telefoneDepartamento gerenteDepartamento aí você cadastra da seguinte forma tblCampus codCampur = 1 nomeCampus = 'Campus III' enderecoCampus = 'Rua Alguma Coisa, 1235 - Jd. Sei Lá' cidadeCampus = 'São Paulo - SP' codCampur = 2 nomeCampus = 'Campus IV' enderecoCampus = 'Rua Sem Nome, 415 - Jd. Perdido' cidadeCampus = 'Curitiba- PR' tblDepartamento codDepartamento = 1 siglaDepartamento = 'DCF' nomeDepartamento = 'Departamento de Controle Financeiro' codDepartamento = 2 siglaDepartamento = 'DRH' nomeDepartamento = 'Departamento de Recursos Humanos' tblDepartamentosCampus codCampus = 1 codDepartameto = 1 telefoneDepartamento = '(11)5555-5512' gerenteDepartamento = 'João da Silva' codCampus = 1 codDepartameto = 2 telefoneDepartamento = '(11)5555-5519' gerenteDepartamento = 'Maria Oliveira' codCampus = 2 codDepartameto = 2 telefoneDepartamento = '(41)5555-2569' gerenteDepartamento = 'Antônio de Souza' Aí tu continua cadastrando cada departamento no campus que ele existe. Dessa forma você separa as informações pertinentes ao Campus na tblCampus, ao departamento (genérico) na tblDepartamento, e na tblDepartamentosCampus você cadastra as informações específicas do departamento de cada campus. Como eu cadastrei alí, você sabe que tem DRH nos dois campus, mas sabe o telefone de cada um e o gerente de cada um, pois telefone e gerente são informações específicas de cada departamento
-
Coloca no cabeçalho do relatório o local de treinamento e no detalhe coloca código e nome, e na ordenação coloca local e nome, nem coloca o cod alí
-
Botão direito fora da folha do relatório (Na parte cinza do fundo) e tem lá classificar e agrupar
-
Da pra fazer algo como isso: If IsNull(DLookUp("seuCampoRG", "suaTabela", "seuCampoRG = " & InputBox("Informe seu R.G.:"))) Then DoCmd.OpenForm "formCadastro" Else DoCmd.OpenForm "formConsulta" End If Mas eu acho feio o InputBox do Access Você pode fazer um form que tenha o campo R.G. e coloca esse código no evento trocando o InputBox pelo seu campo e colocando DoCmd.Close acForm, Me.Name
-
É +- assim: Cada campus tem um ou muitos departamentos, e cada departamento está em um ou muitos campus, correto? Então temos um relacionamento de muitos pra muitos, ou seja, você precisa de uma assossiação de classe. O que é isso, é uma outra classe (ou tabela) que contenha os dados pertinentes a essa assossiação. É equivalente a um cadastro de vendas. Em uma venda você tem um ou muitos produtos, e um produto está em zero ou muitas vendas, ou seja, novamente muitos pra muitos, então você cria a tabela produtosVendidos onde você tem o codVenda, codProduto, quantidade, etc. No seu caso o que fazer? Crie uma tabela tblDepartamentoCampus e nela coloque (codCampus, codDepartamento, funcionarios, etc) e faça um relacionamento de modo que só possa inserir na tabela tblDepartamentoCampus um codCampus existente na tabela Campus e um codDepartamento existente na tabela Departamento.
-
Esqueci um detalhezinho hehehe, faltou o = vbYes corrige alí: If MsgBox("Registro já encontrado no Arquivo Morto. Deseja substituir o arquivo existente?", _ vbYesNo, "Dados duplicados") = vbYes Then
-
(Resolvido) Inserir dados de um formulário em outro
pergunta respondeu ao leonardo_r_mota de Iceguy em Access
Postei uma alternativa aqui cara http://scriptbrasil.com.br/forum/index.php...mp;#entry621955 -
Sei u jeito de fazer, e não sei se é o mais correto, enfim... Funciona =D Criei um form que só tem uma listBox(Caixa de listagem) e dei o nome de frmLista pro Form e listaValores pra listBox. no evento Load dele coloque assim: Me.Visible = False Crie um módulo com esse código Option Compare Database Option Explicit Private pFrm As Form Private pControle As String Public Sub ListaPopUp(tabela As String, campo As String, frm As Form, controle As String) DoCmd.OpenForm "frmLista" With Form_frmLista .listaValores.RowSource = "SELECT " & campo & " FROM " & tabela .Visible = True End With Set pFrm = frm pControle = controle End Sub Public Sub ReturnValue() pFrm.Controls(pControle) = Form_frmLista.listaValores DoCmd.Close acForm, "frmLista" End Sub Aí no evento de duplo click do campo tu coloca: ListaPopUp "NomeDaSuaTabela", "NomeDoCampoDaTabela", Me, "NomeDoSeuTextBox" No evento de duplo clique da listbox tu coloca assim ReturnValue
-
Por que não a tabela materiais com mais um campo "Yes/No" EmUso?? Mas se a qtde de dados for muito grande e você queira dividir pra ganhar em velocidade, tenta assim: On Error GoTo Erro 'Verifica se já existe o número na tabela Material BX If DLookup("NUMERO", "Material BX", "NUMERO = " & Me.Numero) = Me.Numero Then 'Se o usuário responder "SIM" exclui registro da tabela Material BX If MsgBox("Registro já encontrado no Arquivo Morto. Deseja substituir o arquivo existente?", _ vbYesNo, "Dados duplicados") Then 'Exclui registro da Tabela Material BX CurrentDb().Execute "DELETE FROM [Material BX] WHERE NUMERO = " & Me.Numero 'Se o usuário responder "NÃO" sai da função Else GoTo Sair End If End If 'Copia registro da tabela Material para a tabela Material BX CurrentDb().Execute "INSERT INTO [Material BX] SELECT * FROM Material WHERE Material.NUMERO = " _ & Me.Numero 'Exclui registro da tabela Material CurrentDb().Execute "DELETE FROM Material WHERE NUMERO = " & Me.Numero Sair: Exit Sub Erro: MsgBox Err.Description, vbCritical, "Erro" Resume Sair
-
Normalmente lojas dão x% de desconto para pagamentos a vista, então coloque no banco o preço normal do produto e na aplicação coloca a uma relação de produtos da compra e os preços de cada um, embaixo o campo Subtotal com a soma dos preços, o campo desconto condicionado à forma de pagamento, se for a vista o calor do campo desconto é = x% do subtotal, se for à prazo o valor do campo é 0, e abaixo disso tu coloca o campo Total que é Subtotal - desconto.
-
Cria um arquivo txt com essa informação, um xml, ou coisa do tipo. Ou uma tabela com esses dados
-
Tava errado o código, tirei daqui mas entendi o erro, o banco (accdb) tem que estar fechado Da pra você remover os menus, salvar o arquivo, copiar o arquivo e salvar na mesma pasta como um arquivo temporário dando um Replace(CurrentDB.Name, ".accdb", "Temp.accdb") no nome dele e mandar gerar accde do arquivo temp fechado, depois dar um kill nele (no temp) e voltar os menus no que você ta aberto