
Gil Kléber
Membros-
Total de itens
93 -
Registro em
-
Última visita
Tudo que Gil Kléber postou
-
Olá pessoal! Bom... como programador inexperiente, as vezes começo a fazer um BD e quando vejo tem algumas consultas, tabelas, relatórios e forms que não usarei mais. Existe algum utilitario, algum processo, algum FEITIÇO que faça uma análise em todo o BD e veja o que eu poderia apagar e o que eu não poderia? tipo.. a consulta Consulta1 não tem está sendo utilizada como base de dados em nenhum form, nenhum relatório, nenhuma outra consulta, nenhum código VB. você pode apagar... Será que existe? Assim, ficaria muito mais ENXUTO!! Abração a todos!
-
Opa! Bom.. ao receber focus, quando clicado com o mouse não funcionou, mas no evento AO RECEBER UM CLIQUE funcionou! muito obrigado!!
-
Bom dia pessoal! Bom, é uma duvidazinha bem simples, mas que facilita bastante a aplicação. Um pequeno detalhe! Como eu faço, pra quando o campo DATA_LANCAMENTO for clicado com o mouse, ir pra o INICIO do campo? é que assim, não tem que teclar HOME, ou ir com a seta, nada disso.. ganha-se 1/2 segundo... alguém sabe? tentei algo com a função LEN mas não tive sucesso... Abraços!!!
-
Perfeito!!! Valeu !!
-
Oi pessoal! Bom, não vou me estender com grandes explicações, porque minha dúvida é muito objetiva. Criei uma consulta que cria uma tabelaX com os campos VALOR DATA DETALHES Eu preciso, que essa consulta, me crie um campo em branco ENTRADA_SAIDA, que vai ser atualizado por outra consulta depois. Como eu faço isso? Obrigado pessoal! Abraços!
-
Agradeço muito a sua ajuda! Me foi muito esclarecedor, mas acabei fazendo de um jeito mais trabalhoso, porém foi o que resolvi na hora, porque tinha que resolver logo isso. Mas com certeza, o seu jeito é mais "profissional" então vou testar as alterações sugeridas e depois posto o resultado. O que fiz foi "montar" meus próprios botões de navegações e colocar o seguinte código em cada um, alterando apenas a linha docmd.GoToRegister... Muito Obrigado! If Me.Tipo = "cheque" And Not IsNull(Me.bancoCheque) And Not IsNull(Me.numeroCheque) And Not IsNull(Me.dataCheque) And Not IsNull(Me.titularCheque) Or Me.Tipo <> "cheque" Or Me.Entrada_saida = "entrada" Or IsNull(Me.Data) Then DoCmd.GoToRecord , , acNext Else MsgBox "Preencha os campos em branco!!!", vbInformation If IsNull(Me.bancoCheque) Then Me.bancoCheque.SetFocus ElseIf IsNull(Me.numeroCheque) Then Me.numeroCheque.SetFocus ElseIf IsNull(Me.dataCheque) Then Me.dataCheque.SetFocus Else Me.titularCheque.SetFocus End If End If
-
Acho que isso vai resolver sim, mas teriam 2 questões pendentes ainda: Eu preciso verificar isso, ANTES de sair do registro.. e só no caso do pagamento ser feito em cheque. Como fazer? tudo bem.. acho que pro pagamento em cheque, faria algo do tipo: if me.pagamento="cheque" then verificaCampos Me else end if mas como fazer pra verificar esse campos ANTES de sair do registro? Obrigado pela ajuda!
-
Olá Pessoal! Depois de algum tempo de sossego, eis aqui mais um dúvida. Pequena, mas que está me tirando a paciencia... vejamos se alguém poderia me dar uma solução. Era uma vez, um formulário onde se faziam os registro de pagamento, com os campos: dtPagto tipoPago(dinheiro, cheque, cartão...) valor... e os campos complementares, para os pagamentos feitos em Cheque, dtCheque numCheque bancoCheque titularCheque Pois bem.. gostaria de FORÇAR o preenchimento de todos! Fiz algumas coisinhas que me ajudam, por exemplo: no campo numCheque, ele verifica se o anterior (dtCheque) foi preenchido.. e sussessivamente. Mas, se a pessoa que efetuar o lançamento não se utilizar da tecla TAB e sim do mouse, e depois de preencher apenas o campo dtCheque, por exemplo, clicar no botão de navegação de registro e pular pra o próximo, ele vai aceitar... Então a questão é, tem como, ANTES de sair do registro, ele verificar se o tipo de pagamento = Cheque e que TODOS os campos complementares estão preechidos? E se não estiverem, Mostrar uma mensagem e depois mover o foco pra o campo em branco? Se houver como, usarei isso pra muitas outras situações. Realmente será muito útil pra mim. Obrigado pela ajuda pessoal Abraços a todos!
-
Bom dia, feliz natal e feliz ano novo a todos!!!! Pessoal, após um pequeno tempo de sossego e tranquilidade rs, apareço novamente com mais um erro esquisito. Usando sugestões recebidas aqui no fórum, configurei o meu formulário principal pra que executasse AoAbrir, um código que inicia junto ao formulário uma série de relatórios contidos na tabela tbRelatórios. Relatórios esses chamados CHEQUES_PRACOMPENSAR e CHEQUES_PRAHOJE. Quando não há nenhum evento, ele simplismente fecha o relatório e segue-se a vida normalmente. Abaixo vai o código contido na função AbreTodosRelatorios e o evento AO_CARREGAR do formulário principal Public Function AbreTodosRelatorios() 'By JPaulo ® Maximo Access Dim db As DAO.Database Dim rst As DAO.Recordset On Error Resume Next Set rst = CurrentDb.OpenRecordset("Select * from tblRelatorios ORDER BY ID ASC") Do While Not rst.EOF DoCmd.OpenReport rst![rptNome], acViewReport, , , acDialog rst.MoveNext Loop rst.Close End Function Evento AOCARREGAR do formulário MAINFORM Private Sub Form_Load() On Error GoTo Err_Form_Load Call AbreTodosRelatorios Exit_Form_Load: Exit Sub Err_Form_Load: Resume Exit_Form_Load End Sub O curioso é que ESTAVA FUNCIONANDO PERFEITAMENTE!!! Durante meses!!! Quinta-feira, ao chegar e iniciar o sistema é que eu esse erro. Copiei o BD pra outro computador, e deu o mesmo erro. Será que alguém pode fazer o download no link http://www.megaupload.com/?d=68AGDGXS , fazer um teste e ver se tem algo de errado? Muito obrigado a todos e mais uma vez BOAS FESTAS!!!!
-
Olá pessoal. Trago hoje mais uma questão que me complica a vida (nada é fácil nessa vida, impressionante!!!) Bom, tenho um BD que uso com umas tabelas de outro software interligadas. Então não posso alterar estrutura de nenhuma tabela. Tenho que sempre dar um jeito de me virar aqui.... Dentre essas tabelas, tem uma parcelas0 que contem o campo dataPago no formato (burramente) dd/mm/aa, mas em formato TEXTO. E preciso fazer uma consulta, pra fazer pesquisa restringindo a data de pagamento em DATA INICIAL e DATA FINAL. O campo PAGO é preenchido com um # quando é pago, e vazio quando não é. Tentei fazer assim, mas não tá dando certo: SELECT Parcelas0.Nome, Parcelas0.Pago, CDate([dataPago]) AS dataPago2 FROM Parcelas0 WHERE (((Parcelas0.Pago)="#") AND ((CDate([dataPago])) Between [Digite Data Inicial] And [Digite Data Final])); Ta dando o seguinte erro: "Tipo de dados incorretos na expressão de critérios" alguém consegue me ajudar? Obrigado pessoal!
-
Entendi. Vou fazer assim. Agora tenho mais uma questão ainda sobre esse mesmo tópico. Tenho uns ítens, que compôem o produto final. Por exemplo, cada cartucho vendido compreende: - Tampa - Rótulo - Embalagem acrílico - Sílica Gel Cada PEDIDO que sai compreende: 1 - Caixa de Papelão Então por exemplo, se o cliente pede 10 CARTUCHOS ROSA MÉDIO, preciso que ele dê baixa TAMBEM em: (os cartuchos tem varios tamanho e cores, na tabela produtos, os códigos compreendem de 1 a 26, então poderia existir uma verificação, todo cartucho vendido com idProduto entre 1 e 26 faz baixa de cada ítem relacionado encima. No entanto, cada pedido apenas 1 caixa de papelão) 10 - Tampas 10 - Rótulos 10 - Embalagens acrílico 10 - Sílicas Gel e apenas 1 CAIXA DE PAPELÃO, porque vai tudo na mesma caixa. (algumas coisas poderiam ser informadas manualmente, como por exemplo se foi tudo em uma embalagem só ou não) Mas por exemplo, se ele pede MUFLA, vai apenas uma CAIXA DE PAPELÃO Spray - Apenas caixa tb Cartucho TROCA - vai tudo MENOS a caixa ortodôntica. Como eu poderia fazer essa verificação e dar baixa nesses itens? Seria melhor eles ficarem na mesma tabela dos produtos ou em outra tabela? Grande abraço.. (to fritando a cabeça aqui, mas não to saindo do lugar...)
-
Humm.. fiz o que sugeriu. Me pareceu o mais simples e certo a se fazer. Criei a consulta com os dados dos funcionários e filtrando pelo Id_Empresa da empresa aberta no form principal. Ok. a consulta funciona substitui o nome da tabela pela consulta, no código. Beleza. Na hora que rodo, dá o seguinte erro: Erro em tempo de execução '3061'. Pouco parâmetros. 1 Esperado. em seguinda depurar, a seguinte linha fica em evidência Set rs = DBEngine(0)(0).OpenRecordset(strSQL, dbOpenSnapshot) Tem ideia do que poderia ser?? Abração!
-
Olá pessoal. Tenho um código de pesquisa que funciona PERFEITAMENTE. Aqui está: Private Sub txtPesquisa_Change() Dim strSQL As String On Error GoTo Rs_Fechado Pesquisa: mValor = txtPesquisa.Text If Len(mValor & "") = 0 _ Or Asc(mValor) = 32 Then 'Limpa espaços também. Call cmdLimpar_Click Exit Sub End If 'Na primeira vez, a rotina desviará para o rótulo 'Rs_Fechado, pois o Recordset ainda não foi aberto. 'Na 2ª vez em diante, a rotina prossegue normalmente. With rs .Filter = "Nome Like '*" & adhHandleQuotes(mValor, "'") & "*'" Set Rs1 = .OpenRecordset 'Move para último p/ fazer contagem na função PreencheLista If Rs1.RecordCount <> 0 Then Rs1.MoveLast lstRetorno.Requery End With Fim: Exit Sub Rs_Fechado: Select Case Err Case 91, 3420 'Ocorre só na primeira vez em que é pesquisado um item. strSQL = "SELECT ID_Empresa, Nome " _ & "FROM dados_empresa ORDER BY Nome" 'Cria um recordset bem rápido, pois é SnapShot. Set rs = DBEngine(0)(0).OpenRecordset(strSQL, dbOpenSnapshot) GoTo Pesquisa Case 5 'ocorre ao voltar com BackSpace, apagando o texto. Resume Next Case Else MsgBox "Erro nº " & Err & vbCrLf _ & Err.Description, vbCritical, "Erro" End Select Resume Fim End Sub No caso acima, ele procura todas as EMPRESAS cadastradas. Ótimo! Só que estou tentando fazer com que ele procure agora, os FUNCIONÁRIOS cadastrados! Beleza.. sem segredo: Aqui está o código: Private Sub txtPesquisa_Change() Dim strSQL As String On Error GoTo Rs_Fechado Pesquisa: mValor = txtPesquisa.Text If Len(mValor & "") = 0 _ Or Asc(mValor) = 32 Then 'Limpa espaços também. Call cmdLimpar_Click Exit Sub End If 'Na primeira vez, a rotina desviará para o rótulo 'Rs_Fechado, pois o Recordset ainda não foi aberto. 'Na 2ª vez em diante, a rotina prossegue normalmente. With rs .Filter = "Nome Like '*" & adhHandleQuotes(mValor, "'") & "*'" Set Rs1 = .OpenRecordset 'Move para último p/ fazer contagem na função PreencheLista If Rs1.RecordCount <> 0 Then Rs1.MoveLast lstRetorno.Requery End With Fim: Exit Sub Rs_Fechado: Select Case Err Case 91, 3420 'Ocorre só na primeira vez em que é pesquisado um item. strSQL = "SELECT ID_Func, Nome " _ & "FROM dados_funcionario ORDER BY Nome" 'Cria um recordset bem rápido, pois é SnapShot. Set rs = DBEngine(0)(0).OpenRecordset(strSQL, dbOpenSnapshot) GoTo Pesquisa Case 5 'ocorre ao voltar com BackSpace, apagando o texto. Resume Next Case Else MsgBox "Erro nº " & Err & vbCrLf _ & Err.Description, vbCritical, "Erro" End Select Resume Fim End Sub Só que assim. Tem uma rotina que depois que ele acha a empresa, por exemplo, aparece o nome dela na caixa de texto, você dá dois cliques e ele abre o cadastro da empresa. O problema é, eu quero que ele pesquise os funcionários APENAS da empresa que está CARREGADA (id_Empresa) no form CADASTROS_EMPRESA. Deu pra entender? senão, por exemplo, empresa A tem o funcionario Gil, Marcos e Marcelo. Eu abro o form LOCALIZAR FUNCIONARIO e quando digitar "gi" vai aparecer Girlando, Gilmar, Gil, Gildete. Ao invés de aparecer apenas Gil, porque a empresa aberta só tem esse funcionário que tem o nome iniciado com "gi". Tentei fazer algo como o código abaixo mas não deu muito certo... Private Sub txtPesquisa_Change() Dim strSQL As String On Error GoTo Rs_Fechado Pesquisa: mValor = txtPesquisa.Text If Len(mValor & "") = 0 _ Or Asc(mValor) = 32 Then 'Limpa espaços também. Call cmdLimpar_Click Exit Sub End If 'Na primeira vez, a rotina desviará para o rótulo 'Rs_Fechado, pois o Recordset ainda não foi aberto. 'Na 2ª vez em diante, a rotina prossegue normalmente. With rs .Filter = "Nome Like '*" & adhHandleQuotes(mValor, "'") & "*' & where Id_Empresa = Forms![Cadastro empresa]"[id_Empresa]" Set Rs1 = .OpenRecordset 'Move para último p/ fazer contagem na função PreencheLista If Rs1.RecordCount <> 0 Then Rs1.MoveLast lstRetorno.Requery End With Fim: Exit Sub Rs_Fechado: Select Case Err Case 91, 3420 'Ocorre só na primeira vez em que é pesquisado um item. strSQL = "SELECT ID_Func, Nome " _ & "FROM dados_funcionario ORDER BY Nome" 'Cria um recordset bem rápido, pois é SnapShot. Set rs = DBEngine(0)(0).OpenRecordset(strSQL, dbOpenSnapshot) GoTo Pesquisa Case 5 'ocorre ao voltar com BackSpace, apagando o texto. Resume Next Case Else MsgBox "Erro nº " & Err & vbCrLf _ & Err.Description, vbCritical, "Erro" End Select Resume Fim End Sub Eu não sei NADINHA sobre o código de cima.. será que alguém conseguiria me dar uma luz? Abraços!!!
-
Bom dia Leandro. Agora eu fiquei em dúvida. Qual o melhor a ser feito? Não dar baixa na tabela de estoque e deixar o campo SALDO como um campo calculado de subtração de entrada e saída ou dar a baixa na tabela e usar a tela de confirmação? No caso da tela de confirmação, o meu problema é que o botão CONFIRMAR estaria no formulário PEDIDOS e os ítens no subform DETALHES. Este, teria os campos idDetalhes, idProduto, nomeProduto, qtdProduto, valorUnitario, subTotal (qtd * valorUnitario). Dai como fazer pra, se tiver 15 produtos diferentes, o código atualizar na tabela os campos SALDO de todos os 15 de acordo com as quantidades? Eu fiz um, mas tipo, ele atualiza TODOS com a mesma quantidade, por exemplo, se vendi: 5 muflas 14 cartuchos pequenos 4 sprays quando clica em CONFIRMAR, ele atualiza na tabela os 3 itens como "5". Como eu poderia fazer?? Abração!
-
humm.. não sei se entendi direito. Isso aplicado à minha situação quer dizer exatamente o que??
-
Olá pessoal! Essa semana os probleminhas teimam em me acompanhar... vamos lá... Tenho a tabela de produtos com os seguintes campos tabProdutos idProduto nomeProduto saldoProduto EstMinProduto tabPedidos idPedido dataPedido valorPedido ... tabPedidosDetalhes idPedidoDetalhe idPedido idProtudo qdtProduto Bom... pra atualizar as tabelas tenho o formulário PEDIDOS que contem o subformulário DETALHESPEDIDOS que mostra a situação financeira do cliente, os registros de pagamentos em outro sub, enfim... o que eu gostaria, era de: SELECIONAR O PRODUTO na lista e APENAS depois de clicar em CALCULAR, de algum jeito, ele atualizasse na tabela PRODUTOS, campo saldoProduto, subtraindo de acordo com a quantidade do pedido. por exemplo (aqui tem uma foto da tela do sisteminha) http://uploaddeimagens.com.br/imagem/ver/9Pedido.JPG No pedido 98, fiz o pedido dos seguintes produtos: idProduto 18, Nome: Mufla, Qdt: 19 idProduto 29, Nome: Cartucho Medio Trans, Qdt: 24 depois que cliquei em CALCULAR, ele vai até a tabela PRODUTOS, e tira 19 itens do produto MUFLA e tira 24 do CARTUCHO MEDIO. E de quantos ourtos produtos estiverem no pedido. Será que é possivel??? Consegui colocar no evento DEPOIS DE ATUALIZAR do produto, deu certo, mas se por acaso, eu DESISTO de pedir aquele produto e peço o outro, PUMBA, já foi dado baixa... :( alguém me ajuda??
-
CONSEGUI !!!! Pessoal, pesquisando e pesquisando, após achar o código abaixo resolvi TODO o problema!!!!! Me.tamBairro = 20 - Len(Me.Bairro.Text) onde tamBairro é o caixa de texto independente que eu criei pra armazenar o valor digitado no campo. 20 é o limite de caracteres. Se o campo for aclopado em alguma tabela, basta usar o código abaixo pra recuperar o limite definido na estruta da tabela. Me.RecordsetClone.Fields("campo").Size Obrigado a todos!!!
-
cara... não soube nem por onde começar!!! rsrsrs
-
Não adiantou.. a mesma coisa.. ele não atualiza a medida que apertamos outra tecla... :(
-
Olá pessoal. Trago mais uma dúvida que está tirando meu sono... Tenho um formulario que preciso digitar os campos do cliente com limitadores de caracteres. Tem como contar INSTANTANEAMENTE os caracteres restantes? Por exemplo, se o limite do campo é 30 caracteres, a medida que você vai digitando, ele vai mostrando quantos caracteres ainda restam. Chegou no 0, ele bloqueia a edição, ou algo do gênero... Tentei com Len(campo) mas ele só mostra tipo quando abre, ou quando executa a função. Não mostra de 1 a 1... Ficarei muito agradecido por qualquer ajuda pessoal! Abraços!
-
Pessoal. Me enganei. Não tinha tentado com o numero do erro negativo If Err.Number = -2147352567 Then MsgBox "erro certo" End If Deu certo. Ficou assim... OK_Click_Exit: Exit Sub OK_Click_Err: If Err.Number = -2147352567 Then If Len(Nome) > 30 Then MsgBox "O Campo NOME é maior do que o permitido, por favor, faça algumas abreviações e clique em ATUALIZAR" Me.Nome.SetFocus ElseIf Len(Endereco) > 30 Then MsgBox "O Campo ENDEREÇO é maior do que o permitido, por favor, faça algumas abreviações e clique em ATUALIZAR" Me.Endereco.SetFocus ElseIf Len(Complemento) > 30 Then MsgBox "O Campo COMPLEMENTO é maior do que o permitido, por favor, faça algumas abreviações e clique em ATUALIZAR" Me.Complemento.SetFocus ElseIf Len(Bairro) > 15 Then MsgBox "O Campo BAIRRO é maior do que o permitido, por favor, faça algumas abreviações e clique em ATUALIZAR" Me.Bairro.SetFocus ElseIf Len(Cidade) > 15 Then MsgBox "O Campo Cidade é maior do que o permitido, por favor, faça algumas abreviações e clique em ATUALIZAR" Me.Cidade.SetFocus End If End If Resume OK_Click_Exit End Sub
-
Olá amigos.. trago mais um probleminha pra suas mentes iluminadas me ajudarem.... Estou usando um formulário que utiliza de alguns campos de outro form. Através da propriedade ORIGEM DO CONTROLE eu recupero os dados do cliente do form CADASTRO. Enfim. Só tem um probleminha. O tamanho do campo do MEU cadastro é livre... no segundo form, que na verdade é um LINK com o sistema de boletos do UNIBANCO, tem restrições quanto aos tamanhos do campo. Por exemplo, NOME = 30 carateres, ENDERECO: 30 Caracteres, CIDADE = 20 caracteres. Quando abro o segundo form e ele percebe que algum campo é maior que o permitido, ele dá o seguinte erro Erro tem tempo de execução '-2147352567 (800200009)': O campo é demasiado pequeno para aceitar o volume de dados que tentou adicionar. Tente inserir ou colar menos dados Eu coloquei umas instruções pra fazer essa verificação, mas o problema é que o tratamento de erro do VBA me parece ter prioridade maior, então é executado antes do meu. Até tentei fazer tratamento de erro, o que eu acho que deva ser o mais correto, mas não consigo "capturar" o erro pra poder tratá-lo :/ Tentei fazer da seguinte forma: Private Sub OK_Click() On Error GoTo OK_Click_Err o restante do código OK_Click_Exit: Exit Sub OK_Click_Err: If Err.Number = -2147352567 (80020009) Then MsgBox "Erro certo" Else MsgBox "erro errado" End If Resume OK_Click_Exit Tentei apenas com os numeros 2147352567 não deu certo. -2147352567 tb não deu certo, 80020009 tb não deu. Então tenho 2 perguntas: - Qual a forma correta de "capturar" esse erro e fazer o tratamento - Posso ao mesmo tempo identificar qual campo está maior do que o permitido e direcionar o setfocus imediatamente pra ele? Espero que alguém saiba como resolver isso. Obrigado amigos pela ajuda!
-
Opa Leandro! Deu certinho!!! O código ficou assim, pra quem quiser dar uma olhadinha. É bem simples. O campo tinha o conteudo assim: 02755-020 coloquei depois de atualizar do campo CEP me.cepNumeros = val(me.CEP) e o conteudo do campo ficou 2755020 Funcionou perfeitamente! Obrigado leandro!
-
Bom dia pessoal! Trago hoje mais uma dúvida... Vamos lá! Tenho um programa do UNIBANCO que emite os boletos bancários. Descobri que a base de dados é MDB. Pra não precisar digitar todos os dados do cliente e dos boletos duas vezes (no meu BD e no BD do sistema do banco) resolvi criar uma ligação entre as tabelas. Está dando certo, mas me peguei com um pequeno problema que pensei existir 2 meios de resolver. Vou explicar como pensei. ----- Primeira Situação O CEP no MEU cadastro, é formato texto, no formato 00000-000 (é armazenado assim tb). No BD do unibanco, o cep é Inteiro Longo. Logo, quando clico no botão pra atualizar os campos (trazer de uma tabela pra outra) ele fala que os tipos são incompatíveis. Primeira pergunta: - É possivel converter um dado Texto, armazenado como XXXXX-XXX pra numero formato XXXXXXXX? ----- Segunda Situação Mudar a estrutura do MEU BD pra Inteiro Longo. Não são muitos, eu poderia até redigitar os CEP´s se ocorresse uma perda de dados. Mas, acontecem duas coisas: - Quando o cep começa com "0", após digitar, ele armazena SEM o "0" a esquerda. Ex: Cep: 02752000, ele armazena como 2752000. Tem como contornar isso? - Eu uso o campo CEP no form CADASTRO DE CLIENTES, uma Combo, que quando digitado, ele busca o CEP automaticamente em uma tabela e atualiza os campos do endereço. Vai continuar funcionando se eu alterar o tipo do campo? Por favor, avaliem qual a melhor solução pra esse caso. Confio plenamente na capacidade de todos que nos ajudam aqui. Grande abraço!
-
Problemas ao tentar exportar um relatório para XLS
pergunta respondeu ao Gil Kléber de Gil Kléber em Access
Posto sim. Estou no interior da bahioa, onde só tenho ineternet 3g a 300k ficticiosrsrs segunda feiras estou de volta a são paulo, dai tenho como postar o BD. Segunda a noite já coloco o link aqui. Obrigado!