Bases de Datos - Error parametros al copiar tabla a tabla por sql

 
Vista:
Imágen de perfil de Roland

Error parametros al copiar tabla a tabla por sql

Publicado por Roland (3 intervenciones) el 31/10/2022 11:07:02
Buenas a todos! Estoy tratando de copiar los datos de un campo (USUARIOS) de una tabla (TBL_ORIGEN) a otra tabla (TBL_USUARIOS). El origen tiene usuarios repetidos, y quiero que el destino tenga los usuarios únicos, es decir, lo mismo que en origen, pero sin estar repetidos..

la sentencia sql que uso es la siguiente: sql = "SELECT DISTINCT usuarios FROM tbl_origen" pero me da error de parametros (pocos parametros, se esperaba 1)

os copio el codigo de la funcion:

Dim db As DAO.Database, sql As String
Dim rstL, rstE As DAO.Recordset
Dim i As Integer

'VOLCADO DE LA TABLA USUARIOS'
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++'

sql = "SELECT * FROM tbl_origen usuarios" 'Cógeme todos los datos de la tabla tbl_origen

Set db = CurrentDb() 'Asigno a db la base de datos actual que tengo abierta

Set rstL = db.OpenRecordset(sql, dbOpenForwardOnly) 'rstL apunta a la tabla tbl_origen en modo solo lectura
Set rstE = db.OpenRecordset("tbl_usuarios", dbOpenDynaset) 'rstE apunta a la usuarios en modo escritura
i = 1 'esta variable nos irá introduciendo los ID primary key de cada tabla


If rstE.BOF = True And rstE.EOF = True Then 'Si principio de fichero y final de fichero son verdaderos, entonces la tabla esta vacía
With rstE
Do Until rstL.EOF
.AddNew
!ID = i
i = i + 1
!nombre = rstL!usuario
If !nombre = "_" Then
!nombre = "NINGUNO"
End If
.Update
rstL.MoveNext
Loop
End With
rstL.Close
rstE.Close
db.Close
MsgBox "Datos volcados con éxito", vbInformation, "Aviso"
Else

MsgBox "Antes de volcar los nuevos datos debe eliminar los datos anteriores", vbInformation, "Aviso"

End If


Lo curioso que no entiendo es por qué si uso sql = "SELECT * FROM tbl_origen" no me da error, y me copia los datos, pero claro, me los copia todos, con sus repeticiones, y eso no me vale.
Tambien he probado a hacerlo con un UPDATE y me tira el mismo error en la misma linera:

la linea que me da el error es en el primero set:
Set rstL = db.OpenRecordset(sql, dbOpenForwardOnly) 'rstL apunta a la tabla tbl_origen en modo solo lectura

¿Podéis ayudarme amigos? muchas gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Roland

Error parametros al copiar tabla a tabla por sql

Publicado por Roland (3 intervenciones) el 31/10/2022 11:21:52
10 minutos después de colgar la pregunta acabo de encontrar yo mismo la respuesta, así que a quien le pueda ayudar, ahí va:

El error era en el campo USUARIO de la tabla origen. El campo se llama USUARIO y no USUARIOS, como estaba poniendo.
Ya me funciona el codigo.



Gracias a todos igualmente!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar