Ir para conteúdo
Fórum Script Brasil
  • 0

Tornando o Sistema mais interativo


Lameira

Pergunta

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.

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
o q é !funcor??

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.

Editado por Lameira
Link para o comentário
Compartilhar em outros sites

  • 0
mas você ta pondo no codigo !funcor ou cor!funcor?? cor é um RecordSet??

ele deve ta dando um erro nessa linha, mas você não ta conseguindo visualizar por causa do On Error GoTo verrorcor. comente essa linha e tente de novo.

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

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

  • 0
ainda acho q é o q eu falei no post de cima.

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.

Editado por Lameira
Link para o comentário
Compartilhar em outros sites

  • 0
de teste, apague a linha On Error GoTo verrorcor e tenta de novo.

veja se não vai dar nenhuma mensagem de erro.

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.

Editado por Lameira
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...