IMPOR CONDIÇÃO

 Tópico anterior Próximo tópico Novo tópico

IMPOR CONDIÇÃO

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#483679 - 03/08/2018 17:18:01

GUIMORAES
ITAPETININGA
Cadast. em:Agosto/2009


Citação:
:
Vamos lá,
Ao usar esse comando
rs.Open "Select * From TbProdutos Where CodFabrica='" & txtCodFabrica & "' and CodFabrica<>"" & "'", db, 2, 3  

Você está procurando no banco de dados se existe algum CodFabrica igual ao txtCodFabrica  e diferente de vazio... acontece que tu não tem nenhum CodFabrica vazio no banco. Na verdade tu teria que validar o TXT e não o CodFabrica...
Caso não queira fazer um IF no código validando o TXT...pode tentar fazer o sequinte:
"Select * From TbProdutos Where CodFabrica='" & txtCodFabrica & "' Or '" & txtCodFabrica & "'=''"

Dessa forma tu valida se o TXT é vazio e não o campo da tabela.
Pelo que entendi é isso que deseja, se for, espero que tenha compreendido a lógica, caso não for, me perdoe.



  "Select * From TbProdutos Where (CodFabrica='" & txtCodFabrica & "' Or  CodFabrica= '')"





#483681 - 03/08/2018 18:07:29

LEOCAVALHEIRO
FRANCISCO BELTRAO
Cadast. em:Março/2018


Citação:
:
:
Vamos lá,
Ao usar esse comando
rs.Open "Select * From TbProdutos Where CodFabrica='" & txtCodFabrica & "' and CodFabrica<>"" & "'", db, 2, 3  

Você está procurando no banco de dados se existe algum CodFabrica igual ao txtCodFabrica  e diferente de vazio... acontece que tu não tem nenhum CodFabrica vazio no banco. Na verdade tu teria que validar o TXT e não o CodFabrica...
Caso não queira fazer um IF no código validando o TXT...pode tentar fazer o sequinte:
"Select * From TbProdutos Where CodFabrica='" & txtCodFabrica & "' Or '" & txtCodFabrica & "'=''"

Dessa forma tu valida se o TXT é vazio e não o campo da tabela.
Pelo que entendi é isso que deseja, se for, espero que tenha compreendido a lógica, caso não for, me perdoe.



  "Select * From TbProdutos Where (CodFabrica='" & txtCodFabrica & "' Or  CodFabrica= '')"



Não, não ..Dessa forma continua validando no banco .... não foi essa a ideia que passei ali....

Leandro Luiz G. Cavalheiro
Software Developer
Skype: leandro.cavalheiro.ti
e-Mail: leo.cavalheiro.ti@gmail.com // black.tech.br@gmail.com
Cel.: (46) 99101-1006

  

#483683 - 04/08/2018 09:53:54

ISABELLASILVA
BLUMENAU
Cadast. em:Novembro/2017


  Bom dia, Pessoal!

agradeço pela ajuda, mas em meus testes nenhuma das 2 opções deixa eu salvar um prox. código de fabrica em branco se já existe um em branco...

lembrando que o código que tinha não deixava repetir o mesmo código, o que preciso é se for em branco deverá deixar passar...

Atenciosamente,

Isabella


#483684 - 04/08/2018 11:49:22

OMAR2011
MONTES CLAROS
Cadast. em:Setembro/2011


O que significa código de fabrica em branco?
Não entendi isto.
Não existe este tipo de código.



#483685 - 04/08/2018 12:53:09

ISABELLASILVA
BLUMENAU
Cadast. em:Novembro/2017


Me refiro quando a textbox está em branco ( sem Informação alguma ) e o banco de dados esteja zerado, como estou usando MySql o tipo da coluna Varchar, então retorna sem informação alguma (zerado)
Espero ter conseguido explicar...

segue a minha necessidade a baixo:

Citação:
:
  Bom dia, Pessoal!

agradeço pela ajuda, mas em meus testes nenhuma das 2 opções deixa eu salvar um prox. código de fabrica em branco se já existe um em branco...

lembrando que o código que tinha não deixava repetir o mesmo código, o que preciso é se for em branco deverá deixar passar...

Atenciosamente,



Isabella


#483686 - 04/08/2018 13:31:21

OMAR2011
MONTES CLAROS
Cadast. em:Setembro/2011


Escreva como está disposta a sua tabela,até chave primária.
Vou verificar se meu raciocínio esteja na qual tu está tentando fazer.



#483687 - 04/08/2018 16:02:57

ISABELLASILVA
BLUMENAU
Cadast. em:Novembro/2017


NumReg>>>> Inteiro<<<<<<<<<<< Chave primaria auto crescente
CodProduto>>>>>>Vachar <<<<<<Este código o sistema gera automático a cada registro
CodFabrica>>Vachar<<<<<<<<<<Aqui quero deixar a critério da pessoa, mas caso ele use, não deixar duplicar os registros, o código de não deixar duplicar já tenho, por isso não estou conseguindo fazer dois registro vazios, caso a pessoa não queira usar o código de fabrica
Estoque>>>>Inteiro
ValorCusto>>Decimal

Citação:
:
Olá, pessoal do fórum!

Queria que ao salvar o código de fabrica não repetisse, caso ele já exista, mas não queria obrigar o usuário a inserir um código...
então tive este raciocínio, mas ele esta funcionando em parte,
se for só até aqui ele funciona>>>>> rs.Open "Select * From TbProdutos Where CodFabrica='" & txtCodFabrica & "'", db, 2, 3

mas quero também colocar se ele estiver em branco queria que ele passasse

rs.Open "Select * From TbProdutos Where CodFabrica='" & txtCodFabrica & "' and CodFabrica<>"" & "'", db, 2, 3

Então como eu faria para acrescentar nesta linha de código se banco de dados estiver diferente de "" e o código de produto for diferente
rs.Open "Select * From TbProdutos Where CodFabrica='" & txtCodFabrica & "'", db, 2, 3


Banco de dados MySql

Att,



Isabella


#483691 - 05/08/2018 13:57:58

OMAR2011
MONTES CLAROS
Cadast. em:Setembro/2011


Este foi o teste na qual foi minha compreensão.
Private Sub Command18_Click()
Dim cn As New ADODB.Connection
Dim tba As New ADODB.Recordset
tba.CursorLocation = adUseClient
cn.Open "Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=test;User=root;Password=12qw;Option=3;"
If Trim(txtCodFabrica.Text) = "" Then 'O Trim é muito importante para caixa de texto vazia.
cn.BeginTrans
Sql = "Insert into TbProdutos (Codproduto,CodFabrica,estoque,valorcusto) values ('" & txtCodproduto.Text & "','" & txtCodFabrica.Text & "','" & txtEstoque.Text & "','" & txtValor.Text & "')"

  If MsgBox("Salvar este registro?", vbYesNo) = vbYes Then
   cn.Execute (Sql)
        cn.CommitTrans
    Else
        cn.RollbackTrans
    End If
ElseIf Trim(txtCodFabrica.Text) <> "" Then
tba.Open "Select * From Tbprodutos Where CodFabrica = '" & Trim(txtCodFabrica.Text) & "'", cn, 2, 3
'Dim i As Integer
'i = tba.RecordCount
If tba.RecordCount > 0 Then
MsgBox "Existe um registro!" & " " & Trim(UCase(txtCodFabrica.Text)), vbInformation, "Código de Fabrica"
tba.Close
Set tba = Nothing
Exit Sub
Else
cn.BeginTrans
Sql = "Insert into TbProdutos (Codproduto,CodFabrica,estoque,valorcusto) values ('" & txtCodproduto.Text & "','" & txtCodFabrica.Text & "','" & txtEstoque.Text & "','" & txtValor.Text & "')"

  If MsgBox("Salvar este registro?", vbYesNo) = vbYes Then
  cn.Execute (Sql) 'A execução da SQL foi colocada nesta posição devido alteração na chave primária de autonumeração
        cn.CommitTrans
    Else
        cn.RollbackTrans
    End If
End If
End If
End Sub



Resposta escolhida #483693 - 05/08/2018 22:04:33

LEOCAVALHEIRO
FRANCISCO BELTRAO
Cadast. em:Março/2018


Última edição em 05/08/2018 22:06:11 por LEOCAVALHEIRO

"Select * From TbProdutos Where CodFabrica='" & Trim(txtCodFabrica) & "' And '" & Trim(txtCodFabrica) & "'<>''"

Seguindo a mesma lógica que tinha postado...só mudando os operadores...
Aqui ele busca no banco de dados algum código de fábrica ( CodFabrica ) que seja igual o do TXT ( txtCodFabrica ) informado pelo usuário E que o TXT ( txtCodFabrica ) não seja vazio...

Assim quando o usuário informar vazio ele vai encontrar algum registro no banco, porém o AND vai ver que o TXT é vazio também, não permitirá retornar o registro na pesquisa...logo no seu código vai conseguir incluir o registro.

** Pode colocar um trim também no txt, já que está comparando strings


Leandro Luiz G. Cavalheiro
Software Developer
Skype: leandro.cavalheiro.ti
e-Mail: leo.cavalheiro.ti@gmail.com // black.tech.br@gmail.com
Cel.: (46) 99101-1006

  

#483695 - 06/08/2018 08:20:02

CARINHENA
SOROCABA
Cadast. em:Junho/2004


Que salada essa mistura de lógica estranha + código.
Enfim, se você não vai salvar no campo, o campo não é salvo como "branco" ele tem que ser salvo como nulo.

E tem uma diferença entre nulo e branco.

Se você salvar como nulo, quando não houver dados, fica bem mais simples, porque é sé dar um select normal pelo campo:
select count (codigo_de_Barra) as total from tabela where codigo_de_Barra=xxxxx


Se retornar 0, pode inserir, se retornar >0, é porque ja tem algum registro.

Ou então, no próprio insert:

INSERT INTO NomeTabela (Codigo_De_Barra)   SELECT xxx WHERE NOT EXISTS (SELECT codigo_de_barra FROM NomeTabela WHERE Cicodigo_de_barra= xxxxx);
  


Ou coisa parecida.
Tem que amadurecer sua lógica primeiro, o código é o último passo.

Carinhena

A melhor forma de aprender e ensinando!


 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por ISABELLASILVA em 06/08/2018 17:09:28