none
要如何將Access的多比資料利用ASP.NET2.0一次傳到SQLSever的資料庫 RRS feed

  • 問題

  • 如何將所選取的某幾筆資料Access並利用ChickBox等選取後,將所選取的資料一次而非單筆的複製(或上傳)到SQLSever其他資料庫的某資料表內或Access資料表內?

     

     

    2006年10月21日 下午 01:33

解答

所有回覆

  • 請參考 Insert Into 語法。

    若是你的電腦安裝的是 Access 2003 ,請將下列位置貼到 IE 網址列,有使用說明。

    mk:@MSITStore:C:\Program%20Files\Common%20Files\Microsoft%20Shared\OFFICE11\1028\JETSQL40.CHM::/dasqlinsertinto.htm

    若是 Access XP ,則:

    mk:@MSITStore:C:\Program%20Files\Common%20Files\Microsoft%20Shared\OFFICE10\1028\JETSQL40.CHM::/dasqlinsertinto.htm

    2006年10月21日 下午 03:49
  • 用 INSERT INTO ... SELECT ... 的方式 .
    但是:

    • 你的來源資料表必須要有可識別的唯一 key.
    • 用 SELECT 取出的欄位要和 INSERT INTO 的目標資料表欄位數一致
    • 使用 IN 來過濾出你要的資料 .

    example:

    INSERT INTO target_table SELECT column1, column2, column3,... FROM source_table WHERE column_condition IN (value1, value2, value3, ...)

    2006年10月21日 下午 11:16
    版主
  • 也就是自ASP.Net2.0伺服器總管內的AccessDataSource取出資料後插入SqlDataSource的意思?

    1. target 的陳述要如何才會辨識或抓到已存在在伺服器總管內的SqlDataSource中的資料庫?還是要寫一長排路徑名稱經過簽證才能完成?而兩個資料庫可以用 INNER JOIN方式相連接?

    2. 可識別的唯一key是指欄位名稱相同且大小相同?或其他?

    3. 有沒有方法自AccessDataSource抓取資料後經過修正再一次利用INSER INTO target_table給他上去到SqlDataSource資料庫內?

    2006年10月22日 上午 01:55
  • 你如果不想經過 .Net 控制項,在給你的位置上面有寫:

    externaldatabase 外部資料庫的路徑 有關路徑的資訊,請參閱 IN 子句。

    註:

    在 WinXP SP1 的上面使用 In 子句可能會發生問題。

    http://groups.google.com.tw/group/microsoft.public.tw.dotnet.framework.ado/browse_thread/thread/33e0f01d98bcda0c

    其他參考:

    http://groups.google.com.tw/group/microsoft.public.tw.dotnet.languages.vb/browse_thread/thread/feda1616f771dd66

    2006年10月22日 上午 03:15
  • 能否有具體的範例

    我只想要將存在於某資料夾內Access XP 或2003 的資料經過過濾撈取後再利用ASP.NET2.0的GridView, DataList, FormView等並加以選取篩選後多筆傳送到存在於(local)中的SQL Sever內 而所使用的GridView, DataList, FormView
    資料來源設定要選用AccessDataSouce(Access XP 或2003 的資料) 或SqlDataSouce(SQL Sever)?

    也就是當利用GridView, DataList, FormView等資料項時SQL程式是要叫用AccessDataSouce(Access XP 或2003 的資料) 或SqlDataSouce(SQL Sever)?好像連接不同

    另外依以下您所提供的保貴資料

    INSERT INTO [資料表] Select * From 來源資料表  IN '' [odbc; Driver={SQL
    Server}; Server=(local); DataBase=
    來源資料庫; UID=帳號; PWD=密碼; ]  Where
    ((
    時間 >=#2001/09/03 23:00:00#) And (時間 <=#2001/09/19 23:00:00#)) Order By
    時間, 編號

    是參考SQL Server 的路逕
    我也修正為Access的路逕如下

    IN "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Server.MapPath("E:/Data/Data35.mdb")"
    慘敗
    後改為
    IN "Data Source=---------;Initial Catalog=------;Persist Security Info=True;User ID=帳號;Password=密碼;"

    IN '' [odbc; Driver={SQLServer}; Server=(local); DataBase=來源資料庫; UID=帳號; PWD=密碼; ]
    後仍然無法改變

    都在IN的陳述錯誤 也就是程式碼不對
    也參考IN的陳述後為
    IN "" [dBASE IV; DATABASE=C:\DBASE\DATA\SALES;];

    那個〔""〕就不對
    參考相當書籍改過後仍舊撈不到[Select * From 來源資料表] 的資料

     


     

     

     

    2006年10月22日 下午 01:50
  • 我當初在 http://support.microsoft.com/ 找相關資料。

    我還沒在 .net 中用過,你看到的那幾個範例我當時是在 ado 中用的。

    in 子句 可以用在 into 的受詞 或是 from 的來源,你要從 access 到 sql server 時,當你使用 access 的連接時,你就要用在 into 的受詞,當你用在 sql server 上時,in 子句就要用在 from 來源上。

    引號部份,我當初是用兩個單引號,不用兩個雙引號,因為 VB 會把兩個雙引號變成一個雙引號,所以就要四個雙引號才等於兩個雙引號。

    這個位置還有些 in 子句的範例:

    mk:@MSITStore:C:\Program%20Files\Common%20Files\Microsoft%20Shared\OFFICE11\1028\JETSQL40.CHM::/dasqlinx.htm

    2006年10月22日 下午 02:22
  • 建議你先用 Odbc 或 OleDb 來進行開發測試,我不清楚 Sql 類別如何實做,但是有可能不支援。
    2006年10月22日 下午 02:31
  • 以下的程式好像可以解決多筆資料的問題

    INSERT INTO target [(field1[, field2[, ...]])] [IN externaldatabase]
        SELECT [source.]field1[, field2[, ...]
        FROM tableexpression

     

     

    不好意思

    想請教另外的問題

    如果使用ASP.NET以DataList 或 GridView中加入CheckBox 再以Button 全選出設置於GridView或DataList中的CheckBox讓它全部打勾

     

     

    2006年10月28日 上午 03:23
  • 題外話:

    剛剛整理了一篇 用In 子句 Access 匯出 Excel :

    http://tlcheng.spaces.live.com/blog/cns!145419920BFD55A7!1290.entry

    不過

    我在 SQL Server 2005 那個 SQL 語法那邊不能下,不知道是不是 SqlConnection 這個類別不支援外部資料庫。

    我在 Access 內的 SQL 語法也不能測外部 odbc 來源,不知道是不是 Access 內建使用 Jet 引擎限制住了。

    我原先是用 ADO 在 ODBC 連線字串連 Access ,外部資料庫用 Odbc 連 SQL Server 2000 。

    2006年10月28日 上午 03:44