GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Grupos técnicos  Ir para Fóruns  Access    Seek, hora funciona, hora não funciona
Go
Novo
Procurar
Notificar
Ferramentas
Responder
  
-star Rating Vote!  Login/Cadastrar 
Iniciante

postado
Tenho uma rotina q faz pesquisa em umas tabelas q tenho no banco, porem, quando uso o Seek nas 2 primeiras opções de busca, ele funciona, nas 2 ultimas não.
estou passando o codigo que tenho para efetuar a pesquisa.

Function Com_OPTX(ByVal at As String, ByVal an As String)
Dim db As Database
Dim Atual, Antiga As DAO.Recordset
Dim tbl As DAO.TableDef
Dim flag As Integer

DoCmd.SetWarnings False

DoCmd.RunSQL ("CREATE INDEX Atual ON " & at & " (EMPS_COD, FILI_COD, PROG_COD, CODIG_OPT, CODIG_SEQ)")
DoCmd.RunSQL ("CREATE INDEX Antiga ON " & an & " (EMPS_COD, FILI_COD, PROG_COD, CODIG_OPT, CODIG_SEQ)")

DoCmd.RunSQL ("CREATE INDEX Atual ON " & at & " (EMPS_COD, FILI_COD, PROG_COD, CODIG_OPT, CODIG_SEQ, CODIG_OPT4_SEQ)")
DoCmd.RunSQL ("CREATE INDEX Antiga ON " & an & " (EMPS_COD, FILI_COD, PROG_COD, CODIG_OPT, CODIG_SEQ, CODIG_OPT4_SEQ)")

Set db = CurrentDb()
Set Atual = db.OpenRecordset(at)
Set Antiga = db.OpenRecordset(an)

Atual.Index = "atual"
Antiga.Index = "antiga"

Atual.MoveFirst
Antiga.MoveFirst

temp_ind = 1

'bloco de verificação
If flag = 1 Then
corretos = 0
erros = 0
Do While Not Atual.EOF
Antiga.Seek "=", Atual![EMPS_COD], Atual![FILI_COD], Atual![PROG_COD]
If Antiga.NoMatch Then
Stop
If temp_ind = 1 Then
DoCmd.RunSQL "SELECT * INTO " & at & "_TEMP " & _
"FROM " & at & " WHERE " & at & ".EMPS_COD='1' ;"
temp_ind = 0
End If
sql1 = ""
sql1 = "INSERT INTO " & at & "_TEMP "
sql1 = sql1 + "SELECT * FROM " & at & " WHERE EMPS_COD ='" & Atual![EMPS_COD] & "' and FILI_COD='" & Atual![FILI_COD] & "' and PROG_COD='" & Atual![PROG_COD] & "' ;"
DoCmd.RunSQL sql1
erros = erros + 1
Else
If Antiga![OPTEW] = Atual![OPTEW] And Antiga![AUDIT_DESV2] = Atual![AUDIT_DESV2] And Antiga![OPTFILI] = Atual![OPTFILI] And Antiga![ARQ] = Atual![ARQ] And Antiga![CODIG_SEL] = Atual![CODIG_SEL] And Antiga![AUDIT_DESV] = Atual![AUDIT_DESV] Then
corretos = corretos + 1
Else
Stop
If temp_ind = 1 Then
DoCmd.RunSQL "SELECT * INTO " & at & "_TEMP " & _
"FROM " & at & " WHERE " & at & ".EMPS_COD='1' ;"
temp_ind = 0
End If
sql1 = ""
sql1 = "INSERT INTO " & at & "_TEMP "
sql1 = sql1 + "SELECT * FROM " & at & " WHERE EMPS_COD ='" & Atual![EMPS_COD] & "' and FILI_COD='" & Atual![FILI_COD] & "' and PROG_COD='" & Atual![PROG_COD] & "' ;"
DoCmd.RunSQL sql1
erros = erros + 1
End If

End If
Atual.MoveNext
Loop

MsgBox "Foram processados " & corretos + erros & " dos quais " & erros & " estão errrados"

ElseIf flag = 2 Then

corretos = 0
erros = 0
Do While Not Atual.EOF
Antiga.Seek "=", Atual![EMPS_COD], Atual![FILI_COD], Atual![PROG_COD], Atual![CODIG_OPT]
Stop
If Antiga.NoMatch Then
Stop
If temp_ind = 1 Then
DoCmd.RunSQL "SELECT * INTO " & at & "_TEMP " & _
"FROM " & at & " WHERE " & at & ".EMPS_COD='1' ;"
temp_ind = 0
End If
sql1 = ""
sql1 = "INSERT INTO " & at & "_TEMP "
sql1 = sql1 + "SELECT * FROM " & at & " WHERE EMPS_COD ='" & Atual![EMPS_COD] & "' and FILI_COD='" & Atual![FILI_COD] & "' and PROG_COD='" & Atual![PROG_COD] & "' and CODIG_OPT='" & Atual![CODIG_OPT] & "' ;"
DoCmd.RunSQL sql1
erros = erros + 1
Else
'Antiga![CODIG_VERSION] = Atual![CODIG_VERSION] And
If Antiga![CODIG_CUSTOM] = Atual![CODIG_CUSTOM] And Antiga![CODIG_TIPO] = Atual![CODIG_TIPO] And Antiga![CODIG_MSG] = Atual![CODIG_MSG] And Antiga![CODIG_DSC] = Atual![CODIG_DSC] And Antiga![CODIG_PROC] = Atual![CODIG_PROC] Then
corretos = corretos + 1
Else
'Stop
If temp_ind = 1 Then
DoCmd.RunSQL "SELECT * INTO " & at & "_TEMP " & _
"FROM " & at & " WHERE " & at & ".EMPS_COD='1' ;"
temp_ind = 0
End If
sql1 = ""
sql1 = "INSERT INTO " & at & "_TEMP "
sql1 = sql1 + "SELECT * FROM " & at & " WHERE EMPS_COD ='" & Atual![EMPS_COD] & "' and FILI_COD='" & Atual![FILI_COD] & "' and PROG_COD='" & Atual![PROG_COD] & "' and CODIG_OPT='" & Atual![CODIG_OPT] & "' ;"
DoCmd.RunSQL sql1
erros = erros + 1
End If

End If
Atual.MoveNext
Loop


MsgBox "Foram processados " & corretos + erros & " dos quais " & erros & " estão errrados"

ElseIf flag = 3 Then

corretos = 0
erros = 0
Stop
Do While Not Atual.EOF
Antiga.Seek "=", Atual![EMPS_COD], Atual![FILI_COD], Atual![PROG_COD], Atual![CODIG_OPT], Atual![CODIG_SEQ] '"ALLIANCE", "ALLIANCE", "ADICAO", "01", 1 '
If Antiga.NoMatch Then
Stop
If temp_ind = 1 Then
DoCmd.RunSQL "SELECT * INTO " & at & "_TEMP " & _
"FROM " & at & " WHERE " & at & ".EMPS_COD='1' ;"
temp_ind = 0
End If
sql1 = ""
sql1 = "INSERT INTO " & at & "_TEMP "
sql1 = sql1 + "SELECT * FROM " & at & " WHERE EMPS_COD ='" & Atual![EMPS_COD] & "' and FILI_COD='" & Atual![FILI_COD] & "' and PROG_COD='" & Atual![PROG_COD] & "' and CODIG_OPT='" & Atual![CODIG_OPT] & "' and CODIG_SEQ=" & Atual![CODIG_SEQ] & " ;"
DoCmd.RunSQL sql1
erros = erros + 1
Else
'Antiga![CODIG_VERSION] = Atual![CODIG_VERSION] And
If Antiga![CODIG_CUSTOM] = Atual![CODIG_CUSTOM] And Antiga![CODIG_MUDA] = Atual![CODIG_MUDA] And Antiga![CAMPO0] = Atual![CAMPO0] And Antiga![CAMPO1] = Atual![CAMPO1] And Antiga![CAMPO2] = Atual![CAMPO2] And Antiga![CAMPO3] = Atual![CAMPO3] And Antiga![CAMPO4] = Atual![CAMPO4] And _
Antiga![CAMPO5] = Atual![CAMPO5] And Antiga![CAMPO6] = Atual![CAMPO6] And Antiga![CAMPO7] = Atual![CAMPO7] And Antiga![CAMPO8] = Atual![CAMPO8] And Antiga![CAMPO9] = Atual![CAMPO9] And Antiga![CAMPO10] = Atual![CAMPO10] And Antiga![CAMPO11] = Atual![CAMPO11] And Antiga![CAMPO12] = Atual![CAMPO12] And Antiga![CAMPO13] = Atual![CAMPO13] And Antiga![CAMPO14] = Atual![CAMPO14] And Antiga![CAMPO15] = Atual![CAMPO15] And Antiga![CAMPO16] = Atual![CAMPO16] And Antiga![CAMPO17] = Atual![CAMPO17] And Antiga![CAMPO18] = Atual![CAMPO18] And Antiga![CAMPO19] = Atual![CAMPO19] And Antiga![CAMPO20] = Atual![CAMPO20] And Antiga![CAMPO21] = Atual![CAMPO21] And Antiga![CAMPO22] = Atual![CAMPO22] And Antiga![CAMPO23] = Atual![CAMPO23] And Antiga![CAMPO24] = Atual![CAMPO24] Then

corretos = corretos + 1

Else

If temp_ind = 1 Then
DoCmd.RunSQL "SELECT * INTO " & at & "_TEMP " & _
"FROM " & at & " WHERE " & at & ".EMPS_COD='1' ;"
temp_ind = 0
End If
sql1 = ""
sql1 = "INSERT INTO " & at & "_TEMP "
sql1 = sql1 + "SELECT * FROM " & at & " WHERE EMPS_COD ='" & Atual![EMPS_COD] & "' and FILI_COD='" & Atual![FILI_COD] & "' and PROG_COD='" & Atual![PROG_COD] & "' and CODIG_OPT='" & Atual![CODIG_OPT] & "' and CODIG_SEQ=" & Atual![CODIG_SEQ] & " ;"
DoCmd.RunSQL sql1
erros = erros + 1
End If

End If
Atual.MoveNext
Loop

MsgBox "Foram processados " & corretos + erros & " dos quais " & erros & " estão errrados"

ElseIf flag = 4 Then

corretos = 0
erros = 0
Do While Not Atual.EOF
Antiga.Seek "=", Atual![EMPS_COD], Atual![FILI_COD], Atual![PROG_COD], Atual![CODIG_OPT], Atual![CODIG_SEQ], Atual![CODIG_OPT4_SEQ]
If Antiga.NoMatch Then
Stop
If temp_ind = 1 Then
DoCmd.RunSQL "SELECT * INTO " & at & "_TEMP " & _
"FROM " & at & " WHERE " & at & ".EMPS_COD='1' ;"
temp_ind = 0
End If
sql1 = ""
sql1 = "INSERT INTO " & at & "_TEMP "
sql1 = sql1 + "SELECT * FROM " & at & " WHERE EMPS_COD ='" & Atual![EMPS_COD] & "' and FILI_COD='" & Atual![FILI_COD] & "' and PROG_COD='" & Atual![PROG_COD] & "' and CODIG_OPT='" & Atual![CODIG_OPT] & "' and CODIG_SEQ=" & Atual![CODIG_SEQ] & " And CODIG_OPT4_SEQ=" & Atual![CODIG_OPT4_SEQ] & " ;"
DoCmd.RunSQL sql1
erros = erros + 1
Else
'And Antiga![CODIG_VERSION] = Atual![CODIG_VERSION]
If Antiga![CODIG_CUSTOM] = Atual![CODIG_CUSTOM] And Antiga![CODIG_MUDA] = Atual![CODIG_MUDA] And _
Antiga![CAMPO0] = Atual![CAMPO0] And Antiga![CAMPO1] = Atual![CAMPO1] And Antiga![CAMPO2] = Atual![CAMPO2] And Antiga![CAMPO3] = Atual![CAMPO3] And Antiga![CAMPO4] = Atual![CAMPO4] And _
Antiga![CAMPO5] = Atual![CAMPO5] And Antiga![CAMPO6] = Atual![CAMPO6] And Antiga![CAMPO7] = Atual![CAMPO7] And Antiga![CAMPO8] = Atual![CAMPO8] And _
Antiga![CAMPO9] = Atual![CAMPO9] And Antiga![CAMPO10] = Atual![CAMPO10] Then

corretos = corretos + 1

Else

If temp_ind = 1 Then
DoCmd.RunSQL "SELECT * INTO " & at & "_TEMP " & _
"FROM " & at & " WHERE " & at & ".EMPS_COD='1' ;"
temp_ind = 0
End If
sql1 = ""
sql1 = "INSERT INTO " & at & "_TEMP "
sql1 = sql1 + "SELECT * FROM " & at & " WHERE EMPS_COD ='" & Atual![EMPS_COD] & "' and FILI_COD='" & Atual![FILI_COD] & "' and PROG_COD='" & Atual![PROG_COD] & "' and CODIG_OPT='" & Atual![CODIG_OPT] & "' and CODIG_SEQ=" & Atual![CODIG_SEQ] & " And CODIG_OPT4_SEQ=" & Atual![CODIG_OPT4_SEQ] & " ;"
DoCmd.RunSQL sql1
erros = erros + 1
End If

End If
Atual.MoveNext
Loop

MsgBox "Foram processados " & corretos + erros & " dos quais " & erros & " estão errrados"
DoCmd.OpenTable at & "_TEMP ", acViewNormal

End If

db.Close

DoCmd.RunSQL ("DROP INDEX Atual ON " & at)
DoCmd.RunSQL ("DROP INDEX Antiga ON " & an)
End Function

Para o Flag 1 e 2 o seek retorna a busca corretamente, mas para o Flag 3 e 4 não, oq sera q pode estar acontecendo.

Obrigado pela ajuda.
 
Postagens: 1 | Registrado: 14 October 2005Reply With QuoteEditar ou Apagar MensagemReport This Post
Gerente

Figura de  OsmarJr
postado Hide Post
'(P) Posso executar um SEEK E INDEX em tabelas vinculadas?

'® Diretamente, NÃO. Mas a função abaixo permite que isto seja feito:

'(Cuidado com as continuações de linhas. É uma única linha de código.)


'************ Início do Código ***************
'Este código foi escrito originalmente por Michel Walsh.
'Não deve ser alterado ou distribuído,
'exceto como parte de um aplicativo.
'Use-o livremente em qualquer aplicativo,
'mas deixe este aviso de copyright inalterado.
'
'Código cortesia de
'Michel Walsh

Public Function OpenForSeek(TableName As String) As Recordset
' Assume uma tabela MS-ACCESS
   Set OpenForSeek = DBEngine.Workspaces(0).OpenDatabase _
                   (Mid(CurrentDb().TableDefs(TableName).Connect, _
                   11), False, False, "").OpenRecordset(TableName, _
                   dbOpenTable)
End Function
'************ Code End ***************


'Use simplesmente:
'
'Dim rst As Recordset
'
'Set rst = OpenForSeek("NomeDaTabela")
'
'e pode usar rst.Seek e rst.Index na tabela vinculada NomeDaTabela.



========================================================
Feliz A terra é um dos planetas mais conhecidos e habitados no mundo.
O Fórum do AtivoAccess voltou: www.ativoaccess.com.br/forum
Feliz
 
Postagens: 3040 | Localização: Curitiba - PR | Registrado: 08 March 2001Reply With QuoteEditar ou Apagar MensagemReport This Post
 Tópico Anterior | Próximo Tópico powered by eve community  
 

GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Grupos técnicos  Ir para Fóruns  Access    Seek, hora funciona, hora não funciona

©