AJUDA PARA OTIMINIZAR CONSULTA SQL

JONASJTG 27/04/2017 12:57:17
#473619
Bom dia a todos!

Pessoal como sou novo em programação eu fiz um código e queria saber se tem como deixar ele mais curto.
são 3 tabelas elas são interligadas.

origem
origemvacina
cria

Private Sub confirmaalteracaovacina_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Botaoconfirmaalteracaovacina.Click

[ô]preechimento automatico
txtbrincovacina.Text = Me.txtbrinco.Text
txtnbdavacacria.Text = Me.txtbrinco.Text

[ô]vereficar textbox e combobox se estão vazios
If ValidaPreenchimento(txtbrinco) = False Then Exit Sub
If ValidaPreenchimento(txtpbrinco) = False Then Exit Sub
If ValidaPreenchimento(txtNantigo) = False Then Exit Sub
If ValidaPreenchimento2(txtAtivo) = False Then Exit Sub
If ValidaPreenchimento2(txtAnimal) = False Then Exit Sub
If ValidaPreenchimento2(txtEspecificar) = False Then Exit Sub
If ValidaPreenchimento(txtIdadeAtualDasVacas) = False Then Exit Sub
If ValidaPreenchimento2(txtRaca) = False Then Exit Sub
If ValidaPreenchimento2(txtFazenda) = False Then Exit Sub
If ValidaPreenchimento(txtObservacoes) = False Then Exit Sub

Dim conecao As OleDbConnection
Dim alteracaovacinaSQL As String
Dim servidor As String = ([Ô]Provider=Microsoft.ACE.OLEDB.12.0;Data Source=[Ô] & Application.StartupPath & [Ô]\base.accdb[Ô])

conecao = New OleDbConnection(servidor)

[ô]Se brinco for diferente executa essa ação. exemplo: x243 mudo para TESTE ativa comando
If brincoAntigo <> Me.txtbrinco.Text Then
Try
alteracaovacinaSQL = [Ô]UPDATE origem SET brinco=[ô][Ô] & txtbrinco.Text & [Ô][ô],pbrinco=[ô][Ô] & txtpbrinco.Text & [Ô][ô],Nantigo=[ô][Ô] & txtNantigo.Text & _
[Ô][ô],DatadeNasc=[ô][Ô] & txtDatadeNasc.Value & [Ô][ô],raca=[ô][Ô] & txtRaca.Text & [Ô][ô],Animal=[ô][Ô] & txtAnimal.Text & [Ô][ô],Especificar=[ô][Ô] & txtEspecificar.Text & _
[Ô][ô],fazenda=[ô][Ô] & txtFazenda.Text & [Ô][ô],Observacoes=[ô][Ô] & txtObservacoes.Text & [Ô][ô],IdadeAtualDasVacas=[ô][Ô] & txtIdadeAtualDasVacas.Text & _
[Ô][ô],ativo=[ô][Ô] & txtAtivo.Text & [Ô][ô]WHERE Brinco like [ô][Ô] & brincoAntigo & [Ô][ô][Ô]

txtcodigocriavacina.Visible = False
txtnbdavacacria.Visible = False
txtbrincovacina.Visible = False

Dim conecaonova As OleDbCommand
conecao.Open()
conecaonova = New OleDbCommand(alteracaovacinaSQL, conecao)
conecaonova.ExecuteScalar()
conecao.Close()
conecaonova.Dispose()
Call situacaobotoes(3)
Call situacaocampos(False)
Me.Validate()
Me.TableAdapterManager.UpdateAll(Me.BaseDataSet)
Me.OrigemTableAdapter.Fill(Me.BaseDataSet.origem)
Catch ex As OleDbException
MsgBox(ex.Message, MsgBoxStyle.Critical, [Ô]Erro em dados Oledb[Ô])
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, [Ô]Erro de Sistema[Ô])
End Try
End If

If brincoAntigo <> Me.txtbrinco.Text Then
Try
alteracaovacinaSQL = [Ô]UPDATE Origemvacina SET Brinco = [ô][Ô] & txtbrinco.Text & [Ô][ô] WHERE Brinco like [ô][Ô] & brincoAntigo & [Ô][ô][Ô]
Dim conecaonova As OleDbCommand
conecao.Open()
conecaonova = New OleDbCommand(alteracaovacinaSQL, conecao)
conecaonova.ExecuteScalar()
conecao.Close()
conecaonova.Dispose()
Call situacaobotoes(3)
Call situacaocampos(False)
Me.Validate()
Me.TableAdapterManager.UpdateAll(Me.BaseDataSet)
Me.OrigemvacinaTableAdapter.Fill(Me.BaseDataSet.origemvacina)
Catch ex As OleDbException
MsgBox(ex.Message, MsgBoxStyle.Critical, [Ô]Erro em dados Oledb[Ô])
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, [Ô]Erro de Sistema[Ô])
End Try
End If

If nbdavacaantigo <> Me.txtbrinco.Text Then
Try
alteracaovacinaSQL = [Ô]UPDATE cria SET NBdavaca =[ô][Ô] & txtbrinco.Text & [Ô][ô] WHERE NBdavaca like [ô][Ô] & nbdavacaantigo & [Ô][ô] [Ô]
Dim conecaonova As OleDbCommand
conecao.Open()
conecaonova = New OleDbCommand(alteracaovacinaSQL, conecao)
conecaonova.ExecuteScalar()
MsgBox([Ô]Alteração efetuadas com sucesso![Ô], MsgBoxStyle.Information, [Ô]estudo[Ô])
conecao.Close()
conecaonova.Dispose()
Call situacaobotoes(3)
Call situacaocampos(False)
Me.Validate()
Me.TableAdapterManager.UpdateAll(Me.BaseDataSet)
Me.CriaTableAdapter.Fill(Me.BaseDataSet.cria)
Catch ex As OleDbException
MsgBox(ex.Message, MsgBoxStyle.Critical, [Ô]Erro em dados Oledb[Ô])
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, [Ô]Erro de Sistema[Ô])
End Try
End If

[ô]Se brinco for igual executa essa ação. exemplo: x243 = x243 ativa comando
If brincoAntigo = Me.txtbrinco.Text Then

Try
alteracaovacinaSQL = [Ô]UPDATE origem SET brinco=[ô][Ô] & txtbrinco.Text & [Ô][ô],pbrinco=[ô][Ô] & txtpbrinco.Text & [Ô][ô],Nantigo=[ô][Ô] & txtNantigo.Text & _
[Ô][ô],DatadeNasc=[ô][Ô] & txtDatadeNasc.Value & [Ô][ô],raca=[ô][Ô] & txtRaca.Text & [Ô][ô],Animal=[ô][Ô] & txtAnimal.Text & [Ô][ô],Especificar=[ô][Ô] & txtEspecificar.Text & _
[Ô][ô],fazenda=[ô][Ô] & txtFazenda.Text & [Ô][ô],Observacoes=[ô][Ô] & txtObservacoes.Text & [Ô][ô],IdadeAtualDasVacas=[ô][Ô] & txtIdadeAtualDasVacas.Text & _
[Ô][ô],ativo=[ô][Ô] & txtAtivo.Text & [Ô][ô]WHERE Brinco like [ô][Ô] & brincoAntigo & [Ô][ô][Ô]

txtcodigocriavacina.Visible = False
txtnbdavacacria.Visible = False
txtbrincovacina.Visible = False

Dim conecaonova As OleDbCommand
conecao.Open()
conecaonova = New OleDbCommand(alteracaovacinaSQL, conecao)
conecaonova.ExecuteScalar()
MsgBox([Ô]Alteração dos DADOS com sucesso![Ô], MsgBoxStyle.Information, [Ô]estudo[Ô])
conecao.Close()
conecaonova.Dispose()
Call situacaobotoes(3)
Call situacaocampos(False)
Me.Validate()
Me.TableAdapterManager.UpdateAll(Me.BaseDataSet)
Me.OrigemTableAdapter.Fill(Me.BaseDataSet.origem)

Catch ex As OleDbException
MsgBox(ex.Message, MsgBoxStyle.Critical, [Ô]Erro em dados Oledb[Ô])
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, [Ô]Erro de Sistema[Ô])
End Try
End If

[ô]Se brinco e o id for igual executa essa ação. exemplo: x243 = x243 e id1= id1 ativa comando
If brincoAntigo = Me.txtbrinco.Text Then
Try
alteracaovacinaSQL = [Ô]UPDATE origemvacina SET brinco=[ô][Ô] & txtbrinco.Text & [Ô][ô],dtvacina=[ô][Ô] & txtdtvacina.Text & [Ô][ô]WHERE id like [ô][Ô] & txtcodigovacina.Text & [Ô][ô][Ô]

txtcodigocriavacina.Visible = False
txtnbdavacacria.Visible = False
txtbrincovacina.Visible = False

Dim conecaonova As OleDbCommand
conecao.Open()
conecaonova = New OleDbCommand(alteracaovacinaSQL, conecao)
conecaonova.ExecuteScalar()
MsgBox([Ô]Alteração da VACINA com sucesso![Ô], MsgBoxStyle.Information, [Ô]estudo[Ô])
conecao.Close()
conecaonova.Dispose()
Call situacaobotoes(3)
Call situacaocampos(False)
Me.Validate()
Me.TableAdapterManager.UpdateAll(Me.BaseDataSet)
Me.OrigemvacinaTableAdapter.Fill(Me.BaseDataSet.origemvacina)

Catch ex As OleDbException
MsgBox(ex.Message, MsgBoxStyle.Critical, [Ô]Erro em dados Oledb[Ô])
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, [Ô]Erro de Sistema[Ô])
End Try
End If
End Sub
NILSONTRES 27/04/2017 13:01:18
#473620
Tem muita coisa estranha ai, uma validação para cada campo ao invés de uma unica função pra validar os campos, update com like ?
JONASJTG 27/04/2017 17:01:26
#473625
NilsonTres Ai blz!

UPDATE com like são critérios que eu usei para fazer o UPDATE.
If ValidaPreenchimento(txtbrinco) = False Then Exit Sub
e para valida campos com critérios.

A duvida minha ela começa depois dessa linha abaixo. Como esta no código acima.
conecao = New OleDbConnection(servidor)
KERPLUNK 27/04/2017 21:11:37
#473630
Use OOP e esqueça esse modelo procedural. Isso sim vai otimizar seu código.
Tópico encerrado , respostas não são mais permitidas