Excel 대시 보드에 연결되어있는 Access 데이터베이스가 있습니다. 작업을 수행하는 쿼리가 있지만 쿼리를 완료하기 전에 몇 가지 날짜를 조건으로 설정해야합니다. 대시 보드 내의 몇 가지 지점을 가리키는 매개 변수를 사용하여 쿼리가 올바르게 수행되는 데 필요한 날짜를 검색합니다.MS Query의 설정 매개 변수
액세스 필드의 날짜는 date/time
으로 설정되고 대시 보드의 날짜도 date/time
으로 설정됩니다. 어떤 이유로 쿼리를 실행하려고하면 [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression]
이 표시됩니다. 앞에서 언급했듯이 가리키는 Excel 위치와 연결하는 액세스 필드는 모두 같은 유형으로 설정됩니다.
날짜를 SQL에 하드 코딩하면 쿼리가 완벽하게 실행되고 매개 변수 팝업 창에 날짜를 입력 할 때도 올바르게 실행됩니다. 이것이 작동하지 않는 유일한 경우는 대시 보드 내에서 날짜를 지정하려고 할 때 위의 오류 메시지가 표시됩니다. HAVING
후
SELECT tbl_Master_Phone.ID,
tbl_Master_Bill_Cycle_Date.Bill_Cycle_Date,
tbl_Master_ECPD.Client_ID,
tbl_Master_Client.Client_Name,
tbl_Master_ECPD.ECPD_ID,
tbl_Master_Account.Account_Number,
tbl_Master_Phone.Wireless_Number,
tbl_Master_Username.User_Name,
tbl_Master_Cost_Center.Cost_Center,
Max(tbl_Inventory.Bill_Cycle_Date) ,
tbl_Master_Device.Device_Model,
tbl_Master_Device.Device_Type,
tbl_Inventory.Device_ID,
tbl_Inventory.SIM,
tbl_Inventory.Contract_Activate_Date,
tbl_Inventory.Contract_End_Date,
tbl_Inventory.Upgrade_Eligibility_Date
FROM tbl_Master_Username
INNER JOIN ((tbl_Master_Client
INNER JOIN ((tbl_Master_Account
INNER JOIN tbl_Master_ECPD
ON tbl_Master_Account.ECPD_ID = tbl_Master_ECPD.ID)
INNER JOIN (tbl_Master_Device
INNER JOIN (tbl_Master_Phone
INNER JOIN tbl_Inventory
ON tbl_Master_Phone.ID = tbl_Inventory.Wireless_Number)
ON tbl_Master_Device.ID = tbl_Inventory.Device_Model)
ON tbl_Master_Account.ID = tbl_Inventory.Account_Number)
ON tbl_Master_Client.ID = tbl_Master_ECPD.Client_ID)
INNER JOIN (tbl_Master_Bill_Cycle_Date
INNER JOIN (tbl_Master_Cost_Center
INNER JOIN tbl_Phone_Details
ON tbl_Master_Cost_Center.ID = tbl_Phone_Details.Cost_Center)
ON tbl_Master_Bill_Cycle_Date.Bill_Cycle_Date = tbl_Phone_Details.Bill_Cycle_Date)
ON tbl_Master_Phone.ID = tbl_Phone_Details.Wireless_Number)
ON tbl_Master_Username.ID = tbl_Phone_Details.Username
Where ((tbl_Inventory.Bill_Cycle_Date<=?))
GROUP BY tbl_Master_Phone.ID,
tbl_Master_Bill_Cycle_Date.Bill_Cycle_Date,
tbl_Master_ECPD.Client_ID,
tbl_Master_Client.Client_Name,
tbl_Master_ECPD.ECPD_ID,
tbl_Master_Account.Account_Number,
tbl_Master_Phone.Wireless_Number,
tbl_Master_Username.User_Name,
tbl_Master_Cost_Center.Cost_Center,
tbl_Master_Device.Device_Model,
tbl_Master_Device.Device_Type,
tbl_Inventory.Device_ID,
tbl_Inventory.SIM,
tbl_Inventory.Contract_Activate_Date,
tbl_Inventory.Contract_End_Date,
tbl_Inventory.Upgrade_Eligibility_Date
HAVING ((tbl_Master_Bill_Cycle_Date.Bill_Cycle_Date>=?)
AND (tbl_Master_ECPD.Client_ID=?)
AND (tbl_Master_Bill_Cycle_Date.Bill_Cycle_Date<=?));
당신이 볼 수 있듯이, 바로 WHERE
문 다음에 설정 매개 변수가, 3 개 다음은 쿼리에 대한 내 코드입니다. HAVING
이후의 두 번째 매개 변수는 정상적으로 작동하지만 날짜가 필요한 세 개의 매개 변수는 오류를 발생시키는 매개 변수입니다. 데이터 유형이 동일하면이 문제의 원인은 무엇입니까?
Excel에서 날짜가 꽤 이상하게 나올 수 있으며 MS Access에서 명확한 날짜가 필요합니다. 아마도 매개 변수를 제공하는 Excel 코드를 게시 할 수 있습니까? – Fionnuala
추신 : 한동안 별칭을 살펴 보았으므로 SQL을 훨씬 쉽게 읽을 수 있습니다. – Fionnuala
아쉽게도 이것은 MS Query가 디자인보기에서 설정 한 SQL 빌드입니다. 엑셀 코드에 관해서는, 나는 그것이 당신이 무엇을 의미하는지 완전히 확신하지 못합니다. 셀 위치 및 매개 변수가 가리키는 위치를 원하십니까? – Jcmoney1010