程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> sql server數據庫轉換為access中需要注意的嚴重問題--access視圖的一個死機‘特色’

sql server數據庫轉換為access中需要注意的嚴重問題--access視圖的一個死機‘特色’

編輯:關於SqlServer

項目需要這樣的轉換,發現有些視圖轉換後查詢死機,經過一番研究, 終於有點收獲:

原來的死機sql:(簡化過)

SELECT  產品ID,
          (SELECT SUM(數量)
         FROM dbo.nowlib nowlib
         WHERE nowlib.產品ID = Product.產品ID) AS 現存數量, 預警上限, 預警下限,
          (SELECT 預警上限 - SUM(數量)
         FROM dbo.nowlib nowlib
         WHERE nowlib.產品ID = Product.產品ID) AS 缺貨數量, 通用名, 輸入碼, 品名, 產地,
      規格, 單位, 包裝, 劑型, 零售價, 批發價, 近期進價, 批准文號
FROM dbo.PRODUCT Product
GROUP BY 產品ID, 通用名, 輸入碼, 品名, 產地, 規格, 單位, 包裝, 劑型, 零售價, 批發價,
      近期進價, 批准文號, 預警上限, 預警下限
ORDER BY 品名, 產地

上面的sql在sqlserver中完全正常,但是Access中修改過一點語法區別後仍死機,經過試驗發現第一個子查詢是正常的,第二個會出錯。研究後發現如果子查詢中出現了:預警上限,就會出錯,這是主表PRODUCT 中的字段,所以推論是如果子表出現主表的字段,就會出錯(where後面用於連接的id不算)。

修改後的sql語句可以正常了,像下面這樣(簡化過):

SELECT 產品ID, 預警上限, 預警下限, 通用名, 輸入碼, 品名, 產地, 規格, 單位, 包裝, 劑型, 零售價, 批發價, 近期進價, 批准文號,

(SELECT SUM(n3.數量) as tmp
FROM nowlib as n3         
WHERE n3.產品ID = pro.產品ID) AS 總數量3, 預警上限-總數量3 AS 缺貨數量

FROM PRODUCT AS Pro
GROUP BY 產品ID, 通用名, 輸入碼, 品名, 產地, 規格, 單位, 包裝, 劑型, 零售價, 批發價, 近期進價, 批准文號, 預警上限, 預警下限
ORDER BY 品名, 產地;

-------------------------------------------------------------------------------------------------------------------------------------------

原來Access還有這樣一個‘特色’,寫出來給那些仍然正在郁悶中的人解脫一下。對了,網上找到一些資料,是關於SQL Server轉換為 Access時候需要注意的問題,一並列出:

-------------------------------------------------------------------------------------------------------------------------------------------

最近正在升級一個程序,使其支持多數據庫。
原來的程序數據庫為SQL Server,所以使用SQL Server 的“導入和導出數據”功能將一個 SQL Server 數據庫轉換成了Access數據庫,但其中發現了一些問題,但也找到了解決方案,一並記錄於此:

1、轉換程序會將SQL Server的視圖轉換成表,而不是Access的查詢;
2、在為字段設置默認值為空字符的時候,SQL Server用‘’(空單引號),而Access用“”(空雙引號);
3、Access中沒有GetDate()函數,應該使用Now()函數代替;
4、Access沒有SQL Server用來獲取客戶端機器名的host_name()函數;
5、Access中沒有Case When Then語句,

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved