ERRO VB6 E ACCESS
Bom dia, tenho recebido diversas ajudas do LLAIA para conclusão desse código, porém continuo tendo problemas, ele está funcionando até esta linha do INSERT, em diante ele não está executando e também não apresenta mensagem de erro, alguém tem alguma dica para me dar a respeito.
Rafa
_______________________________________________________________________________________
Private Sub Command1_Click()
Dim SQL, CONEXAO, RS
Set CONEXAO = CreateObject([Ô]ADODB.Connection[Ô])
Set RS = CreateObject([Ô]ADODB.Recordset[Ô])
CONEXAO.Open [Ô]Driver={Microsoft Access Driver (*.mdb)};Dbq=[Ô] & App.Path & [Ô]\files\ordenaAlertas.mdb;Uid=Admin;Pwd=;[Ô]
CONEXAO.Execute ([Ô]INSERT INTO Ordem VALUES (2, [ô]comando .bat que envia alerta prioridade 2[ô], [ô]Aguardando[ô])[Ô])
Set RS.ActiveConnection = CONEXAO
RS.Source = [Ô]SELECT TOP 1 status FROM Ordem[Ô]
RS.Open
startVerifica1:
If RS.RecordCount > 0 Then
If RS([Ô]status[Ô]) = [Ô]Enviando[Ô] Then
Sleep 10000
GoTo startVerifica1
ElseIf RS([Ô]status[Ô]) = Aguardando Then
CONEXAO.Execute ([Ô]UPDATE Ordem SET status=[ô]Enviando[ô][Ô])
Shell App.Path & [Ô] este.bat[Ô]
Sleep 10000
CONEXAO.Execute ([Ô]DELETE * FROM Ordem WHERE status=[ô]Enviando[ô][Ô])
CONEXAO.Close
End If
End If
End Sub
Rafa
_______________________________________________________________________________________
Private Sub Command1_Click()
Dim SQL, CONEXAO, RS
Set CONEXAO = CreateObject([Ô]ADODB.Connection[Ô])
Set RS = CreateObject([Ô]ADODB.Recordset[Ô])
CONEXAO.Open [Ô]Driver={Microsoft Access Driver (*.mdb)};Dbq=[Ô] & App.Path & [Ô]\files\ordenaAlertas.mdb;Uid=Admin;Pwd=;[Ô]
CONEXAO.Execute ([Ô]INSERT INTO Ordem VALUES (2, [ô]comando .bat que envia alerta prioridade 2[ô], [ô]Aguardando[ô])[Ô])
Set RS.ActiveConnection = CONEXAO
RS.Source = [Ô]SELECT TOP 1 status FROM Ordem[Ô]
RS.Open
startVerifica1:
If RS.RecordCount > 0 Then
If RS([Ô]status[Ô]) = [Ô]Enviando[Ô] Then
Sleep 10000
GoTo startVerifica1
ElseIf RS([Ô]status[Ô]) = Aguardando Then
CONEXAO.Execute ([Ô]UPDATE Ordem SET status=[ô]Enviando[ô][Ô])
Shell App.Path & [Ô] este.bat[Ô]
Sleep 10000
CONEXAO.Execute ([Ô]DELETE * FROM Ordem WHERE status=[ô]Enviando[ô][Ô])
CONEXAO.Close
End If
End If
End Sub
Amigo, fica mais facil explicar oque voce está querendo fazer...
Citação::
Amigo, fica mais facil explicar oque voce está querendo fazer...
Preciso acessar a DB .mdb, retornar apenas a primeira linha, se nessa linha o campo status estiver [Ô]enviando[Ô], então ele vai aguardar esses 10 seg, e refazer a consulta, se contiver qualquer outra escrita no campo status da primeira linha ele, altera o mesmo para [Ô]enviando[Ô], executa então um arquivo .bat, aguarad mais um tempo de 10 seg. e exclui toda essa primeira linha.
Espero ter sido claro.
Obrigado
Acho que descobri o por que: no RS.RecordCount o valor está -1, algo errado no Select talvez?
o insert into está errado
veja como está
[txt-color=#e80000][Ô]INSERT INTO Ordem VALUES (2, [ô]comando .bat que envia alerta prioridade 2[ô], [ô]Aguardando[ô])[/txt-color]
agora como deve ser
[Ô]INSERT INTO [txt-color=#0000f0]tabela (campo1,campo2,campo3)[/txt-color] VALUES (2, [ô]comando .bat que envia alerta prioridade 2[ô], [ô]Aguardando[ô])
onde está em azul vc deve colocar os nomes dos campos para depois colocar os valores
veja como está
[txt-color=#e80000][Ô]INSERT INTO Ordem VALUES (2, [ô]comando .bat que envia alerta prioridade 2[ô], [ô]Aguardando[ô])[/txt-color]
agora como deve ser
[Ô]INSERT INTO [txt-color=#0000f0]tabela (campo1,campo2,campo3)[/txt-color] VALUES (2, [ô]comando .bat que envia alerta prioridade 2[ô], [ô]Aguardando[ô])
onde está em azul vc deve colocar os nomes dos campos para depois colocar os valores
Olá Marcelo-Treze,
O Insert está funcionando, minha dúvida fica quanto ao Select, pois ele veria retornar a primeira linha, mas o valor do RecordCount ao invés de 1 está -1
Obriagdo
O Insert está funcionando, minha dúvida fica quanto ao Select, pois ele veria retornar a primeira linha, mas o valor do RecordCount ao invés de 1 está -1
Obriagdo
maneira correta ou a mais próxima que existe
Private Sub Command1_Click()
Dim SQL As String, CONEXAO As New ADODB.Connection, RS As Recordset
CONEXAO.Open [Ô]Driver={Microsoft Access Driver (*.mdb)};Dbq=[Ô] & App.Path & [Ô]\files\ordenaAlertas.mdb;Uid=Admin;Pwd=;[Ô]
CONEXAO.Execute ([Ô]INSERT INTO Ordem ([txt-color=#e80000]Campo1, Campo2, Campo3[/txt-color]) VALUES (2, [ô]comando .bat que envia alerta prioridade 2[ô], [ô]Aguardando[ô])[Ô])
Set RS = CONEXAO.Execute([Ô]SELECT TOP 1 status FROM Ordem[Ô])
startVerifica1:
If Not (RS.EOF And RS.BOF) Then
Select Case RS!status
Case Is = [Ô]Enviando[Ô]
Sleep 10000
GoTo startVerifica1
Case Is = [Ô]Aguardando[Ô]
CONEXAO.Execute ([Ô]UPDATE Ordem SET status=[ô]Enviando[ô] [txt-color=#e80000]WHERE id= [Ô] & txtnumeroid.text[/txt-color] )
Shell App.Path & [Ô] este.bat[Ô]
Sleep 10000
CONEXAO.Execute ([Ô]DELETE * FROM Ordem WHERE status=[ô]Enviando[ô][Ô])
CONEXAO.Close
End select
End If
End Sub
vamos lá existe as inconsistências dita anteriormente
no insert falta os nomes dos campos
e depois no UPDATE faltou um where para indicar o que atualizar
no caso do update veja um exemplo
se eu possuo o seguinte em uma tabela
id - nome - cargo
01 - Marcelo - encarregado
02 - Joao - Caixa
03 - Pedro - balconista
derrepente quero atualizar o pedro para garçon, então tenho de indicar o id dele ou o nome para o update assim
UPDATE tabela SET cargo = [ô]garçon[ô] WHERE id = 03
ou pelo nome
UPDATE tabela SET cargo = [ô]garçon[ô] WHERE nome = [ô]Pedro[ô]
entendeu + ou -
Private Sub Command1_Click()
Dim SQL As String, CONEXAO As New ADODB.Connection, RS As Recordset
CONEXAO.Open [Ô]Driver={Microsoft Access Driver (*.mdb)};Dbq=[Ô] & App.Path & [Ô]\files\ordenaAlertas.mdb;Uid=Admin;Pwd=;[Ô]
CONEXAO.Execute ([Ô]INSERT INTO Ordem ([txt-color=#e80000]Campo1, Campo2, Campo3[/txt-color]) VALUES (2, [ô]comando .bat que envia alerta prioridade 2[ô], [ô]Aguardando[ô])[Ô])
Set RS = CONEXAO.Execute([Ô]SELECT TOP 1 status FROM Ordem[Ô])
startVerifica1:
If Not (RS.EOF And RS.BOF) Then
Select Case RS!status
Case Is = [Ô]Enviando[Ô]
Sleep 10000
GoTo startVerifica1
Case Is = [Ô]Aguardando[Ô]
CONEXAO.Execute ([Ô]UPDATE Ordem SET status=[ô]Enviando[ô] [txt-color=#e80000]WHERE id= [Ô] & txtnumeroid.text[/txt-color] )
Shell App.Path & [Ô] este.bat[Ô]
Sleep 10000
CONEXAO.Execute ([Ô]DELETE * FROM Ordem WHERE status=[ô]Enviando[ô][Ô])
CONEXAO.Close
End select
End If
End Sub
vamos lá existe as inconsistências dita anteriormente
no insert falta os nomes dos campos
e depois no UPDATE faltou um where para indicar o que atualizar
no caso do update veja um exemplo
se eu possuo o seguinte em uma tabela
id - nome - cargo
01 - Marcelo - encarregado
02 - Joao - Caixa
03 - Pedro - balconista
derrepente quero atualizar o pedro para garçon, então tenho de indicar o id dele ou o nome para o update assim
UPDATE tabela SET cargo = [ô]garçon[ô] WHERE id = 03
ou pelo nome
UPDATE tabela SET cargo = [ô]garçon[ô] WHERE nome = [ô]Pedro[ô]
entendeu + ou -
então se deseja retornar o primeiro registro talvez o campo status não seja o correto
tente fazer tipo assim
SELECT TOP 1 * FROM ordem WHERE status=[ô]Enviando[ô]
tente fazer tipo assim
SELECT TOP 1 * FROM ordem WHERE status=[ô]Enviando[ô]
tente...
Dim SQL As String, CONEXAO As New ADODB.Connection, RS As Recordset
CONEXAO.Open [Ô]Driver={Microsoft Access Driver (*.mdb)};Dbq=[Ô] & App.Path & [Ô]\files\ordenaAlertas.mdb;Uid=Admin;Pwd=;[Ô]
CONEXAO.Execute ([Ô]INSERT INTO Ordem (Campo1, Campo2, Campo3) VALUES (2, [ô]comando .bat que envia alerta prioridade 2[ô], [ô]Aguardando[ô])[Ô])
Rs.CursorLocation =adUseClient [ô]Setar cursor no cliente
Set RS = CONEXAO.Execute([Ô]SELECT TOP 1 status FROM Ordem[Ô])
startVerifica1:
If Not (RS.EOF And RS.BOF) Then
Select Case RS!status
Case Is = [Ô]Enviando[Ô]
Sleep 10000
GoTo startVerifica1
Case Is = [Ô]Aguardando[Ô]
CONEXAO.Execute ([Ô]UPDATE Ordem SET status=[ô]Enviando[ô] WHERE id= [Ô] & txtnumeroid.text )
Shell App.Path & [Ô] este.bat[Ô]
Sleep 10000
CONEXAO.Execute ([Ô]DELETE * FROM Ordem WHERE status=[ô]Enviando[ô][Ô])
CONEXAO.Close
End select
End If
End Sub
MARCELO-TREZE e LUIZCOMINO, muito obrigado pelas dicas, mas ainda ficou ainda uma dúvida, quando executo o click e na primeira linha estiver com o status=[Ô]enviando[Ô] ele faz o loop que preciso, ou seja até encontrar a primeira linha com [Ô]aguardando[Ô], porém quando o status da primeira linha está [Ô]aguardando[Ô] ele sai apagando todas as demais linhas que estão com esse status, ele deveria apagar só a primeira e encerrar.
como ficou o código agora poste pra gente
Tópico encerrado , respostas não são mais permitidas