SELECT E UPDATE DEZ ITENS DE UMA UNICA VEZ
Pessoal, me ajudem aÃ
Tenho um BD Access e a rede da empresa não ajuda, é lenta Na interface tenho um TextBox que faz um select do código digitado e me trás os dados para o form, mas eu puxo somente o ID do danco, e depois no botão salvar ele faz um Update que atualiza alguns campos, mas isso demora pois tenho que fazer isso por diversas vezes no dia de 10 a 20 segundos para fazer o select.
Pensei então em criar vários textsbox em torno de dez onde o usuário colocara dez ordens de uma única vez quando fizer o Select fara das dos dez Textbox e quando eu fizer o Uptade fara o dos dez também, é possÃvel isso?
Segue meus códigos de select e uptade
Seleciona o campo no BD access
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim psq As String
Dim cx As New ClasseConexão[ô] abre a conexão
Dim bc As ADODB.Recordset
Dim sql As String
psq = TextBox1.Text
If TextBox1.Text = [Ô][Ô] Then Exit Sub
Set banco = New ADODB.Recordset
sql = [Ô] SELECT * FROM fluxo [Ô] [ô]ordem_entrada , data_entrada , entrada_oper
sql = sql & [Ô] WHERE ordem_entrada LIKE[ô][Ô] & psq & [Ô]%[ô][Ô]
cx.Conectar [ô] aqui ele abre o banco e faz o select acima
On Error Resume Next
banco.Open sql, cx.Conn
Dim nidFuncionario As String
nidFuncionario = banco.Fields([Ô]idFuncionario[Ô])
Me.TextBox4.Text = nidFuncionario[ô] aqui mostra ao usuário o ID do BD para ele saber que o select foi feito
cx.Desconectar [ô] faz a desconexão em um módulo separado
End Sub
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
E aqui o código do botão salvar que fez o Update
Private Sub CommandButton1_Click()
On Error GoTo FIM
Dim usuario As String
usuario = VBA.Environ([Ô]username[Ô])
Dim cx As New ClasseConexão
Dim banco As ADODB.Recordset
Dim sql As String
Set banco = New ADODB.Recordset
If TextBox1.Text = [Ô][Ô] Then Exit Sub
sql = [Ô] UPDATE fluxo [Ô]
sql = sql & [Ô] SET cq_oper = [ô][Ô] & VBA.Environ([Ô]username[Ô]) & [Ô][ô][Ô]
sql = sql & [Ô], cq_data = [ô][Ô] & Calendar1.Value & [Ô][ô][Ô]
If CheckBox1.Value = True Then
sql = sql & [Ô], cq_refugo = [ô][Ô] & [Ô]Sim [Ô] & [Ô][ô][Ô]
End If
If CheckBox1.Value = True Then
sql = sql & [Ô], status = [ô][Ô] & [Ô]s700[Ô] & [Ô][ô][Ô]
End If
If CheckBox1.Value = False Then
sql = sql & [Ô], status = [ô][Ô] & [Ô]s900[Ô] & [Ô][ô][Ô]
End If
sql = sql & [Ô] WHERE idFuncionario = [Ô] & TextBox4.Text
Set banco = New ADODB.Recordset
cx.Conectar
banco.Open sql, cx.Conn
Set banco = Nothing
cx.Desconectar
Me.TextBox1 = Empty
Me.TextBox4 = Empty [ô]LIMPA OS CAMPOS PARA NOVA CONSULTA
CheckBox1.Value = False
Me.TextBox1.SetFocus [ô] FOCO NA TEXTBOX ID
Exit Sub
FIM:
MsgBox [Ô]Registro: [Ô] & Me.TextBox1.Text & [Ô] Não existe.[Ô]
Me.TextBox1 = Empty
Me.TextBox4 = Empty [ô]LIMPA OS CAMPOS PARA NOVA CONSULTA
CheckBox1.Value = False
Me.TextBox1.SetFocus [ô] FOCO NA TEXTBOX ID
End Sub
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Esses códigos acima são para alterar um registro por vez, queria colocar dez texboz e alterar dez por vez é possÃvel?
Valeu
Tenho um BD Access e a rede da empresa não ajuda, é lenta Na interface tenho um TextBox que faz um select do código digitado e me trás os dados para o form, mas eu puxo somente o ID do danco, e depois no botão salvar ele faz um Update que atualiza alguns campos, mas isso demora pois tenho que fazer isso por diversas vezes no dia de 10 a 20 segundos para fazer o select.
Pensei então em criar vários textsbox em torno de dez onde o usuário colocara dez ordens de uma única vez quando fizer o Select fara das dos dez Textbox e quando eu fizer o Uptade fara o dos dez também, é possÃvel isso?
Segue meus códigos de select e uptade
Seleciona o campo no BD access
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim psq As String
Dim cx As New ClasseConexão[ô] abre a conexão
Dim bc As ADODB.Recordset
Dim sql As String
psq = TextBox1.Text
If TextBox1.Text = [Ô][Ô] Then Exit Sub
Set banco = New ADODB.Recordset
sql = [Ô] SELECT * FROM fluxo [Ô] [ô]ordem_entrada , data_entrada , entrada_oper
sql = sql & [Ô] WHERE ordem_entrada LIKE[ô][Ô] & psq & [Ô]%[ô][Ô]
cx.Conectar [ô] aqui ele abre o banco e faz o select acima
On Error Resume Next
banco.Open sql, cx.Conn
Dim nidFuncionario As String
nidFuncionario = banco.Fields([Ô]idFuncionario[Ô])
Me.TextBox4.Text = nidFuncionario[ô] aqui mostra ao usuário o ID do BD para ele saber que o select foi feito
cx.Desconectar [ô] faz a desconexão em um módulo separado
End Sub
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
E aqui o código do botão salvar que fez o Update
Private Sub CommandButton1_Click()
On Error GoTo FIM
Dim usuario As String
usuario = VBA.Environ([Ô]username[Ô])
Dim cx As New ClasseConexão
Dim banco As ADODB.Recordset
Dim sql As String
Set banco = New ADODB.Recordset
If TextBox1.Text = [Ô][Ô] Then Exit Sub
sql = [Ô] UPDATE fluxo [Ô]
sql = sql & [Ô] SET cq_oper = [ô][Ô] & VBA.Environ([Ô]username[Ô]) & [Ô][ô][Ô]
sql = sql & [Ô], cq_data = [ô][Ô] & Calendar1.Value & [Ô][ô][Ô]
If CheckBox1.Value = True Then
sql = sql & [Ô], cq_refugo = [ô][Ô] & [Ô]Sim [Ô] & [Ô][ô][Ô]
End If
If CheckBox1.Value = True Then
sql = sql & [Ô], status = [ô][Ô] & [Ô]s700[Ô] & [Ô][ô][Ô]
End If
If CheckBox1.Value = False Then
sql = sql & [Ô], status = [ô][Ô] & [Ô]s900[Ô] & [Ô][ô][Ô]
End If
sql = sql & [Ô] WHERE idFuncionario = [Ô] & TextBox4.Text
Set banco = New ADODB.Recordset
cx.Conectar
banco.Open sql, cx.Conn
Set banco = Nothing
cx.Desconectar
Me.TextBox1 = Empty
Me.TextBox4 = Empty [ô]LIMPA OS CAMPOS PARA NOVA CONSULTA
CheckBox1.Value = False
Me.TextBox1.SetFocus [ô] FOCO NA TEXTBOX ID
Exit Sub
FIM:
MsgBox [Ô]Registro: [Ô] & Me.TextBox1.Text & [Ô] Não existe.[Ô]
Me.TextBox1 = Empty
Me.TextBox4 = Empty [ô]LIMPA OS CAMPOS PARA NOVA CONSULTA
CheckBox1.Value = False
Me.TextBox1.SetFocus [ô] FOCO NA TEXTBOX ID
End Sub
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Esses códigos acima são para alterar um registro por vez, queria colocar dez texboz e alterar dez por vez é possÃvel?
Valeu
Meu caro, em suma, é possÃvel sim enviar mais de 1 select/update por vez. Sendo que eles devem ser separados por ponto e vÃrgula ( ; ). Faz um teste colocando uma variável para acumular o sql dos comandos e posteriormente dá o [Ô]submit[Ô].
Mas melhore o seu código, evite usar o like, já que a rede é lenta e supostamente o campo seja uma chave primária. Ficaria assim:
Espero que funcione.Lembrando, aplicações em Access consomem muito recurso da rede... procure no Google a respeito.
Mas melhore o seu código, evite usar o like, já que a rede é lenta e supostamente o campo seja uma chave primária. Ficaria assim:
Citação:sql = [Ô] SELECT * FROM fluxo [Ô] [ô]ordem_entrada , data_entrada , entrada_oper
sql = sql & [Ô] WHERE ordem_entrada in ( [Ô] & lista_codigos_ordens_separadas_por_virgula & [Ô])[ô][Ô]
Espero que funcione.Lembrando, aplicações em Access consomem muito recurso da rede... procure no Google a respeito.
Faça seu login para responder