2012-06-21 12 views
5

Tengo dos campos en tablas vinculadas separadas con los mismos datos, pero diferentes tipos de datos. No puedo cambiar los tipos de datos en las tablas. Estoy intentando una consulta que une las dos tablas en base a estos datos, pero dado que los tipos son diferentes, necesito convertir el número a una cadena. Lo que he estado tratando, básicamente, es la siguiente: "Únete expresión no apoyado"Ejecutar expresión CStr() dentro de la instrucción JOIN

... 
FROM Table1 LEFT JOIN Table2 ON CStr([Table1].[Column]) = Table2.Column 
... 

Sólo sigo recibiendo mensajes de error, sobre todo

¿Alguien puede arrojar algo de luz sobre lo que puedo estar haciendo mal/qué podría hacer mejor?

Gracias.

+0

En MS Access, la vista de diseño de la ventana de diseño de consultas es bastante limitada. ¿Se puede ejecutar directamente desde la ventana de vista SQL? – Fionnuala

+0

Sí, he estado editando/ejecutando esto fuera de la vista de SQL – Tim

+2

Luego se acaba de encontrar una limitación de la ventana de diseño. Deberá usar la vista sql para mantener su consulta. – Fionnuala

Respuesta

1

Aquí está su cláusula FROM reordenada:

FROM 
    Table1.Column 
    LEFT JOIN Table2.Column 
    ON CStr([Table1].[Column]) = Table2.Column 

Aviso Utiliza Table1.Column y Table2.Column como las fuentes de datos. Y esas son columnas (campos), no tablas (reales o virtuales).

Trate de esta manera en su lugar:

FROM 
    Table1 
    LEFT JOIN Table2 
    ON CStr([Table1].[Column]) = Table2.Column 

Acceso diseñador de consultas tiene problemas para hacer frente con juntas que incluyen funciones en el sobre la expresión. Aunque no veo evidencia que confunda el problema en su pregunta, le sugiero que descarte esa posibilidad al pegar la siguiente declaración en la ventana Inmediato y ejecutarla allí.

Set rs = CurrentDb.OpenRecordset(_ 
"SELECT Count(*) AS row_count" & vbCrLf & _ 
"FROM Table1 AS t1" & vbCrLf & _ 
"LEFT JOIN Table2 AS t2" & vbCrLf & _ 
"ON CStr(t1.[Column])=t2.[Column];") : _ 
? rs(0) : _ 
rs.Close : _ 
Set rs = Nothing 

Aviso cada uno de esos caracteres de continuación de línea (subrayado, "_") debe ser precedido por un espacio y no tienen caracteres después.

+0

Mis disculpas, mi JOIN no estaba realmente formateada de esa manera. Erróneamente lo escribí a la pregunta. Fue formateado de la manera correcta, que publicaste, todo el tiempo y no funcionó. – Tim

+0

Acabo de actualizar mi respuesta. Me doy cuenta de que es una posibilidad remota. Sin embargo, si la declaración arroja un valor razonable sin arrojar un error, debemos cambiar el rumbo. – HansUp

Cuestiones relacionadas