
Gil Kléber
Membros-
Total de itens
93 -
Registro em
-
Última visita
Tudo que Gil Kléber postou
-
Lógico que posso postar.. tá aí o endereço: http://www.megaupload.com/?d=UXWAV92I é só executar o form, e clicar no botão do relatório. Espero que consiga me ajudar, senão vou ter que fazer no mínimo umas 15 consultas diferentes e pra cada uma delas, um relatório.. isso dai será uma mão na roda pra mim... grande abraço!
-
Opa! então, esse código, eu peguei de um exemplo. Ele evita que sejam cadastrados 2 vezes o mesmo cliente. Vou colar o código inteiro.: Dim Rst As Recordset, strCli As String Dim strIdade As String, strCep As String strCli = Me.nome strIdade = Me.idade strCep = Me.cep 'Abre o recordset do tipo Table. Set Rst = CurrentDb.OpenRecordset("SELECT nome, idade, cep From tbl_geral WHERE nome='" & strCli & "' AND Idade=" & strIdade & " AND CEP='" & strCep & "' ") If Not Rst.EOF Then MsgBox "Registro cadastrado na tabela! Preencha os dados novamente.", vbCritical, "Registro..." Cancel = True Me.Undo 'Else 'MsgBox "Registro não encontrado" End If Set Rst = Nothing Só que esse código, ele verifica em 3 campos ao mesmo tempo. Eu quero que ele verifique apenas o campo NUMGERAL (número). Ele não é chave primaria, porque eu tenho minha propria chave primaria (idCentral), mas eu uso esse campo pra me relacionar com outro (Numgeral é chave primária em outro). Resumindo a situação: Verificar na tabela "tblCentral", se já tem um registro com o campo "Numgeral". Isso tudo no evento "Ao Atualizar" da caixa de listagem "ComboProcurar". É isso meu amigo.. espero que possa me ajudar! Abraços! (abaixo como eu tentei fazer, mas como não consigo entender direito as "aspas" e os 'Apostrofo...) Dim Rst As Recordset, strCli As Integer strCli = Me.Numgeral 'Abre o recordset do tipo Table. Set Rst = CurrentDb.OpenRecordset("SELECT Numgeral From tblCentral WHERE Numgeral='" & strCli & "' ") If Not Rst.EOF Then MsgBox "Registro cadastrado na tabela! Preencha os dados novamente.", vbCritical, "Registro..." Cancel = True Me.Undo Else ' Encontrar o registro que coincide com o controle. End If Set Rst = Nothing
-
Oi pessoal.. estou tentando adaptar um código pra evitar registros duplicados, mas acho que estou errando em algum lugar... Set Rst = CurrentDb.OpenRecordset("SELECT Numgeral From tblCentral WHERE Numgeral='" & strCli & "' ") podem me dizer pra que servem as " aspas e os ' apóstrofos?
-
na verdade, quando clico no botão pra vizualizar o relatório, quando a opção 2 está selecionada. Só que eu fiz direto pela consulta, então o erro está lá.. se você deixa o form aberto, seleciona a opção 2 da moldura e clica na consulta, ele dá esse erro... mas só na opção 2, que seria os campos de critério em branco (tentei =" " mas não sei se é o correto.) abração!
-
Ai vai SELECT tbCliente.Nome, SomaValorPedidos.SomaDevalorPedido, SomaValorPago.SomaDevlPagto FROM (tbCliente INNER JOIN SomaValorPago ON tbCliente.idCliente = SomaValorPago.idCliente) INNER JOIN SomaValorPedidos ON tbCliente.idCliente = SomaValorPedidos.idCliente; O campo que não pode ficar em branco é SomaDeValorPago Obrigadão!
-
Bom dia amigos... Ontem a noite, tive a ideia de fazer um formulário pra acompanhar as ligações telefonicas pra negociação de orçamentos, remarcações, coisas assim... dai fiz uma moldura com 2 opções: Rel. Remarcações Opção 1 - Faltas Opção 2 - Detalhado dai coloquei 3 caixas de texto, cada uma correspondendo a um campo na consulta que será o corpo do formulário. A cada uma ela eu dei o nome de Var1, Var2, Var3: Var1 -> Contem os valores pro campo STATUS, na consulta Var2 -> Contem os valores pro campo FALTOU Var3 -> Contem os valores pro campo ATENDENTE Pois sim... no evendo AO ATUALIZAR da moldura eu coloquei: If me.Moldura=1 then me.var1="Marcado" me.var2=-1 me.var3="sandra" else me.var1="" me.var2="" me.var3="" end if porque, pra ter um relatorio detalhado, eu preciso que os 3 campos da consulta, tenham como critério, como se não tivesse nada escrito.. mesmo.. vazio! Dai na consulta, eu coloquei em criterio, dos campos que eu preciso, direcionando pra o formulario e pra varX... tipo... campo Status, critério tá: FORM![TELADECONSULTA].[VAR1] até aí belza.. lindo.. só que quando clico na 1, e abro o relatorio, funciona... mas no 2, ele dá a seguinte mensagem: This expression is typed incorrectly, or it is too complex to be evaluated. For example, a numeric expression may contain too many complicated elements. Try simplifying the expression by assigning parts of the expression to variables. (Error 3071) Acredito que seja por ter colocado os valores das caixa de texto como = "". Até declarei como STRING e tb tentei fazer ao invés de "" colocar isnull(me.var1), mas tb não mudou nada.. O que eu poderia fazer? Abraços a todos!
-
Desculpa, mas você poderia me mostrar como ficaria? to tentando e não tá dando certo...
-
Olá pessoal... Tenho um relatorio baseado em consulta, que exibi a soma dos pedidos e a soma dos pagamentos, depois subtrai... só que tem gente que tem pedido, e não pagou ainda.. como eu faço, pra esses registros (que são nulos), serem preenchidos com 0,00 ao invés de ficarem brancos? Tentei no evento "no atual" e "ao entrar", mas diz: Não é possivel atribuir um valor a esse objeto... tentei colocar no campo TOTALPAGO no relatorio =Nz([somaDevlPagto];0) mas o resultado é #erro o que estou fazendo de errado? Abraços!!!
-
Olá pessoal. Bom, faz 1 semana que me quebro a cabeça com isso, e desisto... não consigo mesmo tenho 3 tabelas tblCentral (idCentral, numGeral e Indicacao) dadosTratamento (Numgeral, dataStart, dataEnd...) dadosPaciente (NumGeral e mais um monte de campo.. é tabela ligada de outro BD (bem mal feito)) eu queria fazer uma consulta que adicionasse na tabelacentral, apenas os dados de dadosTratamento de pacientes que ainda não tivessem nenhum registro. Numgeral(dadosTratamento)<> Numgeral(tblCentral) Mas não tem reza que resolva isso.. alguma luz? postei o banco pra ficar mais facil.. http://www.megaupload.com/?d=PLECMIQ6 Agradeço a todos!!!! Abraços
-
Código para excluir registro em outra tabela
pergunta respondeu ao Gil Kléber de Gil Kléber em Access
Consegui, mas eu gostaria que quando clicar na caixa de verificação PAGO e ela estiver com valor TRUE, o access perguntasse se eu realmente desejaria excluir o registro de pagamento. Se sim, prossegue pra excluir, se não, não esclui e MANTEM a caixa de verificação PAGO como TRUE. Da tudo certo, só que quando clico em NÃO, ele não exclui o registro (até aí tudo bem), mas a caixa PAGO fica como NOT TRUE. Tentei fazer da seguinte forma, mas não sei nada de VBA, então... Private Sub pagoVerificador_Click() If Me.pagoVerificador = True Then DoCmd.OpenForm "frmPagarBoleto", acNormal, "", "", , acDialog Else If MsgBox("Tem certeza de que deseja excluir o registro de pagamento desta parcela?", vbYesNo, "Confirmar exclusão!") = vbYes Then Dim DB As DAO.Database Set DB = CurrentDb() DB.Execute "DELETE * FROM tblPagamentos WHERE idBoleto = " & Forms![frmEmitirBoleto]![frmsubEmitirBoleto].Form![idBoleto] Set DB = Nothing MsgBox "O registro de pagamento foi excluído" Else MsgBox "Nenhum registro foi excluido" Set DB = CurrentDb() Set RS = DB.OpenRecordset("tblDadosBoleto") RS.Edit RS("pagoVerificador") = True Set DB = Nothing RS.Close DoCmd.RunCommand acCmdRefresh End If End If End Sub Alexandre, sim. Tem o campo de data de pagamento. Eu quis apenas resumir a questão. Obrigado -
Olá pessoal. Ainda estou engatinhando no VBA, e me deparei com a seguinte situação: Tenho a tabela PARCELAS, com os campos: idParcela valorParcela dtVencParcela pago (S/N) e a tabela PAGAMENTO idPagamento idParcela dtPago vlpago a tabela PARCELAS é base pra um subformulário que se encontra no form GERAR PARCELAS. Quando clico no Botao Gerar, aparecem as parcelas automaticamente em modo folha de dados. Quero criar um evento no campo PAGO, pra se for igua a TRUE, ele me perguntar se quero realmente excluir o registro de pagamento (que se encontra na tabela pagamentos) Imagino que deveria usar algo como: Dim db as recordset, rs as recordser set db as "nome da tabela", depois verificar os código (idPagamento=forms![xxxxx]!{idpagamento] se sim, execute DELETE.. algumo assim. mas não sei como podem me ajudar?
-
Olá pessoal. Seguinte tenho 4 tabelas relacionadas DADOS_EMPRESA DADOS_FUNCIONARIO DADOS_EXAME TIPO_EXAME Cadas empresa tem vários funcionários. E cada funcionário realiza vários exames durante o ano (tem funcionário que tem 5, 6 exames cadastrados no mesmos ID_FUNC). A tabela TIPO_EXAME tem apenas 5 registros: id_tipo_exame Tipo_Exame 1 Admissional 2 Demissional 3 Periódico 4 Mudança de Função 5 Retorno ao Trabalho Quero fazer uma consulta, que me retorne apenas 1 registro de cada funionário, com a condição que o campo id_tipo_exame seja <> 2 (demissional) O problema é que quando eu coloco qualquer campo da tabela DADOS_FUNCIONÁRIO na consulta, ele já me retorna mais de um registro pra cada funcionário. O SQL da consulta está assim (coloquei a empresa de ID=63 como teste) SELECT DISTINCT dados_exame.idtipodeexame, Dados_empresa.ID_empresa, Dados_funcionario.Nome FROM Dados_empresa INNER JOIN (Dados_funcionario INNER JOIN dados_exame ON Dados_funcionario.ID_func = dados_exame.ID_func) ON Dados_empresa.ID_empresa = Dados_funcionario.ID_empresa WHERE (((dados_exame.idtipodeexame)<>2) AND ((Dados_empresa.ID_empresa)=63)) ORDER BY Dados_funcionario.Nome; Abraços!
-
Olá pessoal. Eu gostaria de passar a utilizar os hiperlinks, como nos modelos do access 2007. Só que os eventos dele sempre são macro incorporadas. eu tenho o seguinte código no evento AO CLICAR do botão EXCLUIR e queria chama-lo como um módulo, quando for inserir o hiperlink EXCLUIR. como eu crio o módulo? eu tentei, mas com certeza estou errando no cabeçalho e instruções finais.. não sou programador em VBA (em nada na verdade...) esse é o código que gostaria de chamar através do hiperlink Private Sub Comando152_Click() On Error GoTo Err_Comando152_Click If MsgBox("Tem certeza de que deseja apagar essa empresa? Todos os dados a ela relacionados serão apagados também.", vbYesNo, "Atenção pra não fazer merda!") = vbYes Then DoCmd.RunCommand acCmdSelectRecord DoCmd.RunCommand acCmdDeleteRecord Else Me.Nome.SetFocus End If Exit_Comando152_Click: Exit Sub Err_Comando152_Click: MsgBox "A ação foi cancelada. Nenhum registro foi apagado", vbInformation, "Ação Cancelada" Resume Exit_Comando152_Click End Sub
-
Olha eu aqui mais uma vez... É o seguinte, estou desenvolvendo um sisteminha bem simples pra academia. Na academia, o aluno paga a mensalidade para malhar durante o mês, até o próximo pagamento. Se ele deixar de ir no outro mês, não pode haver uma parcela pré-gerada, porque daí acusaria que ele está devendo sem na verdade estar, porque ele não malhou nesse mês. Aí é que está! Eu consigo gerar automaticamente as parcelas, quando tenho o VALOR, QUANTIDADE DE PARCELAS e DATA DE VENCIMENTO. Nesse caso, como eu deveria proceder? Pensei na seguinte situação. No ato da matrícula eu gero a primeira parcela, com data de vencimento baseada na caixa de listagem DIAVENCIMENTO que tem os numeros de 1 a 31. Toda vez que eu abrir o progama, ele verifica os alunos que tem boleto a vencer naquele dia e gera automaticamente. Mas acho que está muito trabalhoso.. o que vocês acham? ah.. aqui está o VBA do evento AO CLICAR no botão GERAR PARCELA Estou tentando tambem alguma forma de não gerar 2 parcelas com o mesma data de vencimento... se alguém puder me ajudar... Dim db As Database, rs As Recordset Dim I As Byte Dim stDocName As String Dim mes As Integer Dim ano As Integer Dim data As String Set db = CurrentDb() Set rs = db.OpenRecordset("tbMensalidades") mes = Format(Now, "mm") ano = Format(Now, "yy") For I = 1 To 1 data = Me.diaVencimento & "/" & Format(mes, "00") & "/" & Format(ano, "0000") rs.AddNew rs("dtVencParcela") = DateAdd("m", I, data) rs("vlParcela") = Me.vlPlano rs("idMatricula") = Me.idMatricula rs("geradoVerificador") = True rs.Update rs.Close db.Close DoCmd.RunCommand acCmdRefresh Next Brigado pessoal
-
Opa Avelino, eu usaria em SE NENHUM DADO, mas eu tenho dados pré-formatados lá, que é o TELEFONE E CRM do médico, então nunca está em branco.. entendeu? esse dado nunca muda, então está no relatório como um RÓTULO e não como uma CAIXA DE TEXTO... Abraço
-
Alexandre, apenas apareceu a mensagem "Não há AOS´s para serem impressos", depois aparece a janela do relatório apenas com os dados pré-impressos. E dai, tenho que fechar a janela manualmente mesmo...
-
Olá pessoal. Temos aqui 2 impressoras. 1 matricial, que fica no computador IMPRESSOR IP 10.1.1.50, de nome MATRICIAL (é uma epson lx-810) e a outra HP 1440, jato de tinta, que fica no computador DESKTOP. Todos os documentos são impressos na 1440. Exceto o ASO. O ASO precisa ser impresso na Matricial, porque é um formulário de 3 vias. Eu peguei esse código num site, que coloco no evento AO CLICAR do botão IMPRIMIR. O nome do relatório a ser impresso é relImprimirAso. Quando clico em imprimir, dá o seguinte erro: RUNTIME ERROR '5' Invalid procedure call or argument Quando clico em DEBUG, ele vai pra linha em NEGRITO, no meio do código. A versão do access é 2007 o que eu posso fazer pra resolver isso? Private Sub cmdOkImprimir_Click() Dim prtDefault As Printer Dim XPrint As Printer Dim prtTemp As String Dim prtPadrao As String Dim n As Integer 'Nome da impressora temporaria... prtTemp = "Matricial" 'Guarda o nome da impressora padrão Set XPrint = Application.Printer prtPadrao = XPrint.DeviceName 'Busca o numero da impressora temporaria For Each XPrint In Printers If XPrint.DeviceName = prtTemp Then Exit For End If n = n + 1 Next 'Efetiva a impressora temporaria como padrão Set Application.Printer = Application.Printers(n) 'Mostra os dados da impressora padrão Set prtDefault = Application.Printer With prtDefault MsgBox "Device name: " & .DeviceName & vbCr _ & "Driver name: " & .DriverName & vbCr _ & "Port: " & .Port End With 'imprime o relatório (etiqueta) DoCmd.OpenReport "relImprimriAso", acViewNormal 'Volta para a impressora padrão n = 0 For Each XPrint In Printers If XPrint.DeviceName = prtPadrao Then Exit For End If n = n + 1 Next Set Application.Printer = Application.Printers(n) End Sub
-
Olá pessoal. Esse é o meu primeiro tópico aqui! Tenho um relatório que recupera os dados da consulta consImprimirExame. Ele serve pra preencher cabeçalho em folhas pré-impressas de atestados de saúde. Então ele tem na estrutura dele apenas os campos ID_EXAME NOME_PACIENTE DT_VENCIMENTO etc... só que tem dois rótulos que são impressos em todos os atestados: NOME E TELEFONE DO MÉDICO O que eu queria é que quando eu clicar no botão, IMPRIMIR EXAME, e ele abrir o relatório IMPRIMIR_EXAME (esse relatório que estou consultando), ele faça a verificação se o campo ID_EXAME is null. Se for, coloque a msgbox de que NÃO HÁ EXAMES A SEREM IMPRESSOS e feche automaticamente a janela de pre-vizualização do relatório. o que eu fiz foi o seguinte: no evento ao carregar do relatório If IsNull(Me.ID_exame) Then Beep MsgBox "Não há ASO´s para serem impressos", vbInformation, "Fila de Impressão Vazia" DoCmd.RunCommand acCmdClose End If o que acontece é que ele abre, verifica, aparece a mensagem, mas quando vai fechar, ele dá o seguinte erro: RUNTIME ERROR '2585' Esta ação não pode ser executada durante o processo de um evento de formulário ou relatório. eu acredito que seja porque ele tenta fechar o relatório ao mesmo tempo que está carregando..mas já coloquei no evento AO ABRIR e não acontece nada. o que faço? aproveito pra perguntar qual seria a diferença entre AO ABRIR e AO CARREGAR Abraços a todos!