
Lameira
Membros-
Total de itens
77 -
Registro em
-
Última visita
Tudo que Lameira postou
-
Valeu Kuroi!!! Houve confusão quando transcrevi o código, brigadu! :blush:
-
Olá Kuroi!!! Acho que não consegui expressar a questão... É o seguinte, a barra de rolagem funciona, para cima, para baixa e para os lados também... Minha dúvida: é possivel rolar o conteúdo da MSFlexGrid, posicionando o ponteiro sobre a grid e rolando o scroller do mouse??? Se isso ocorre naturalmente não configurei o componente corretamente..., é certo que não estou conseguindo rolar o conteúdo pelo scroller. Creio que existe um jeito de fazer isso, por isso continuo no aguardo :blink: .
-
Olá Galera! Existe alguma forma do botão scroller do mouse atuar num MSFlexGrid, por exemplo, quando existirem muitos dados ao invés de atuar somente nos botões da grid eu acionar o scroller do mouse e obter o mesmo resultado? +1vez grato :rolleyes:
-
Olá Galera!!! Mais uma vez eu preciso de um help; tenho um sistema que permite ao usuário alterar a cor dos componentes (.BackColor) através do CommonDialog que antes era chamado através do Menu form Principal e eu fiz uma alteração (o Menu foi eliminado do Form Principal) para que o componente fosse chamado através de um ToolBar (que abre um Menu Pop-up), copiei e colei o código e o objeto no formulário do menu Pop-up: CommonDialog1.CancelError = True CommonDialog1.Flags = cd1CCRGBInit CommonDialog1.ShowColor , porem começou a dar um erro, indicando que a variável "cd1CCRGBInit" não é definida(???), não entendi o que aconteceu... preciso de mais uma ajuda :blink:
-
Uso do mesmo recordset em vários formulários
pergunta respondeu ao Lameira de Lameira em Visual Basic
Legal Kuroi, é melhor deixar como está porque a possibilidade de abrir mais que 1 formulário vai ocorrer com certa frequencia. Mais uma vez, grato -
Tenho um projeto em VB6 e nele existe um recordset (ex. pro) que é utilizado em vários formulários (ex. Cadastro, O.S., Relatórios), o mesmo é declarado em todos os formulários que se utilizam dele. Existe como enxugar o código, declarando o recordset uma vez (ex. num módulo) para ser usado nos outros formulários? É usado também o componente Data e o banco de dados é o Access Não sei se a forma é a mais correta mas declaro o recordset nos formulários que utilizam o recordset dessa forma: Dim base As Database Dim pro As Recordset e da mesma forma os forms são carregados dessa forma: Private Sub Form_Load() Set base = OpenDatabase(App.Path & "\bd.mdb") Set pro= base.OpenRecordset("select * from pro") Set datapro.Recordset = pro End Sub O sisteminha funciona bem e não apresenta erros, é apenas uma questão se saber se da maneira que está é a correta ou se é possível enxugar o código, ou seja, declarar o recordset e conectar o banco de dados (o código do Form_Load) uma vez só através num módulo; desde já fico grato pela cooperação :rolleyes:
-
Navegação automática através de um toolbar.
pergunta respondeu ao Lameira de Lameira em Visual Basic
Olá Kurói!!! Muito obrigado pelo código, realmente funciona de maneira muito satisfatória, colei o código no meu programinha e beleza. Valeu por mais esta ajuda!!! -
Navegação automática através de um toolbar.
pergunta respondeu ao Lameira de Lameira em Visual Basic
Kuroi, você poderia postar um código como exemplo, vou inserir dois botões (CommandButton) somente com esta função (<< e >>). fico grato. -
Olá Kurói!!! eliminei a linha e o sintoma continuou porque o Form_Activate do form Cadastro não está sendo executado quando chamado pelo form Cadastro (ainda não entendi o por quê isso acontece), fiz o seguinte, como são poucas linhas - definição do BackColor do form - fiz a chamada delas junto com a do form da O.S.; funcionou.
-
Olá Kuroi!!! pra eliminar qualquer dúvida eu alterei o código para: os.BackColor = cor!funcor lprotos.BackColor = cor!funcor pesqnumos.BackColor = cor!funcor e o problema persistiu..., só não consigo entender o por quê do Form_Activate não roda quando o form é chamado desta maneira, porque quando é pelo form Principal o form Cadastro roda direitinho.
-
Olá Kuroi!!! Acho que não expliquei direito, O código tá rodando certinho quando é chamado pelo ToolBar do form Principal , o problema é que estou tentando deixar o sisteminha mais dinâmico e, enquanto o usuario estiver fazendo a digitação se a pesquisa (primeiro código postado) identificar que o produto não está cadastrado no BD, o form do Cadastro é chamado automaticamente (segundo código postado), verifiquei através do BreakPont toda a sequencia que o sisteminha faz, ele carrega o Form_Load, depois joga o foco na ficha de Produtos e em seguida executa uma rotina que prepara o sistema para um novo cadastro, só não executou o Form_Activate do form Cadastro e não carregou os códigos que ali estão, isso só acontece quando ele é chamado através do form O.S. Os dois códigos estão no primeiro bloco CODE O código atual está rodando assim: Private Sub despro_Change() If despro.SelStart = 0 Then Exit Sub On Error Resume Next Set pro= bd.OpenRecordset("select top 1 despro, codpro, qntpro FROM pro WHERE despro Like '" & Mid(despro.Text, 1, despro.SelStart) & "*' ORDER BY despro Asc") Set datapro.Recordset = pro On Error GoTo verror verror: Select Case Err.Number Case 3021 cadpro = MsgBox("Não há produto com a(s) inicial(is) " & "'" & despro.Text & "'" & " Deseja fazer esse cadastro?", vbDefaultButton2 + vbQuestion + vbYesNo, usuario) Select Case cadpro Case 6 caddiv.Show , Me caddiv.sstab1.Tab = 4 a = despro.Text Call caddiv.NovoCad Exit Sub Case 7 despro.SetFocus Exit Sub End Select Case 0 Pos = despro.SelStart desproEnd Sub Mas funciona com esta deficiencia: o código do Form_Activate não roda e uma das consequencias é que o form de Cadastro fica sem a cor definida pelo usuário. Acho que agora ficou mais claro, desde já agradeço o esforço e cooperação
-
Olá Kuroi!!! !funcor, ou melhor cor!funcor é o conteúdo do BD que define a cor de fundo (BackColor) dos componentes do form; o usuário tem a esta opção, é uma forma de deixar o usuario definir isto (+- parecido com a configuração da tela do Windows). permaneço no aguardo.
-
Olá Galera do Bem!!! Num sistema existe um form de O.S. e um form de Cadastro com o componente "SSTab" onde Produtos está no tab 4; nos dois forms existe um código de "digitação inteligente" que enquanto o usuário vai digitando o sistema busca no BD o primeiro registro com aqueles dígitos, tipo: If despro.SelStart = 0 Then Exit Sub On Error Resume Next Set pro= bd.OpenRecordset("select top 1 despro, codpro, qntpro FROM pro WHERE despro Like '" & Mid(despro.Text, 1, despro.SelStart) & "*' ORDER BY despro Asc") Set datapro.Recordset = pro On Error GoTo verror verror: Select Case Err.Number Case 3021 MsgBox "Não há Produtos com a(s) inicial(is) "'" & despro.Text & "'" cadastrado no estoque!!!", 48, usuario codpro.Text = "" despro.Text = "" qntpro.Text = "" Case 0 'nenhum erro Pos = despro.SelStart With pro codpro.Text = !codpro despro.Text = !despro qntpro.Text = !qntpro End With despro.SelStart = Pos despro.SelLength = Len(despro) End Select despro.SetFocus Vamos supor que o usuário vai preencher uma O.S. e enquanto digita a descrição do produto, o sistema alerta que não existe nenhum produto cadastrado com aquelas iniciais. A idéia é substituir o MsgBox do código acima por outra que haja a opção de abrir o form de Cadastro para adicionar este produto no BD, usei este código: cadpro = MsgBox("Não há produtos com a(s) inicial(is) " & "'" & despro.Text & "'" & " Deseja fazer o cadastro deste produto?", vbDefaultButton2 + vbQuestion + vbYesNo, usuario) Select Case cadpes Case 6 caddiv.Show , Me caddiv.sstab1.Tab = 4 caddiv.despro.Text = despro.Text Call caddiv.NovoCad Exit Sub Case 7 Exit Sub End Select O objetivo é abrir o form de Cadastro(1), exibir o Tab 4 (2), descarregar o conteúdo do TextBox do form da O.S. no form de Cadastros e executar o código de um novo registro que é o seguinte: If sstab1.Tab = 4 Then MsgBox "Você está inserindo um novo produto", 48, usuario frmpro.Enabled = True LimpaCampos despro.Visible = True despro.SetFocus On Error GoTo verror pro.MoveLast codpro.Text = pro!codpro + 1 verror: Select Case Err.Number Case 3021 MsgBox "Primeiro registro", 48, usuario codpro.Text = 1 Resume Next Case 0 Resume Next End Select cadpro.Text = Date pro.AddNew End If O sistema está funcionando, mas existem alguns códigos que estão no form_Activate que não estao rodando, por exemplo, existe um código que altera a cor de fundo do form como este: 'define a cor de fundo do formulário On Error GoTo verrorcor cor.MoveFirst verrorcor: Select Case Err.Number Case 3021 'tabela vazia MsgBox "Cor de fundo ainda não definida", 43, usuario Resume Next Case 0 'nenhum erro With cor os.BackColor = !funcor lprotos.BackColor = !funcor pesqnumos.BackColor = !funcor End With End Select que não está rodando e o form de Cadastro fica sem esta definição. Sei que aqui tem Fera que pode me ajudar, por isso deste já agradeço e fico no aguardo.
-
por acaso o seu form principal ocupa a tela toda?? tenho a impressao q o outro form some, porque você pondo foco no principal, o principal entra na frente do primero. assim parece q ele some, mas ele so esta atras do principal. se você apertar Alt + TAB, não consegue localizar o form q sumiu?? imagino q o motivo seja o q eu falei acima. pra resolver isso tenta por, na hora de chamar o form, tipo assim: agenda.Show , Me não costuma interferir não. Olá Kuroi, realmente o Principal está com tela cheia e os forms não somem, ficam escondidos mesmo; acrescentei o ', me' e resolveu o problema, você matou a charada. VALEU!!! Brigaduuu!!! Agora creio que cheguei ao final desse projeto.
-
Olá Kuroi, minha questão estava sendo em fazer com que, caso o usuário digitasse algo errado o cursor retornasse um caracter quando pressionado o BackSpace, a partir do último caracter digitado, criei essa rotina e deu certo. If KeyAscii = 8 Then ' tecla BackSpace apaga o último caracter da TextBox, a partir do último digitado. Dim x As Integer x = Len(nommotos.Text) - Pos For i = 1 To x nommotos.Text = Left(nommotos.Text, Len(nommotos.Text) - 1) ' apaga o último caracter nommotos.SelStart = Pos Next End If você citou que o BackSpace deve apagar normalmente..., concordo, mas usando o código de busca acima (primeira parte, no topo de tópico) o que acontecia é que o BackSpace eliminava o último caracter do resultado da pesquisa, mas a digitação era antes do primeiro caracter(?!?!?!), o que poderia causar confusão para o usuário caso ele não percebesse isso, além disso, a intensão era que o BackSpace atuasse também sobre o que estava sendo digitado e não sobre o resultado da pesquisa; com este código logo acima tanto o BacSpace como o cursor ficam na posição correta (após o último caracter digitado) e a pesquisa continua sendo executada. mais uma vez, grato pelo seu auxílio.
-
Kuroi, abaixo está a forma como estou chamando os forms através do Form Principal, isso é feito através de um ToolBar Private Sub Tbprinc_ButtonClick(ByVal Button As MSComctlLib.Button) Select Case Button.Index Case 1 agenda.Show Case 2 cadastro.Show Case 3 os.Show Case 4 relatorios.Show Case 5 'fecha os Recordset cli.Close os.Close forn.Close fun.Close 'fecha o BD basetelpri.Close 'descarrega os Recordset da memória Set cli= Nothing Set os= Nothing Set forn= Nothing Set fun= Nothing 'descarrega o BD da memória Set base = Nothing 'encerra o programa End End Select End Sub Chequei todos os forms e, em todos a propriedade 'ShowInTaskBar ' bem como a 'Visible' já estavam setadas em 'True'; em cada form eu uso somente no botão 'Sair' o Unload Me e mesmo assim o que acontece é que quando eu chamo um formulário o outro some da tela, é bom ressaltar que o form Principal permanece na tela e depois que fiz as alterações que você sugeriu no Activate de cada form, o conteúdo, apesar dos forms sumirem da tela, se mantêm (VALEU!!!). O dilema permanece em compreender o por quê o formulário some quando chama o outro pelo form Principal(!?!?!?). Tentei dar um jeito, criando um ToolBar em cada form, assim eu faço a chamada dos outros forms de dentro do form e não somente pelo form Principal (ex: pelo form O.S. eu posso chamar o de Cadastros), desse jeito o form não some da tela e é criado um botão na Barra de Status do Windows; eu consigo selecionar e trabalhar em todos os forms clicando em cada um deles ou através da Barra de Status. Funcionou, é verdade, mantenho todos os forms na tela, mas confesso que ficou esquisito ter dois ToolBar em cada form... Uma dúvida: Se eu tenho um form aberto (ex: Principal) e eu chamo outro form (ex: O.S.) e por motivo tal eu tenho que chamar outro form pelo Principal (ex: Cadastros), o que o sistema entende??? Eu notei que basta clicar sobre o botão do ToolBar no form Principal que o do O.S. some da tela para depois abrir o form Cadastro (!?!?!?). Outra dúvida: o unLoad Me, quando chamado de dentro de um form ele tambem interfere em outros forms??? Por favor dê uma checada nesta rotina e vê se existe mais algum erro, fico no aguardo.
-
Beleza Kuroi, realmente no Activate existem códigos que alteram o form e ai todos os campos são desabilitados e ficam do jeito de quando o form é chamado pela primeira vez, ou seja todos os campos são desabilitados forçando o reinício de todo processo. Uma dúvida: Se eu estou com um form aberto, ex: O.S., porque quando eu chamo outro form, ex: Cadastro, o form de O.S. é apagado da tela sendo que não existe nenhum comando para isso???, minha intenção é que os dois fiquem abertos e não haja necessidade de chamar novamente o form O.S., tem jeito para isso??? Agradeço a paciencia e fico no aguardo.
-
vi q você editou o post depois q eu postei... não sei se você conseguiu resolver, mas... não tem porque o formulario anterior mudar os dados, a não ser q você esteja modificando os dados deles você mesmo a partir de outro form. você provavelmente pode estar fazendo isso "sem querer" se tiver usando variaveis globais. exemplo, se você usa o mesmo recordset pra buscar dados nos dois forms, é claro q se você usa-lo em um dos formularios, o valor sera alterado tb para o outro. Ok Kuroi, a minha dúvida é a seguinte, vamos supor que eu abra o form de O.S. e que neste form eu vou liberando os campos gradativamente, ou seja, depois que eu selecionei o Cliente eu habilito o campo de Produtos e etc, mas que por algum motivo, no meio desse processo eu tenho que abrir o form de Cadastros; o que está acontecendo é que quando eu volto para o form da O.S. o campo de Produtos foi desabilitado e eu tenho que reiniciar todo o processo de preenchimento da O.S., relembrando que eu estou chamando os meus forms como 'não modal': cadastro.show os.show tens alguma sugestão??? Fico no aguardo. abçs
-
vlw, brigaduuuu
-
eu sempre me confundo com essa questão de modal, eu abro os formulário com o form.show, será que é isso??? faço a chamada desta maneira só que quando eu abro um outro formulario e retorno ao formulário anterior ele já não está igual ou alguns dados se perderam... continuo precisando de auxílio grato
-
Olá pessoal!!! Gostaria de saber se em VB6 é possível abrir mais de um formulário ao mesmo tempo; ex: tenho um formulário de Cadastro de produtos e ele está quase todo preenchido e eu tenho que abrir um outro formulario, é possível manter os dois formlários abertos e preservar os dados do cadastro de produto que ainda não foram salvos??? vlw
-
Olá galera do bem!!! Tenho um projetinho funcionando mas estou querendo incrementar a forma de navegação pelo Banco de Dados, é o seguinte, estou usando uma toolbar com alguns botões de navegação do tipo "'<<' '<' '>' '>>'" e minha idéia é a seguinte, quando o usuário pressionar o botão '<' ou o botão '>' os registros são alterados, ou seja, se o registro n°1 com todas as suas informações, estão sendo visualizados ao pressionar o botão '>' por um determinado tempo, vão sendo apresentado os registros/informações seguintes ou seja, 2, 3, 4, ... e vice-versa ('<' para ..., 4, 3, 2, 1). Estou usando o método data.Recordset.MovePrevious e data.Recordset.MoveNext a idéia seria criar uma rotina (ou função, não sei ao certo) que se o botão for pressionado por um determinado tempo o registro vai "pulando de um em um", mas até agora não consegui desenvolver nada. Como tem muita fera por aqui sei que vão me ajudar. VALEU!!!!!
-
Olá Galera do Bem!!! Há um tempo atras eu pedi um código para "auto completar" num TextBox e deu certinho, o projetinho já está funcionando belezinha, mas falta um detalhe, quando eu começo a digitar e se por acaso eu queira mudar/voltar algum caracter eu não consigo (ex BackSpace, tecla '<-'), ai eu tenho que apagar o conteúdo e começar tudo de novo. O código que está em uso é este: Dim Pos As Integer If nommotos.SelStart = 0 Then Exit Sub On Error Resume Next 'filtro para pesquisa de registros Set mot = baseos.OpenRecordset("select top 1 nommot, codmot, modmot, plamot FROM mot WHERE nommot Like '" & Mid(nommotos.Text, 1, nommotos.SelStart) & "*' ORDER BY nommot Asc") Set datamot.Recordset = mot On Error GoTo verror verror: Select Case Err.Number Case 3021 'tabela vazia MsgBox "Não há motoqueiros com a(s) inicial(is) " & "'" & nommotos.Text & "'", 48, usuario nommotos.Text = "" veios.Text = "" Case 0 'nenhum erro Pos = nommotos.SelStart With mot codmotos.Text = !codmot nommotos.Text = !nommot veios.Text = IIf(IsNull(!modmot), "", !modmot) & ", " & IIf(IsNull(!plamot), "", !plamot) End With nommotos.SelStart = Pos nommotos.SelLength = Len(nommotos) nomclios.Enabled = True End Select eu preciso incrementar o programa, tendo a opção de usar a tecla BackSpace(<-) para alterar o conteúdo da TextBox, apagando caracter por caracter. Estou usando o código If KeyAscii = 8 Then nommotos.Text = Left(nommotos.Text, Len(nommotos.Text) - 1) ' apaga o último caracter End If mas o efeito não é o esperado, apesar de apagar o último caracter cada vez que aciono a tecla BackSpace, o cursor fica no primeiro caracter e se o usuário não prestar atenção vai digitar na primeira casa da TextBox e uma nova pesquisa se inicia a partir do último caracter é digitado, a idéia é que o cursor fique após o último caracter e a pesquisa se desenvolva a partir do que foi digitado. desde já eu agradeço Lameira
-
Valeu fera!!! o Select ficou assim: select top 1 nommot, modmot, plamot FROM mot... brigaduuuuu
-
E ai galera do bem!!! Estou no meio de um projetinho e pretendo fazer uma O.S. onde o usuário digita as iniciais de um nome e é feito a busca no banco completando o conteúdo, estou usando o seguinte código: Private Sub motos_Change() Dim Pos As Integer If motos.SelStart = 0 Then Exit Sub On Error Resume Next 'filtro para pesquisa de registros para determinado dia Set mot = baseos.OpenRecordset("select top 1 nommot FROM mot WHERE nommot Like '" & Mid(motos.Text, 1, motos.SelStart) & "*' ORDER BY nommot Asc") Set datamot.Recordset = mot Pos = motos.SelStart motos.Text = mot!nommot veios.Text = IIf(IsNull(mot!modmot), "", mot!modmot) & " ," & IIf(IsNull(mot!plamot), "", mot!plamot) -> falha na busca no BD motos.SelStart = Pos motos.SelLength = Len(motos) End Sub No TextBox "veios.Text" eu preciso carregar com as outras informações, porem a caixa fica em branco, porque dá uma falha nos itens do BD (mot!modmot e mot!plamot) "Item não encontrado nesta coleção". desde já agradeço Lameira