線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2588
推到 Plurk!
推到 Facebook!

如何在MSSQL上作個人專用的表格

答題得分者是:kevin2004
limary
初階會員


發表:41
回覆:109
積分:30
註冊:2007-01-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-07-09 16:09:00 IP:61.219.xxx.xxx 未訂閱
小妹習慣在Access單機環境下寫程式,因為是單機的,所以一切很簡單。可是
最近試者移到MSSQL上就有很多了。我常利用Access上某個表作暫存統計或暫存
中間篩出來要作進一步處理的資料,這在單機環境,沒問題。可是移到MSSQL多人
環境就有問題了,這表就會變成大家共用的。我要如何辦,才好。謝謝。
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-07-09 18:13:01 IP:61.66.xxx.xxx 訂閱
這個問題有點模糊~
請詳細說明遇到哪個問題!!
是無法開暫存的TABLE嘛!!
還是不知道麼開暫存的TABLE??
http://linux.tnc.edu.tw/techdoc/mysql/mysql_doc/manual_toc.html
以上網址請參考
------
======================
昏睡~
不昏睡~
不由昏睡~
kevin2004
資深會員


發表:18
回覆:463
積分:416
註冊:2005-05-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-07-10 14:32:29 IP:61.219.xxx.xxx 未訂閱
在PostgreSQL及MySQL中是有Create Temporary Table以建立一些
臨時資料表,在Session結束後會被自動Drop掉。如Session不同,
即使表名相同,也會被視為不同的表。此可能近似你的需求。
在Oracle中也有類似運用在Transaction中。
MSSQL我就不知道了。
以往單機用Paradox時,我們是常臨時Create一些Paradox表來用,
是蠻方便的。當然如果要移到DBMS上來,是要另想辦法的。你不能
用Array或物件來存放這些嗎?
------
Kevin
jackiemi2_seed
中階會員


發表:37
回覆:97
積分:76
註冊:2006-09-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-07-10 15:38:12 IP:61.218.xxx.xxx 訂閱
將暫存的那個表,加一個使用者帳號欄位,
但這樣可能全部的程式都要改寫了吧...
------
OS : Win 7 pro
Program : Delphi 7
DataBase : Ms Sql 2008
kevin2004
資深會員


發表:18
回覆:463
積分:416
註冊:2005-05-29

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-07-10 15:48:22 IP:61.219.xxx.xxx 未訂閱
本來,手癢的要命,很想寫一些解法,可是大家如此熱心,但偏偏沒有提問者的回覆,
實在寫不下去....
不可壞了規....
------
Kevin
limary
初階會員


發表:41
回覆:109
積分:30
註冊:2007-01-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-07-10 16:28:41 IP:61.219.xxx.xxx 未訂閱
請問前輩,如何在MSSQL上開個人暫時用的表格
謝謝
===================引 用 ko 文 章===================
這個問題有點模糊~
請詳細說明遇到哪個問題!!
是無法開暫存的TABLE嘛!!
還是不知道麼開暫存的TABLE??
http://linux.tnc.edu.tw/techdoc/mysql/mysql_doc/manual_toc.html
以上網址請參考
limary
初階會員


發表:41
回覆:109
積分:30
註冊:2007-01-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-07-10 16:34:42 IP:61.219.xxx.xxx 未訂閱
我有用到這些中間表作報表等處理,如果維持資料庫表格的架構,對已寫好的
程式比較方便
用陣列或物件的方式,由其是物件,真是很耐人思考,原先問題解決後,我要想想
物件這個解法
謝謝,
===================引 用 kevin2004 文 章===================
是蠻方便的。當然如果要移到DBMS上來,是要另想辦法的。你不能
用Array或物件來存放這些嗎?
limary
初階會員


發表:41
回覆:109
積分:30
註冊:2007-01-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-07-10 16:36:35 IP:61.219.xxx.xxx 未訂閱
懇請前輩援手,提攜後進,感恩不盡
===================引 用 kevin2004 文 章===================
本來,手癢的要命,很想寫一些解法,可是大家如此熱心,但偏偏沒有提問者的回覆,
實在寫不下去....
不可壞了規....
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#9 引用回覆 回覆 發表時間:2008-07-10 18:05:47 IP:203.75.xxx.xxx 未訂閱
利用TClientDataSet來建暫存表或許也是不錯的方法
編輯記錄
GrandRURU 重新編輯於 2008-07-10 18:06:11, 註解 無‧
limary
初階會員


發表:41
回覆:109
積分:30
註冊:2007-01-11

發送簡訊給我
#10 引用回覆 回覆 發表時間:2008-07-11 18:26:37 IP:61.219.xxx.xxx 未訂閱
謝謝GrandRURU前輩提供的建議,我這兩天仔細看了TClientDataSet及試了老半天,
,還要再仔細研究研究。我也翻了老幾本寫到TClientDataSet的書。
我要轉的標的系統沒有用到TClientDataSet,要如何插入這段應用,而且系統
中好幾個地方有用到個中間的表格﹝如報表的資料來源﹞。所以可能我還是要
找原先類似的解決方案。
還是要請前輩們多幫忙。
===================引 用 GrandRURU 文 章===================
利用TClientDataSet來建暫存表或許也是不錯的方法
cjtsif
一般會員


發表:12
回覆:13
積分:5
註冊:2002-09-18

發送簡訊給我
#11 引用回覆 回覆 發表時間:2008-07-14 14:31:44 IP:218.162.xxx.xxx 訂閱
在MSSQL中,Table名稱第一個字元為#的,就是Temporary Table(暫存表單),
如: CREATE TABLE #AAA FIELD1 VARCHAR(20), FIELD2 VRACHAR(20)
就是建立一個只有自己使用的Table: #AAA,
建立後,別人看不到這個Table,
程式關閉後(實際上是session關閉後),#AAA也會自動關閉
christie
資深會員


發表:30
回覆:299
積分:475
註冊:2005-03-25

發送簡訊給我
#12 引用回覆 回覆 發表時間:2008-07-14 17:10:24 IP:203.73.xxx.xxx 未訂閱
Global Temporary tables:
Global temporary tables are preceded with two ‘#’ (##) sign.
EX:
CREATE TABLE ##TEMP_GLOBAL
(
COL1 INT,
COL2 VARCHAR(30),
COL3 DATETIME DEFAULT GETDATE()
)
GO

===================引 用 cjtsif 文 章===================
在MSSQL中,Table名稱第一個字元為#的,就是Temporary Table(暫存表單),
如: CREATE TABLE #AAA FIELD1 VARCHAR(20), FIELD2 VRACHAR(20)
就是建立一個只有自己使用的Table: #AAA,
建立後,別人看不到這個Table,
程式關閉後(實際上是session關閉後),#AAA也會自動關閉
------
What do we live for if not to make life less difficult for each other?
kadee
高階會員


發表:11
回覆:141
積分:165
註冊:2002-03-20

發送簡訊給我
#13 引用回覆 回覆 發表時間:2008-07-15 11:33:22 IP:59.127.xxx.xxx 訂閱
其實在clinet/server系統中,若是和單機版一樣在資料庫中create暫存資料表,
不管對server或是網路流量都會產生影響。
其實目前的client PC的效能都相當足夠。所以我比較建議的方法是用memorytable,
(tclientdataset,kbmMemTable (目前筆者使用中),JvMemoryData)
可以將資料表整個放在client的記憶體中,所有操作和dataset 都一樣。
即使系統掛掉,也不會像把資料表放在單機的access或paradox,有lock的問題,
也不用刪除檔案。


------
Kadee/BigRed Ent.
www.tw165.com
limary
初階會員


發表:41
回覆:109
積分:30
註冊:2007-01-11

發送簡訊給我
#14 引用回覆 回覆 發表時間:2008-07-15 16:52:53 IP:61.219.xxx.xxx 未訂閱
謝謝cjtsif、christie、kadee三位前輩熱心提示。本來以為沒解了,想不到
竟然還有可能有救。小妹趕緊試試,謝謝。
只是修改建此暫用表格部份的程式碼,對我原先系統需修改的部份應該是需工
最少,應該是很有希望的。非常感謝幫忙。
kadee前輩講的可用於新開發的系統中使用。非常謝謝。
我趕緊試試,再來報告結果。謝謝,謝謝。
kevin2004
資深會員


發表:18
回覆:463
積分:416
註冊:2005-05-29

發送簡訊給我
#15 引用回覆 回覆 發表時間:2008-07-17 18:25:47 IP:61.219.xxx.xxx 未訂閱
另一類思考如下,通常不要用各家DB特別的SQL語法或機制,因為它妨礙我們
移殖我們的系統。我建議你用土法來處理這個問題。你的問題,我們很
早就處理過了,Lib都是現成的。Code我不敢給你,不過好在它的原理很
簡單,跟你說說原理,你自己來寫碼,最多寫幾天就可以完工的。
原理如下:
1.你這些中間檔應該就是固定那幾個,其結構及表格名應該都是固定的。
那你只要用個標準表格名加編號就可以了。用時只要AP到DB去找現存的
此StdTableName '9999'將之加一後確定此新表格不存在於DB後後傳回AP,再
由AP下令建此新表﹝當然你的AP要有此權限﹞,建好後它就是你專用的
啦。
2.當然要假設:這些暫用表要存的資料不可以太多太大。而且你要有自動
管理維護的機制,如半夜上來殺這些暫時檔及記錄結果報告的功能。
3.此時你須要幾個標準的功能來寫你的碼,如判斷DB中是否存在某名稱的
表格、及下SQL命令建此新表格,此外填資料及中間工作等就是你原先的
程式碼了,小弟就略過不談了。
這樣最笨,可是保證可以達到你講的中間處理須以DB表格記錄及可跨DB的需求。
我不曉得你要的是不是些。
相關Coding很簡單,只是苦工而已,應不成問題。
------
Kevin
編輯記錄
kevin2004 重新編輯於 2008-07-17 18:32:31, 註解 無‧
kevin2004 重新編輯於 2008-07-17 18:36:14, 註解 無‧
limary
初階會員


發表:41
回覆:109
積分:30
註冊:2007-01-11

發送簡訊給我
#16 引用回覆 回覆 發表時間:2008-07-18 07:29:52 IP:61.219.xxx.xxx 未訂閱
謝謝前輩指點,很感謝,我剛才試寫了好幾個模組,應該沒問題了,謝謝
===================引 用 kevin2004 文 章===================
原理如下:
1.你這些中間檔應該就是固定那幾個,其結構及表格名應該都是固定的。
那你只要用個標準表格名加編號就可以了。用時只要AP到DB去找現存的
此StdTableName '9999'將之加一後確定此新表格不存在於DB後後傳回AP,再
由AP下令建此新表﹝當然你的AP要有此權限﹞,建好後它就是你專用的
啦。
2.當然要假設:這些暫用表要存的資料不可以太多太大。而且你要有自動
管理維護的機制,如半夜上來殺這些暫時檔及記錄結果報告的功能。
3.此時你須要幾個標準的功能來寫你的碼,如判斷DB中是否存在某名稱的
表格、及下SQL命令建此新表格,此外填資料及中間工作等就是你原先的
程式碼了,小弟就略過不談了。
系統時間:2024-05-04 21:18:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!