O módulo abaixo funcionava certo no Access 2000. No access 2010 ele não executa, o depurador para na linha Function Perfil() esperando algo mais, mas já tentei várias opções e não descubro o que mudou nessa versão. Esse módulo lê uma tabela e copia os registros para outra tabela, só que em outro formato, uma transposição de coluna para linha. Segue abaixo o código ou módulo.
Option Compare Database
Function Perfil()
Dim dbs As Database, qdf As QueryDef, strSQL As String
Dim tb1 As Recordset
Dim tb2 As Recordset
Set dbs = CurrentDb()
Set tb1 = dbs.OpenRecordset("Perfil_2010_2011")
Set tb2 = dbs.OpenRecordset("Novo-Perfil_2010_2011-mod")
' ------------------------------------------------------------------------------------------------------------------------
If Not tb2.BOF Then ' Limpa a tabela Novo-Perfil_2010_2011 antes de normalizá-la
tb2.MoveFirst
Do Until tb2.EOF
tb2.Delete
tb2.MoveNext
Loop
End If
' -----------------------------------------------------------------------------------------------------------------------------
tb1.MoveFirst
Do Until tb1.EOF
'COMEÇO DA NORMALIZAÇÃO
If Not IsNull(tb1!COD_PESSOA) Then
If Not IsNull(tb1!Quadro1) Then
tb2.AddNew
tb2!ANO_LETIVO = tb1!ANO_LETIVO
tb2!SEM_LETIVO = tb1!SEM_LETIVO
tb2!ANO_SEM = tb1!ANO_SEM
tb2!COD_PESSOA = tb1!COD_PESSOA
tb2!CAMPUS_COD = tb1!CAMPUS_COD
tb2!COD_CURSO = tb1!COD_CURSO
tb2!CURSO_NOME = tb1!CURSO_NOME
tb2!CENTRO_SIGLA = tb1!CENTRO_SIGLA
tb2!Pergunta = "Quadro 1"
tb2!Resposta = tb1!Quadro1
tb2.Update
End If
End If
tb1.MoveNext
Loop
tb1.Close
tb2.Close
End Function
Option Compare Database
Function Perfil()
Dim dbs As Database, qdf As QueryDef, strSQL As String
Dim tb1 As Recordset
Dim tb2 As Recordset
Set dbs = CurrentDb()
Set tb1 = dbs.OpenRecordset("Perfil_2010_2011")
Set tb2 = dbs.OpenRecordset("Novo-Perfil_2010_2011-mod")
' ------------------------------------------------------------------------------------------------------------------------
If Not tb2.BOF Then ' Limpa a tabela Novo-Perfil_2010_2011 antes de normalizá-la
tb2.MoveFirst
Do Until tb2.EOF
tb2.Delete
tb2.MoveNext
Loop
End If
' -----------------------------------------------------------------------------------------------------------------------------
tb1.MoveFirst
Do Until tb1.EOF
'COMEÇO DA NORMALIZAÇÃO
If Not IsNull(tb1!COD_PESSOA) Then
If Not IsNull(tb1!Quadro1) Then
tb2.AddNew
tb2!ANO_LETIVO = tb1!ANO_LETIVO
tb2!SEM_LETIVO = tb1!SEM_LETIVO
tb2!ANO_SEM = tb1!ANO_SEM
tb2!COD_PESSOA = tb1!COD_PESSOA
tb2!CAMPUS_COD = tb1!CAMPUS_COD
tb2!COD_CURSO = tb1!COD_CURSO
tb2!CURSO_NOME = tb1!CURSO_NOME
tb2!CENTRO_SIGLA = tb1!CENTRO_SIGLA
tb2!Pergunta = "Quadro 1"
tb2!Resposta = tb1!Quadro1
tb2.Update
End If
End If
tb1.MoveNext
Loop
tb1.Close
tb2.Close
End Function