ERRO VB6 E ACCESS

RAFALNX 02/07/2012 17:20:52
#405362
Citação:

:
como ficou o código agora poste pra gente



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 (Prioridade, Comando, Status) 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[ô] WHERE status=[ô]Aguardando[ô][Ô])
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 02/07/2012 18:11:42
#405365
você possui um campo id ou código que seja único.

pois ai bastaria você usa-lo para o delete exemplo

CONEXAO.Execute ([Ô]DELETE * FROM Ordem WHERE status=[ô]Enviando[ô] and codigo=[Ô] & RS!codigo)

compreendeu a idéia

RAFALNX 03/07/2012 08:44:40
#405400
MARCELO-TREZE, entendi sua ideia, porem não tenho um código que seja único, visto que preciso precisaria apagar a primeira linha, não importando o valor de uma id por exemplo.
Quando efetuado o Select TOP 1.... ele não deveria retornar somente essa linha? e o restante do código ser baseado somente nessa linha?, veja o que está acontecendo.

A linha:
CONEXAO.Execute ([Ô]UPDATE Ordem SET status=[ô]Enviando[ô] WHERE status=[ô]Aguardando[ô][Ô]) está aplicando a todas as linhas, deveria ser apenas na primeira

Consequentemente a linha:
CONEXAO.Execute ([Ô]DELETE * FROM Ordem WHERE status=[ô]Enviando[ô][Ô]) irá apagar todos os dados da tabela.
Página 2 de 2 [13 registro(s)]
Tópico encerrado , respostas não são mais permitidas