2012-06-21 15 views
5

Tôi có hai trường trong các bảng được nối kết riêng biệt với cùng một dữ liệu, nhưng các kiểu dữ liệu khác nhau. Tôi không thể thay đổi các kiểu dữ liệu trong các bảng. Tôi đang thử một truy vấn mà tham gia hai bảng với nhau dựa trên dữ liệu này, nhưng kể từ khi các loại khác nhau tôi cần phải chuyển đổi số thành một chuỗi. Những gì tôi đã cố gắng, về cơ bản, là:Thực hiện biểu thức CStr() bên trong câu lệnh JOIN

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

Tôi chỉ nhận được thông báo lỗi, chủ yếu là "Tham gia biểu thức không được hỗ trợ".

Có ai có thể làm sáng tỏ những gì tôi có thể làm sai/những gì tôi có thể làm tốt hơn không?

Cảm ơn bạn.

+0

Trong dạng xem thiết kế truy nhập MS của cửa sổ thiết kế truy vấn là khá hạn chế. Bạn có thể chạy thẳng từ cửa sổ xem SQL không? – Fionnuala

+0

Có, tôi đã chỉnh sửa/chạy cái này trong chế độ xem SQL – Tim

+2

Sau đó, bạn vừa chạy lên chống lại một giới hạn của cửa sổ thiết kế. Bạn sẽ phải sử dụng chế độ xem sql để duy trì truy vấn của mình. – Fionnuala

Trả lời

1

Dưới đây là khoản FROM bạn định dạng lại:

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

Thông báo nó sử dụng Table1.ColumnTable2.Column như các nguồn dữ liệu. Và đó là các cột (các trường), không phải bảng (thực hoặc ảo).

Hãy thử nó theo cách này thay vì:

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

Truy cập nhà thiết kế truy vấn có rắc rối đối phó với với câu lệnh JOIN trong đó bao gồm các chức năng trong ON biểu. Mặc dù tôi không thấy bằng chứng gây nhầm lẫn cho vấn đề trong câu hỏi của bạn, tôi sẽ đề nghị bạn loại bỏ khả năng đó bằng cách dán câu lệnh sau vào cửa sổ ngay lập tức và thực hiện nó ở đó.

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 

Lưu ý mỗi ký tự tiếp tục dòng (dấu gạch dưới, "_") phải đứng trước dấu cách và không có ký tự nào sau đó.

+0

Lời xin lỗi của tôi, JOIN của tôi không thực sự được định dạng theo cách đó. Tôi đã gõ nhầm vào câu hỏi đó. Nó đã được định dạng đúng cách - mà bạn đã đăng - toàn bộ thời gian và nó không hoạt động. – Tim

+0

Tôi vừa cập nhật câu trả lời của mình. Tôi nhận ra đó là một cú sút dài. Tuy nhiên, nếu tuyên bố trả về một giá trị hợp lý mà không có lỗi, chúng ta cần phải thay đổi khóa học. – HansUp