
Elber Carretoni
Membros-
Total de itens
260 -
Registro em
-
Última visita
Tudo que Elber Carretoni postou
-
no seu caso então, pelo que entendi, você armazena registro de contas referente ao mês...certo? não seria mais eficiente armazenar a data inicial e data final?...acredito que desta maneira você criaria somente um registro para vários meses... acho que é isso que o "hummm" também disse... pense nisso...e caso realmente queira continuar com sua análise, vamos tentar encontrar uma solução... no aguardo, abraços!
-
Fera... o que seria essa previsão de teclas no formulário e como faço para habilitá-la? vlw...
-
Malj, andei fazendo os teste, porém não obtive êxito... referente à programação, não foi encontrado nenhum erro...entretanto, ainda assim continuo conseguindo realizar o CONTROL ALT DEL... Agradeço muito a atenção fera... os links fazem referência sim ao bloqueio, entretanto em outras linguagens, como também VB... estarei fazendo a pesquisa, e caso saiba de mais alguma coisa, por favor... Abraços, vlw!
-
Salve salve rapaziada... atualmente estou trabalhando num sistema de cadastramento aberto ao público, onde a pessoa senta em um terminal em rede com o banco de dados e faz pessoalmente seu cadastro... este formulário preenche todo o conteúdo da tela (docmd.maximize), não há nada exceto o formulário (sem barras de menus e comandos)... este formulário também fica aberto o tempo todo... Entretanto, não estou conseguindo fazer o bloqueio nas teclas Ctrl+Alt+Del e na teclas Windows Iniciar... Preciso bloquear estas entradas de modo que o usuário não consiga de maneira alguma sair do formulário, já que, pelo sistema, só é possível sair deste formulário com uma respectiva senha... tentei trabalhar no evento ao apertar tecla do formulário, indicando keycode como vbKeyControl, sem nem indicar a tecla ALT e DEL...entretanto, quando o usuário aperta a tecla CONTROL o sistema também não traz nenhuma resposta como deveria trazer no programado... conto com ajuda urgente... vlw a atenção galera...abraços!
-
não sei se entendi muito bem Malj, e me desculpe a ignorância caso eu não esteja certo, mas você quer por exemplo: há um lançamento de outubro2005 com índice de 5%... quando o lançamento de outubro 2006 for registrado, deve apresentar seu índice normal + o índice de outubro 2005? Sou bem menos experiente que você, mas pediria um pouco mais de detalhe na sua dúvida para que possa talvez ajudar e aprender também... Abração!
-
e aí bruno, conseguiu cara? fiquei de te mandar o bd hj de manhã, mas ontem foi maior correria e acabei esquecendo de pegá-lo no meu serviço para te enviar de casa... conseguiu implementar a programação?
-
menu FERRAMENTAS > UTILITÁRIO DE BANCO DE DADOS > GERENCIADOR DE TABELAS VINCULADAS vai lá que você encontra.. abraços...
-
bom bruno...como tinha te prometido, estou passando a solução, acredito que completa, da sua dúvida... fiz a programação para atualizar/cadastrar os materiais na sua tabela... me basiei em um formulário com dois campos ('txtMaterial', 'txtQuantidade')...o primeiro para infomar o ID do material...o segundo pra informar a QUANTIDADE que o usuário deseja acrescer/cadastrar... um botão é responsável por executar a ação principal do formulário (acrescentar/cadastrar material) na tabela 'tblMaterial', que tem dois campos ('Material_ID', 'Material_QTDE')... tenho o exemplo aqui e se você quiser te envio por e-mail hj depois das 23h ou amanhã de manhã (não consigo anexar pelo fórum)...entretanto, estou lhe enviando o código...dê uma olhada, veja se entende, e faça os testes... não dispenso a necessidade de uma boa revisão na estrutura de seu sistema, como o "hummm" opinou... de qualquer maneira, respeito sua solução...veja o que é melhor ao seu objetivo e adapte as melhorias... abraços. Private Sub cmdRegistrar_Click() On Error Resume Next Dim vSql As String 'declara vSql como texto 'VERIFICAÇÃO/VALIDAÇÃO DE DADOS: 'verificar se há texto digitado no campo txtMaterial e no campo txtQuantidade. Caso não, sai do procedimento If IsNull(Me.txtQuantidade) Or IsNull(Me.txtMaterial) Then MsgBox "Por favor, preencha corretamente os campos de Material e Quantidade", vbCritical, "Validação de Dados" Exit Sub End If '>>> INÍCIO DO PROCEDIMENTO CORRETO: ATUALIZAR/CADASTRAR MATERIAL >>> 'retira avisos do access DoCmd.SetWarnings False 'efetua pesquisa na tabela para verificar se o material digitado já se encontra cadastrado If DCount("[Material_ID]", "tblMaterial", "[Material_ID] LIKE '" & Me.txtMaterial & "'") = 0 Then 'se é nulo, quer dizer que o material não está cadastrado... 'CADASTRAR MATERIAL: vSql = "INSERT INTO tblMaterial (Material_ID, Material_Qtde) Values ('" & Me.txtMaterial & "','" & Me.txtQuantidade & "')" DoCmd.RunSQL vSql Else 'se não é nulo, quer dizer que o material já está cadastrado... 'ATUALIZAR QUANTIDADE: vSql = "UPDATE tblMaterial SET Material_Qtde=Material_Qtde + " & Me.txtQuantidade & " Where Material_ID='" & Me.txtMaterial & "'" DoCmd.RunSQL vSql End If 'retorna avisos do access DoCmd.SetWarnings True 'mensagem de sucesso de cadastramento para usuário MsgBox "SUCESSO!" & vbCrLf & "O material " & Me.txtMaterial & " foi registrado com sucesso!", vbInformation + vbOKOnly, "Entrada de Material" 'limpa os campos codigo material e quantidade de material Me.txtMaterial = Null Me.txtQuantidade = Null 'manda o foco para o campo txtMaterial Me.txtMaterial.SetFocus End Sub [/codebox]
-
bruno, concordo com o "hummm" que a análise do seu sistema está bem estranha... de qualquer forma não posso opinar muito, já que não estou muito a par... entretanto, acha mesmo que o sistema funcionaria da melhor maneira com a análise que você está utilizando atualmente?
-
isso bruno...o codigo para somar a quantidade está certo... só precisamos fazer agora o código para inserir o registr, caso o mesmo não se encontrar cadastrado.. to meio apertado no tempo aqui agora, mas amanhã "pósto" a solução pra você.. o que você pode fazer é uma dlookup que efetua uma pesquisa na sua tabela para verificar se o codigo digitado já existe...se essa dlookup não retornar nada, quer dizer que não se encontra cadastrado...então você tem que inserir a entrada do registro... caso a dlookup trouxer algo, então você manda atualizar (faz a linha de codigo que havia te passado em SQL)... deu pra entender a lógica? essa seria uma das soluções...
-
que bom que deu certo bruno... porém, vale considerar que o LIKE é usual pelo que o malj falow... entretanto, acredito que possa ser usado sem problemas...claro, isso depende muito das informações que você está comparando... por exemplo: se eu tenho na minha tabela, num determinado campo, um registro com a string ELBER, e no outro registro no mesmo campo uma string ELBERXXX... quando eu mandar pesquisar "...LIKE 'ELBER'", ele vai me trazer os dois registros (ELBER, ELBERXXX), já que o sistema buscou por informações parecidas, não completamente iguais (=)... vale considerar o parágrafo acima e realmente pensar se é viável ou não utilizar do LIKE...
-
bruno, não consigo baixar seu bd pois aqui de onde estou a internet possui servidor proxy....
-
é... sei que não faz uma pesquisa exata... entretanto, acho que quebra o galho... acredito que o like funciona perfeitamente igual ao operador "=", só dependendo do argumento que passamos...claro, dependendo também da fonte de critério que estamos utilizando para comparação... cabe agora determinar se é viável utilizar o like e aplicá-lo....
-
acho que entendi, apesar da confusão tremenda...rsrs vamos supor que na tabela de cadmat você tem a seguinte situação: MATERIAL QTDE ce001 100 depois você vai no formulário de entrada e digita: MATERIAL QTDE ce001 200 o resultado disso, na tabela cadmat, deve ser: MATERIAL QTDE ce001 300 CERTO? bom, se é isso, acho que é bem simples você resolver.... basta você gerar uma sql que pegue o valor encontrado mais o valor que você deseja acrescer... fiz os testes e deu certo: Dim vSql As String vSql = "Update tblMaterial Set Material_Qtde=Material_Qtde + 1000 Where Material_ID='ce001'" DoCmd.SetWarnings False DoCmd.RunSQL vSql DoCmd.SetWarnings True faça os testes aí e pode ter ctz que vai funcionar.... o que fiz na instrução sql foi acrescentar o valor de 1000 à quantidade que já havia para o material ce001... retorne os resultados ou qualquer dúvida... abraços!
-
pessoal... não tenho certeza que realmente funciona, já que nunca testei... mas quando forem fazer comparação de texto na dlookup, utilizem o critério "LIKE", em vez de "="... ..."[campo_tabela] Like 'STRING'") se alguém fizer o teste, diga se funcionou... abraços!
-
opa, mals a demora, agora que vi sua mensagem... cara...acredito que o problema esteja no critério da dlookup... por exemplo, se você esta usando um critério de número comparando com texto... não estou muito por dentro do que você esta querendo realmente fazer, mas o que pude perceber é que você está comparando um campo número com um valor string ('x')... tente retirar as aspas do critério e faça os testes novamente: descricao = DLookup("[DESCRIÇAO]", "CADMAT", "[COD_MATL] =" & me.COD_MATL) porém, desconsidere as minhas intuições caso o seu campo [COD_MATL] seja do tipo TEXTO... deu pra entender? abraços,
-
você tem de atribuir o resultado da dlookup a uma variável ou objeto... não há utilidade nenhuma em efetuar uma dlookup e não armazenar o resultado em algum local.... Por exemplo, atribuindo o resultado à uma variável: dim vRes as Variant vRes = DLOOKUP... capisca? faça os testes e confirme a solução, se realmente for satisfeita... abraços,
-
"O mecanismo de banco de dados não pôde bloquear a tabela "Nome_Tabela", pois ela já está sendo usada por outra pessoa ou processo." Pessoal, salve salve... o problema agora é a mensagem de cima aí que me atormenta! Tenho um formulário que não possui fonte nenhuma de registro... É um formulário que apresenta uma interface para o usuário efetuar consultas no banco de dados... neste formulário eu tenho um objeto listbox que lista pra mim os resultados da consulta, conforme a fonte de registro "Consulta_Cursos"... Entretanto, logo abaixo dessa listbox eu tenho um botão para imprimir um relatório, que é baseado na mesma consulta "Consulta_Cursos"... anteriormente não me deparava com este problema, mas agora quando tento mandar imprimir o relatório o access me retorna este erro citado acima...porque acontece? como faço para arrumar? vale lembrar que o sistema está em rede, divido em back-end e front-end...entretanto, é uma rede com apenas um servidor e 5 monitores de vídeo como terminais simulando os clientes...torna-se então uma rede com servidor de aplicação... Na realidade, quando acesso o sistema, independente de qual terminal seja, o access cria apenas uma informação de bloqueio...independente também de quantos terminais estão acessando o sistema, é como se o servidor estivesse abrindo o aplicativo somente uma vez, que é, teoricamente, realmente o que acontece... há neste mesmo formulário outros dois relatórios que tem como fonte de registro a mesma consulta, e que consequentemente também não funcionam... galera, dá um help aí, to precisando muito que isso funcione! desde já agradeço a atenção de todos... abraços,
-
visitante, obrigado pela resposta... mas gostaria de uma função que feche todos os formulários ao mesmo tempo, sem fechar o aplicativo..entendeu? neste caso, eu teria que programar o fechamento de formulário por formulário.. tudo bem, funciona, já que havia feito os testes e percebi que mandar fechar um formulário/relatório que não esteja aberto, não ocorre pau nenhum... porém, apenas por curiodade, gostaria de saber se há alguma função que feche todos os formulário automaticamente, sem que feche também o aplicativo... obrigado pela atenção...
-
isso, no caso eu citei o A, e coloquei-o direto na programação... acredito que você terá qualquer objeto no formulário que determine se a sigla será A, B, X etc... a partir de então você determina em uma variável qual a sigla escolhida no formulário, e em vez de jogar o A direto na programação, você joga a variável que estará em constante mudança conforme a interface do usuário... deu pra entender? o valor da variável tSt retornado pela função DLOOKUP é uma string? se sim, não é possível efetuar cálculos (+1, no caso) quando o tipo da variável não for completamente números (integer)... por isso que na programação que te mandei como exemplo, separei a parte inteira (só números) da sigla (string)...posteriormente concatenei as informações novamente... por exemplo: A123(string completa)... A(String separada)... 123(integer separados) ... 123+1=124(sequencial em numeração)... A124(string completa novamente) veja se o problema esta realmente nisso, e retorne os resultados... grande abraço,
-
Rapaziada, gracias... em um sistema, há a possibilidade do administrador efetuar logout e escolher outro modo de acesso... entretanto, gostaria de saber de alguma função que feche todos os formulários e relatórios automaticamente, já que é possível que o administrador abra vários formulários ou relatórios simultanemante... seria quase um QuitAll, porém sem encerrar o arquivo do access aberto... alguém poderia dar um help?
-
dexa eu ver se entendi: você quer fazer uma autonumeração, porém dividida por tipo de material da tabela de material...certo? bom bruno, se sua dúvida for esta aí de cima que perguntei, acho que tenho uma solução... fiz os testes aqui, e acabou dando certo... o que fiz foi pegar o último registro de um determinado campo que comece com uma letra (como exemplo, "A") cadastrado na minha tabela e incrementei o valor de +1 em sua parte numeral (A0001, A0002, A0003...A000N)... abaixo esta as linhas de código...veja se entende: 'TRAZER VALOR MÁXIMO DA tblCliente CONFORME A INICIAL DO CAMPO Dim vMax As Variant 'faz uma pesquisa na tabela cliente e traz o maior dado do campo código quando _ o início do campo for igual a A vMax = DMax("[Cliente_ID]", "tblcliente", "[Cliente_ID] Like 'A*'") 'RETIRAR PARTE NUMERAL DO ÚLTIMO VALOR ENCONTRADO ACIMA (SOMENTE NÚMEROS) Dim vLen As Integer, vRight As Long 'armazena quantidade de caracteres da string vLen = Len(vMax) 'retira todos os numerais da string, todos caracteres da direita, menos o primeiro vRight = Right(vMax, vLen - 1) 'SOMA +1 A VARIAVEL VRIGHT PARA GERAR A PRÓXIMA NUMERAÇÃO DE "A", E CONCATENA COM _ O VALOR INICIAL "A" NOVAMENTE Dim vAutoNum As String vAutoNum = "A" & Format(vRight + 1, "00000") o que você precisa fazer agora é, conforme os processos do seu formulário, determinar qual será a primeira letra do campo a ser pesquisada, se será A, ou B, ou C, ou X... deu pra entender? caso não, retorne a dúvida... no aguardo, abraços!
-
JFranco... Para aplicações em Delphi, o banco de dados FireBird é uma boa cara... é só uma sugestão...já pensou na hipótese? E como eu faço para converter o Banco em Access que já criei? Tem como fazer isso rapidinho (pois estou com meu prazo estourando)?... Obrigado. ixi cara...dae você me lasco...rsrs não tenho experiência com FireBird...só fiz meu tcc em delphi utilizando o firebird e nunca obtive problemas... em relação a exportar dados do access até posso te ajudar...agora, pra importar dados no firebird, dae já não sei... lamento.. . =/
-
bom, acabei descobrindo que todos os rg's apresentam um caractere somente posterior ao dígito, por exemplo xxxxxxxx-X... O que fiz então foi o seguinte: na entrada de texto do campo de RG, bloquiei praticamente o teclado inteiro, disponibilizando somente as teclas de numeração do teclado numérico numpad, as teclas de numeração do teclado texto e as teclas de letras...assim, o usuário não consegue digitar ponto, dígito, ou qualquer outra parafernalha... quando o usuário digitar então seu rg contendo números ou letras, sem nenhum espaço ou caractere indevido no meio, o sistema sozinhu concatena o "-" um caractere antes do final do rg... ao entrar no campo de rg novamente, o sistema retira o "-"...ao sair, coloca novamente... ficou bem parecido com uma máscara do access...entretanto, pra RG... em relação a Órgão do RG e UF do RG, coloquei estes dados em campos separados no formulário... posteriormente em relatórios concatenei estas informações fazendo do rg uma string só... se precisar, posto os códigos aqui posteriormente...é tudo bem simples... abração!
-
Consegui alguma coisa... na realidade, não consegui criar uma consulta pelo VBA, mas consegui alterar a instrução sql de uma consulta já criada...deu pra entender? abaixo segue a linha de programação comentada... alterei a instrução SQL da minha consulta e posteriormente indiquei que um objeto listbox recebesse o resultado desta consulta, ou seja, se atualizasse...vai lá: 'declara variáveis objetos de Database e Query Dim db As Database, qdf As QueryDef 'seta variavel db (database) com meu banco de dados atual Set db = CurrentDb 'seta variavel qdf (querydef) com minha consulta qCliente do meu banco de dados atual Set qdf = db.QueryDefs("qCliente") 'altera a SQL da minha varial qdf que, como está em conjuto, altera a instrução sql da minha consulta qCliente do meu banco de dados qdf.SQL = "SELECT C.Cliente_Nome FROM tblCliente AS C;" 'faz o objeto listbox (lstQuery) do meu formulário receber o valor da consulta qCliente Me.lstQuery.RowSource = qdf.SQL Bom, isso já ajuda bastante... mas gostaria de realmente criar uma consulta pelo VBA, não alterar a instrução de uma consulta... tamo ainda na correria pra isso! Retirei algumas informações do site "JR's Faq's"...créditos ao mesmo, gracias! Abraços,