Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Identificar parte do texto dentro de uma frase e jogar respectivo valor em uma textbox

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Anderson Rafael
Colaborador
Colaborador
Mensagens: 28
Registrado em: Seg Mai 14, 2018 11:09 am

Identificar parte do texto dentro de uma frase e jogar respectivo valor em uma textbox

Mensagem por Anderson Rafael »

Ola meus caros,
Me encontro com outro problema, estou desenvolvendo um sistema com um banco de dados em access, se observarem o arquivo sao varios bancos, o principal chamado "Produtos" onde e registrado cada tipo de produto, e os demais bancos apenas o referencial para determinado codigo, os codigos servem para gerar um codigo de barras nos textboxs "txtCod1, txtCod2...", colocando o valor do codigo de acordo com o texto encontrado nos outros textboxs "Produto, composicao...". O objetivo do sistema e o seguinte entao, quando escrito alguma coisa no "Produto", por exemplo "Camisa social FEMININA manga CURTA", ao clicar no botao do codigo de barras ele busca nos bancos, no caso, no banco "Produto" o qual diz que as palavras "Camisa social" sao equivalente ao codigo "03", entao ele coloca o codigo 03 no campo "txtCod1", e assim sucessivamente nos outros campos, se "MASCULINO" entao "02" no "txtCod2"...
Mas testei de todas formas e nao consigo fazer funcionar, espero que possam me ajudar!!!
Anexos
SISTEMA DE PEDIDOS.rar
(182.33 KiB) Baixado 211 vezes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Identificar parte do texto dentro de uma frase e jogar respectivo valor em uma textbox

Mensagem por Reinaldo »

Onde diz "são vários bancos", na realidade e um único banco dividido em varias tabelas.
Em seu modelo são tabelas individuais, aparentemente sem correlação.
Recomendo ler/estudar sobre modelagem de banco de dados e relações entre tabelas; o que facilitará em muito seu uso/desenvolvimento da aplicação.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Identificar parte do texto dentro de uma frase e jogar respectivo valor em uma textbox

Mensagem por Reinaldo »

Na maneira que está desenhado sua aplicação/banco de dados, você precisa "desmontar" a descrição do produto em em pelo menos quatro "tópicos" e efetuar cinco consultas distintas a seu banco/tabelas --> Produto - Tipo - Genero - Extras - Composição. O que a meu ver e um pesadelo de programação


Anderson Rafael
Colaborador
Colaborador
Mensagens: 28
Registrado em: Seg Mai 14, 2018 11:09 am

Re: Identificar parte do texto dentro de uma frase e jogar respectivo valor em uma textbox

Mensagem por Anderson Rafael »

Olá Reinaldo, muito obrigado pela resposta!
Não imaginei que fosse tão dificil, somente fazer a busca em um dos bancos e puxar seu respectivo dado...
Porém se não funcionar assim, a minha ideia então é não usar o banco de dados, mas somente uma string na própria programação, algo como:
If cboProduto.Text = "Camisa social" Then
txtCod1.Text = "03"
End If
Acontece que o texto no cboProduto é "Camisa social FEMININA manga CURTA", então ele não funciona para detectar parte do texto e não puxa o "03" para o txtCod1, poderia me ajudar com isso? Acho que seria mais simples que usar as tabelas do banco de dados...


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Anderson Rafael
Colaborador
Colaborador
Mensagens: 28
Registrado em: Seg Mai 14, 2018 11:09 am

Re: Identificar parte do texto dentro de uma frase e jogar respectivo valor em uma textbox

Mensagem por Anderson Rafael »

Olá pessoal, ainda não consegui resolver, mas acebei de ter um ideia sobre como fazer, porém não estou conseguindo fechar meu raciocinio e espero que vcs tenham alguma ideia...
Como mencionado eu gostaria de pesquisar no banco sql parte do texto escrito em um Textbox, por exemplo no textbox esta escrito "Camisa social FEMININA manga CURTA" e na tabela do banco "Produtos" tenho o dado "Camisa social" com um código "03", preciso que o sistema efetue a comparando o texto do textbox com o texto do banco, no caso encontraria o "Camisa social" e retornaria para outro textbox o valor "03". O amigo Reinaldo acima falou que se trata de algo extremamente complicado, porém analisando e chegando ao que tenho agora, parece não ser mais tao complicado assim, só me falta um pouco de conhecimento na area para entender melhor hehe

O processo que pensei foi o seguinte:

Código: Selecionar todos

Private Sub CommandButton2_Click()
        sql = "SELECT * From Produto "
        sql = sql & " WHERE Produto = " & frmProduto.cboProduto.Text
        Set banco = New ADODB.Recordset
        cx.Conectar
        banco.Open sql, cx.conn, adOpenKeyset, adLockOptimistic
        With banco
If InStr(1, frmProduto.cboProduto.Text, .Fields(0), 1) > 0 Then
    frmProduto.txtCod1.Value = .Fields(1)
End If
    End With
    Set banco = Nothing
    cx.Desconectar
End Sub
Porém ele está dando "erro de sintaxe (operador faltando) na expressão de consulta 'Produto = Camisa social FEMININA manga CURTA'."
Teriam alguma ideia de como resolver isso?? Agradeço


Avatar do usuário
PRMPOKER
Consultor
Consultor
Mensagens: 206
Registrado em: Ter Dez 04, 2012 8:57 am

Re: Identificar parte do texto dentro de uma frase e jogar respectivo valor em uma textbox

Mensagem por PRMPOKER »

Prezados, bom dia!

Caro Anderson Rafael, pelo que vejo você esbanja vontade e precisa estudar um pouco mais antes de se aventurar nestes meandros... nós que temos um pouquinho mais de experiência, podemos ajudar sim, mas te digo: pare um pouco para estudar e entender bem os conceitos básicos ou acabarás por desistir, dada a dificuldade inicial. Mas depois, é só alegria!

No seu caso específico, toda a variável do tipo STRING (estudar tipos de variáveis) deve estar dentro de ""aspas" simples:

Código: Selecionar todos

sql = sql & " WHERE Produto = '" & frmProduto.cboProduto.Text & "'"
Faça a comparação entre a sua linha e esta acima e tente identificar o que tem de diferente.

Parabéns pelo seu esforço e siga na busca, pois é assim que se inicia qualquer caminhada, por mais difícil que ela seja.

Grande abraço!

Paulinho Monteiro


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Identificar parte do texto dentro de uma frase e jogar respectivo valor em uma textbox

Mensagem por Reinaldo »

Quando comentei
O que a meu ver e um pesadelo de programação
, me referi basicamente à mão de obra que sua estrutura gerará e ao erro na montagem/desenho de seu banco de dados, e não a
extremamente complicado
a que se referiu.
Como seu projeto está iniciando julguei que seria mais conveniente que utilizasse de algumas horas para aprender sobre modelagem de dados e relação entre tabelas; porem pelo seu post ...

O erro encontrado, em parte corrigi-se com a proposta efetuada pelo colega Paulinho, alias muito bem observada e esclarecida por ele, como sempre.

Contudo, sua SQL sempre resultara em um banco vazio, visto que a tabela produto não tem registro algum que coincida com o campo cboProduto (aliás não deveria ser um Combo, mas sim uma caixa de texto).
Alem do mais e necessário efetuar uma consulta diferente para cada txt "parte" da composição do codigo
Seria algo +/- assim

Código: Selecionar todos

Private Sub CommandButton2_Click()
cx.Conectar
'Monta sql para pesquisa Tabela Produto
sql = "SELECT * From Produto "
Set banco = New ADODB.Recordset
banco.Open sql, cx.conn, adOpenKeyset, adLockOptimistic
'Procura Codigo do Produto
For x = 1 To banco.RecordCount
    If InStr(1, frmProduto.cboProduto.Text, banco.Fields(1), 1) > 0 Then
        frmProduto.txtCod1.Value = banco.Fields(0)
    End If
banco.MoveNext
Next
Set banco = Nothing
'Monta sql para pesquisa na Tabela Tipo
sql = "SELECT * From tipo "
Set banco = New ADODB.Recordset
banco.Open sql, cx.conn, adOpenKeyset, adLockOptimistic
'Procura Codigo do Tipo
For x = 1 To banco.RecordCount
    If InStr(1, frmProduto.cboProduto.Text, banco.Fields(1), 1) > 0 Then
        frmProduto.txtCod2.Value = banco.Fields(0)
    End If
banco.MoveNext
Next
Set banco = Nothing
'Monta Sql para pesquisa na Tabela Genero
sql = "SELECT * From Genero "
Set banco = New ADODB.Recordset
banco.Open sql, cx.conn, adOpenKeyset, adLockOptimistic
'Procura pelo Codigo do Genero
For x = 1 To banco.RecordCount
    If InStr(1, frmProduto.cboProduto.Text, banco.Fields(1), 1) > 0 Then
        frmProduto.txtCod3.Value = banco.Fields(0)
    End If
banco.MoveNext
Next
Set banco = Nothing
'Monta sql....
'.....Aqui completar com as demais Txt's do codigo de barras
cx.Desconectar
End Sub
Cabe salientar que os codigos/textos em seu banco Produtos, devem estar em linha com as Descrições nas tabelas individuais, caso contrario não obter sucesso
Por exemplo: "Camisa social FEMININA manga 3/4", na tabela genero está FEMININO


Anderson Rafael
Colaborador
Colaborador
Mensagens: 28
Registrado em: Seg Mai 14, 2018 11:09 am

Re: Identificar parte do texto dentro de uma frase e jogar respectivo valor em uma textbox

Mensagem por Anderson Rafael »

Olá pessoal, muito obrigado pelas respostas!!!
Porém estive analisando, e achei que seria muita detalhe para fazer e resolvi deixar mais simples, sem usar o banco de dados, apenas o "InStr" e ficou assim:

Código: Selecionar todos

Private Sub CommandButton2_Click()
Dim var1, var2, var3, var4, va5, var6
If InStr(1, frmProduto.cboProduto.Text, "Calça", 1) > 0 Then
    var1 = "01"
ElseIf InStr(1, frmProduto.cboProduto.Text, "Camisa polo", 1) > 0 Then
    var1 = "02"
ElseIf InStr(1, frmProduto.cboProduto.Text, "Camisa social", 1) > 0 Then
    var1 = "03"
ElseIf InStr(1, frmProduto.cboProduto.Text, "Camiseta", 1) > 0 Then
    var1 = "04"
ElseIf InStr(1, frmProduto.cboProduto.Text, "Colete", 1) > 0 Then
    var1 = "05"
ElseIf InStr(1, frmProduto.cboProduto.Text, "Jaleco", 1) > 0 Then
    var1 = "06"
ElseIf InStr(1, frmProduto.cboProduto.Text, "Jaqueta", 1) > 0 Then
    var1 = "07"
ElseIf InStr(1, frmProduto.cboProduto.Text, "Abrigo", 1) > 0 Then
    var1 = "08"
End If

If InStr(1, frmProduto.cboProduto.Text, "manga CURTA", 1) > 0 Then
    var2 = "01"
ElseIf InStr(1, frmProduto.cboProduto.Text, "manga LONGA", 1) > 0 Then
    var2 = "02"
ElseIf InStr(1, frmProduto.cboProduto.Text, "manga 3/4", 1) > 0 Then
    var2 = "03"
ElseIf InStr(1, frmProduto.cboProduto.Text, "manga 7/8", 1) > 0 Then
    var2 = "04"
ElseIf InStr(1, frmProduto.cboProduto.Text, "abrigo", 1) > 0 Then
    var2 = "05"
ElseIf InStr(1, frmProduto.cboProduto.Text, "matelado", 1) > 0 Then
    var2 = "06"
ElseIf InStr(1, frmProduto.cboProduto.Text, "matelada", 1) > 0 Then
    var2 = "06"
ElseIf InStr(1, frmProduto.cboProduto.Text, "acolchoado", 1) > 0 Then
    var2 = "07"
ElseIf InStr(1, frmProduto.cboProduto.Text, "acolchoada", 1) > 0 Then
    var2 = "07"
ElseIf InStr(1, frmProduto.cboProduto.Text, "", 1) > 0 Then
    var2 = "00"
End If

If InStr(1, frmProduto.cboProduto.Text, "FEMININO", 1) > 0 Then
    var3 = "01"
ElseIf InStr(1, frmProduto.cboProduto.Text, "FEMININA", 1) > 0 Then
    var3 = "01"
ElseIf InStr(1, frmProduto.cboProduto.Text, "MASCULINO", 1) > 0 Then
    var3 = "02"
ElseIf InStr(1, frmProduto.cboProduto.Text, "MASCULINA", 1) > 0 Then
    var3 = "02"
ElseIf InStr(1, frmProduto.cboProduto.Text, "", 1) > 0 Then
    var3 = "00"
End If

If InStr(1, frmProduto.cboProduto.Text, "manga removível", 1) > 0 Then
    var4 = "01"
ElseIf InStr(1, frmProduto.cboProduto.Text, "", 1) > 0 Then
    var4 = "00"
End If

If InStr(1, frmProduto.cboTecido.Text, "100%co", 1) > 0 Then
    var5 = "001"
ElseIf InStr(1, frmProduto.cboTecido.Text, "50%pes 50%co", 1) > 0 Then
    var5 = "002"
ElseIf InStr(1, frmProduto.cboTecido.Text, "50%co 50%pes", 1) > 0 Then
    var5 = "002"
ElseIf InStr(1, frmProduto.cboTecido.Text, "52%pes 48%co", 1) > 0 Then
    var5 = "002"
ElseIf InStr(1, frmProduto.cboTecido.Text, "48%co 52%pes", 1) > 0 Then
    var5 = "002"
ElseIf InStr(1, frmProduto.cboTecido.Text, "56%co 44%pes", 1) > 0 Then
    var5 = "002"
ElseIf InStr(1, frmProduto.cboTecido.Text, "44%pes 56%co", 1) > 0 Then
    var5 = "002"
ElseIf InStr(1, frmProduto.cboTecido.Text, "67%co 33%pes", 1) > 0 Then
    var5 = "003"
ElseIf InStr(1, frmProduto.cboTecido.Text, "33%pes 67%co", 1) > 0 Then
    var5 = "003"
ElseIf InStr(1, frmProduto.cboTecido.Text, "67%pes 33%co", 1) > 0 Then
    var5 = "004"
ElseIf InStr(1, frmProduto.cboTecido.Text, "33%co 67%pes", 1) > 0 Then
    var5 = "004"
ElseIf InStr(1, frmProduto.cboTecido.Text, "67%pes 33%cv", 1) > 0 Then
    var5 = "005"
ElseIf InStr(1, frmProduto.cboTecido.Text, "33%cv 67%pes", 1) > 0 Then
    var5 = "005"
ElseIf InStr(1, frmProduto.cboTecido.Text, "68%pes 27%co 5%pue", 1) > 0 Then
    var5 = "006"
ElseIf InStr(1, frmProduto.cboTecido.Text, "27%co 68%pes 5%pue", 1) > 0 Then
    var5 = "006"
ElseIf InStr(1, frmProduto.cboTecido.Text, "63%co 34%pes 3%pue", 1) > 0 Then
    var5 = "007"
ElseIf InStr(1, frmProduto.cboTecido.Text, "34%pes 63%co 3%pue", 1) > 0 Then
    var5 = "007"
ElseIf InStr(1, frmProduto.cboTecido.Text, "100%pes", 1) > 0 Then
    var5 = "008"
ElseIf InStr(1, frmProduto.cboTecido.Text, "73%co 27%pes", 1) > 0 Then
    var5 = "009"
ElseIf InStr(1, frmProduto.cboTecido.Text, "27%pes 73%co", 1) > 0 Then
    var5 = "009"
ElseIf InStr(1, frmProduto.cboTecido.Text, "100%pa", 1) > 0 Then
    var5 = "010"
ElseIf InStr(1, frmProduto.cboTecido.Text, "67%co 30%pes 3%pue", 1) > 0 Then
    var5 = "011"
ElseIf InStr(1, frmProduto.cboTecido.Text, "30%pes 67%co 3%pue", 1) > 0 Then
    var5 = "011"
ElseIf InStr(1, frmProduto.cboTecido.Text, "65%co 32%pes 3%pue", 1) > 0 Then
    var5 = "011"
ElseIf InStr(1, frmProduto.cboTecido.Text, "32%pes 65%co 3%pue", 1) > 0 Then
    var5 = "011"
ElseIf InStr(1, frmProduto.cboTecido.Text, "83%co 17%pes", 1) > 0 Then
    var5 = "012"
ElseIf InStr(1, frmProduto.cboTecido.Text, "17%pes 83%co", 1) > 0 Then
    var5 = "012"
ElseIf InStr(1, frmProduto.cboTecido.Text, "66%co 31%pa 3%pue", 1) > 0 Then
    var5 = "013"
ElseIf InStr(1, frmProduto.cboTecido.Text, "31%pa 66%co 3%pue", 1) > 0 Then
    var5 = "013"
End If

var6 = "0"

Me.txtCod1.Value = var1 & var2 & var3 & var4 & var5 & var6
End Sub
O unico detalhe que talvez eu sinta que precise do banco de dados é se for adicionado um novo tipo de produto ou uma nova variavel, porem acho que por enquanto assim esta bom! O que acham?


Avatar do usuário
PRMPOKER
Consultor
Consultor
Mensagens: 206
Registrado em: Ter Dez 04, 2012 8:57 am

Re: Identificar parte do texto dentro de uma frase e jogar respectivo valor em uma textbox

Mensagem por PRMPOKER »

Prezados, Boa tarde!

Caro Anderson Rafael, tudo bem?

Cada vírgula que nosso colega Reinaldo escreveu é pertinente, então, ouça atentamente.. Antes de "sair programando", é necessário que você estude os conceitos básicos, principalmente, de um banco de dados relacional, que pressupõe o RELACIONAMENTO entre suas tabelas.

Não entendendo este conceito, não há possibilidade de desenvolver nenhuma lógica, já que essa é a essência de qualquer sistema.

Entenda, fazemos aqui, críticas construtivas para que você possa evoluir como um programador, seja por hobby ou profissionalmente.

Programação exige lógica, coerência e metodologia. Sem estes ingredientes, além de muito mais confundir do que esclarecer sua cabeça, possivelmente, não atingirás teus objetivos.

No que pudermos, certamente te ajudaremos, mas pelo caminho que estás indo, não há muito o que possamos fazer para ajudar.

Veja bem, estamos te dando o caminho das pedras: estude um pouco, anote suas dúvidas e então venha esclarecê-las para poder aprender, a cada dia, um pouco mais.

Grande abraço!


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder