none
[vb6] COM Automation Error RRS feed

  • 問題

  • 請問

    我在 ASP 中使用 VB6 開發的 COM 元件

    卻不定時的會遇到 Automation Error 或是 ActiveX 物件無法產生 的錯誤訊息

    有時重新執行一次程式後 就不會再出現錯誤

    有時則需於 元件服務中  重新啟動註冊的 COM+ 應用程式 元件 方可正常

    一直無法找到解決方式, 請大家幫忙

    我的執行環境是 windows 2000  sp4

    開發環境為 VB6 sp6

     

    謝謝

     

     

    2006年7月10日 上午 10:03

解答

  • 試著用該管理員帳號登入後,確認該帳號完成完整的初始化。

    另外以該帳號權限,針對暫存碟、系統碟 滑鼠右鍵 內容 一般 清理磁碟 (不確定 Win2k 有沒有)

    你是用網域管理員帳號還是用本機管理員帳號?若是網域管理員,建議電腦安裝 NetBios 通訊協定,並設定一台 WINS,有時只用 TCPIP 會不太順。

    2006年7月11日 上午 05:30
    版主
  • 抱歉,因為看到別人回答亂答一通覺得在浪費發問者以及看的人的時間,由其是出現問題後在找答案時看到這種回答會更不悅~~所以才抱怨一下。

    你如果有想法,有回應,歡迎提出,但是若是不是很清楚,請不要批評。

    你舉的例子 FSO (FileSystemObject) 並不是 VB6 的元件,所以 VB6 SP6 也沒有更新它,FSO 是 Windows Script 的元件,是設計給 Script 用的,並非是給 VB6 用的,只是 VB6 能呼叫 Script 物件,所以才有很多奇怪的電腦叢書把它當成 VB6 的物件來用。你可以安裝 Windows Script 線上手冊,已取得更多的說明。

    另外,就是因為 FSO 設計給 Script 用,所以很多防毒軟體特別愛擋,比如說 Norton AntiVirus 。大部分發生 FSO 物件無法建立時,多半是被防毒軟體擋掉了,少部分才是註冊資料遺失或是需要重新安裝 Windows Script 的狀況。

    此外,你給的網址跟 VB6 基本上關係不大,如果你有認真看,那篇是寫安裝 VS6 SP6 導致 MFC42.dll 類別庫權限變更,而造成部分東西無法執行。他還有中文版,你可以看看:

    http://support.microsoft.com/kb/842329/zh-tw

    沒關係的原因(網址所列狀況簡稱此問題):

    1. 如果只安裝 VB6 ,僅需安裝 VB6 SP6 ,VB6 是 VS6 (98) 成員之一沒錯,但是 mfc42.dll 是給 VC6 用的,並非是給 VB6 用的,在安裝 VB6 SP6 時,並不會碰上此問題,若有,微軟的 KB 會很明確的正面表列說明。
    2. 此問題限制在 Win2k SP4 的作業系統才會發生,並非是通用狀況。亦即,你在 WinXP/Win2003 上並不會碰到此問題。
    3. 此問題會造成 IIS 核心元件無法執行,亦即 IIS 在執行的時候,就會因為權限不足無法執行,所以不會回應任何訊息,但是原作者可以看到 IIS 回應的錯誤訊息,即表示 IIS 本身是正常執行,但是 Script 內所建立的物件因為權限或是註冊的原因而無法完成建立。(註:亦有可能被防毒程式判定為不安全的物件而過濾阻擋)

    基於上面的思考與原因,我可以明確的判別你的回覆並不是原發問者問題的可能原因之一,而你在基於此解答來貶損網友時,有欠考慮。

    回覆時,回文者只能依據原發問者提供的資訊進行判別,發問者並沒有提供足以判別原因的資訊時,回文只能就一般狀況來說明,若你認為發問者及看文者時間被浪費了,你有沒有想過回文者的時間同樣也被浪費了?除了簽名有微軟的註記人員外,其他的人員都是非微軟員工,在版上回覆文章都是屬於熱心、志工的理念與精神,簡單的說,大家都是路人甲乙丙丁,大家都有自己的工作要忙,並非是在這裡回覆文章有薪資拿,所以在這邊混混的亂回一通,甚至台灣微軟員工也是如此,除了維持版面運作的管理人員外(僅針對版面功能運作維持服務,不針對問題提供技術服務),基本上微軟鼓勵員工參與論壇,但不強迫,微軟的正式技術支援服務的管道請參閱 http://support.microsoft.com/ ,那邊是要收錢的,而且可以確實解決你的問題,想做大爺,請去那邊,這邊是免費的技術交流區,這邊不保證每個回覆都是正確的,所以為了減少浪費時間,論壇提供標示為正解的功能,給原發問者標示,當然原發問者能不能正確判別,那是另一回事,但是至少大家都是熱心交流,而不是為了彼此浪費時間而在版面上寫些沒營養的東西。

    為了減少彼此浪費無所謂的時間,各版面都有公告說明如何有效的提問,至於網友是否願意花時間閱讀來體諒自己與大家,那又是另外一回事了。

    2006年12月12日 上午 01:24
    版主
  •  小黑 寫信:

    事實上我覺得他已經講明問題重點,是因為你無法重現問題或者你沒在寫 ASP 吧,這問題跟 VB 使用上不太有關連,而是ASP。

    其實他的問題不在於該元件(提問者自行製作的那顆),而是在於 "當安裝完 SP6 之後,使用 ASP Server 物件 (不見得要Server 物件 直接 Create 也是一樣) 去 CREATEOBJECT 時,會無法產生物件"

    我會提出 Filesystem 的例子,是想指出跟提問者自己開發的物件無關,就連基本的 Script 內建物件都無法產生 ,可是相同的程式碼使用 WSH 卻可以正常叫用物件並執行。

    連 ADO Connection 及 recordset 都掛點,而相同的環境在換回 VB6 SP5 便正常了。

    大家都知道一定是SP6 去改到某個 地方的權限所導致,會上來找文就是不知道它去改了什麼東西啊。

    重現問題方法:

    我想你應該裝了 Studio 6 加 SP6了,所以你只需要 在機器上弄個 ASP 然後試著產生物件,若成功,多按幾下重新整理。

    就會看到它壞掉了。

    我想.... 要回文教別人,除了熱心之外,能否解決問題是一回事,至少要知道提問者在講些什麼啊~~

    不過我的態度是很糟糕沒錯,先道個歉,請別讓沒刷牙的我澆息了你的熱情。

    ... 我從 1999 左右開始寫 ASP ,到 2004 秋,改寫 ASP.NET 1.1 。先前我的電腦在安裝 VSNET 之前,都是安裝 Visual Studio 98 + VB6 繁中,原因很簡單,我要用 Visual InterDev 6.0 。

    我現在的電腦還有在跑舊專案,裡面包含了 ASP 網頁。

    這是我其中一個 asp 專案,現在系統也還在跑,系統現在是用 VB6 SP6 + ASP,既然存取資料庫當然用 ADO,發表在:

    周乃昉、鄭子璉,「曾文溪流域水庫整體防洪運轉展示決策系統建置」,中華民國資訊學會通訊,台灣,台北,第八卷,第一期,第 209 - 236 頁,民國 94 年 3 月。

    線上手冊:http://tlcheng.twbbs.org/tsengwen3/Help/

    包含即時到氣象局網站擷取雨量、颱風資料,繪製各種歷線、向量地圖、繪製等值線、動態預測推估各種變化。

    我使用 VB 的經歷包含 VB 1.0 for DOS/Windows、(2.0 年代改用 MSC 7.0 + MFC 1.0 + SDK)、VB 3.0/4.0 16 bit/32 bit/5.0/6.0/7.0/7.1/8.0 、VBA 1.0 (Excel 5.0) / WordBasic (Word 6.0a) / VBA 5.0/6.1/6.3/6.4、VBScript 5.x 。

    提供網友參考 ASP 原始碼函數庫:字串工具檔案輸出通訊錄行事曆

    提供網友參考取代 Visual InterDev 的編輯環境:MDE編輯器MSE編輯器

    提供網友參考 ASP 權限問題參考:使用元件

    提供網友參考在 IIS6 ASP 常見問題參考:IIS6設定

    這樣的經歷你可以不用懷疑我有沒有用過 VB6 + ASP 了吧?


    從你描述你的 FSO 問題中,可以判斷你應該是權限問題,因為 WSH 可以跑,WSH 會使用目前使用者的權限,ASP 則使用 IUSR_servername 或 Windows 驗證登入使用者的權限,但不能確定你是不是檔案總管沒有授權指定檔案給 IUSR_servername ,還是其他問題,ADO 在 WinXP SP1 從 2004/7 、Win2003 R2 上,Windows Update 有針對 ADO.Stream 做過安全性變更,不能執行的部份,請把你的連線字串與查詢語法貼出來,跟 VB6 SP6 無關。你同時有 FSO/ADO 問題時,我會猜測你是上面 ASP 使用元件步驟 7 的問題,但是你沒有提供更多的資訊,我無法判斷。

    網頁系統是多人同時共用,要考慮鎖定問題,你多按幾次重新整理會掛掉,我會懷疑你 FSO/ADO 沒有正確的關閉或是使用獨佔權,造成無法新建立連線,但是你沒有提供更多的資訊,我無法判斷。

    程式語言的討論,必須精確明白,一點小誤差就可能造成錯誤的判斷,當你經驗夠多時,你會發現同樣的錯誤狀況有很多種可能,你就無法針對少量的資訊判斷出問題。

    2006年12月12日 上午 09:50
    版主

所有回覆

  • 基本上這樣的問法,別人也沒辦法幫你過濾問題吧...

    問題本身要可重複才能想辦法抓到問題點,此外相關發生錯誤的錯誤行或是相關訊息也不夠...

    2006年7月10日 下午 04:10
    版主
  • 不好意思 讓您無法理解我的問題

    提供程式片段

    SET OBJ = SERVER.CREATEOBJECT("MYCOM.MYFUNC")

    OBJ.iUID = usr_id          

    OBJ.iPWD = usr_passwd          

    OBJ.MAIN   <--- 錯誤出現的 地方, 此處呼叫主程式處理

    錯誤的訊息會有以下兩種

    {元件名稱} 錯誤 '800a1ad'

    ActiveX 無法產生物件

    {元件名稱} 錯誤 '800a01b8'

    Automation 錯誤

    2006年7月11日 上午 02:02
  • 1. 這邊可以試試

    SET OBJ = CREATEOBJECT("MYCOM.MYFUNC")

    兩種方式權限不同。

    你會出現錯誤訊息 Automation 錯誤 ?

    這是 ActiveX EXE 才會出現的吧?ActiveX EXE 為獨立執行個體,所需記憶體模式與 ActiveX DLL 不同。

    若是的話,看看下面這個:

    http://tlcheng.twbbs.org/TLCheng/Basic/vbs/dcom/automation.htm

    2006年7月11日 上午 02:20
    版主
  • 感謝您的回覆,

    我這裡是使用 windows 2000 的 元件服務 註冊 我自己開發的元件

    在元件服務的識別中 我指定了 一個管理員帳號 來執行此元件

    之前提供的程式片段主要是提供使用者 登入時, 檢查帳號密碼

    而的確在呼叫過程中出現了這樣的錯誤訊息

    " Automation 錯誤 "

    奇怪的是, 當我出現這樣的錯誤後, 回到登入頁面重新輸入帳號密碼登入, 卻又不會再出現錯誤了

     

    2006年7月11日 上午 02:59
  • 試著用該管理員帳號登入後,確認該帳號完成完整的初始化。

    另外以該帳號權限,針對暫存碟、系統碟 滑鼠右鍵 內容 一般 清理磁碟 (不確定 Win2k 有沒有)

    你是用網域管理員帳號還是用本機管理員帳號?若是網域管理員,建議電腦安裝 NetBios 通訊協定,並設定一台 WINS,有時只用 TCPIP 會不太順。

    2006年7月11日 上午 05:30
    版主
  • 感謝您的回覆,

    依循您所建議的方式

    1. 使用該管理帳號 登入

    2. 使用 win2k 的 清理磁碟工具, 清理 系統碟

    3. 確認 啟動元件服務 的 帳號 為 本機管理員

    經過以上步驟後, 仍會出現 Automation Error 的錯誤

    不知道還可以再做哪些動作 來解決這樣的問題

    2006年7月11日 上午 09:05
  • 你的 obj.Main 裡面有再去另外呼叫其他的物件或是建立物件嗎?
    2006年7月12日 上午 06:39
    版主
  • 感謝您的回覆,

    程式中 obj.Main 於此例中是有另外建立其他的物件 比如說 ADO 的 RecordSet

    另外我查詢了 Event Log 發現以下訊息

    事件類型: 資訊
    事件來源: VBRuntime
    事件類別目錄: 無
    事件識別碼: 1

    描述:
    The VB Application identified by the event source logged this Application {元件名稱}: Thread ID: 2904 ,Logged: MsgBox:  , Run-time error '3704':

    當物件關閉時,不允許操作。

    請在 http://go.microsoft.com/fwlink/events.asp 查看說明及支援中心,以取得其他資訊。

    2006年7月14日 上午 08:52
  • 就你的 asp 那邊看不太出問題,所以猜測會不會是你的元件在建立物件時發生錯誤。

    建議你修改你的元件,例如 obj.Main 輸出記錄到自己定義的文字檔,以利事後追蹤問題。

    2006年7月14日 上午 08:55
    版主
  •  璉璉 寫信:

    就你的 asp 那邊看不太出問題,所以猜測會不會是你的元件在建立物件時發生錯誤。

    建議你修改你的元件,例如 obj.Main 輸出記錄到自己定義的文字檔,以利事後追蹤問題。

    雖然說你這麼說是對的,因為可能你的系統無法重現此問題。

    --這句是圾垃,且恐有得罪回覆者之慮,所以刪--

    提問者是說 原本在未安裝 VB6 SP6 之前是好的喔,這跟他開發的元件無關。

    我自己也有這個問題,不但是 VB開發的元件,我連 Filesystemobject 都叫不出來了,就因為裝了 SP6。

    提問者可以試試,我想應該不但是你自己那顆元件,可能連某些元件都產生不了。

    出現的錯誤一樣是 {元件名稱} 錯誤 '800a1ad' 這跟提問者自行開發的元件無關,我想是 SP6 改了什麼東西所導致才對。

    --這句是圾垃,且恐有得罪回覆者之慮,所以刪--

    === 編輯者 小黑 @ 11 十二月 2006 6:23 下午 UTC===
    補充

    http://support.microsoft.com/default.aspx?scid=KB%3BEN-US%3B842329&wa=wsignin1.0

    看看有沒有用... 我正在看

    2006年12月11日 下午 06:20
  • 抱歉,因為看到別人回答亂答一通覺得在浪費發問者以及看的人的時間,由其是出現問題後在找答案時看到這種回答會更不悅~~所以才抱怨一下。

    你如果有想法,有回應,歡迎提出,但是若是不是很清楚,請不要批評。

    你舉的例子 FSO (FileSystemObject) 並不是 VB6 的元件,所以 VB6 SP6 也沒有更新它,FSO 是 Windows Script 的元件,是設計給 Script 用的,並非是給 VB6 用的,只是 VB6 能呼叫 Script 物件,所以才有很多奇怪的電腦叢書把它當成 VB6 的物件來用。你可以安裝 Windows Script 線上手冊,已取得更多的說明。

    另外,就是因為 FSO 設計給 Script 用,所以很多防毒軟體特別愛擋,比如說 Norton AntiVirus 。大部分發生 FSO 物件無法建立時,多半是被防毒軟體擋掉了,少部分才是註冊資料遺失或是需要重新安裝 Windows Script 的狀況。

    此外,你給的網址跟 VB6 基本上關係不大,如果你有認真看,那篇是寫安裝 VS6 SP6 導致 MFC42.dll 類別庫權限變更,而造成部分東西無法執行。他還有中文版,你可以看看:

    http://support.microsoft.com/kb/842329/zh-tw

    沒關係的原因(網址所列狀況簡稱此問題):

    1. 如果只安裝 VB6 ,僅需安裝 VB6 SP6 ,VB6 是 VS6 (98) 成員之一沒錯,但是 mfc42.dll 是給 VC6 用的,並非是給 VB6 用的,在安裝 VB6 SP6 時,並不會碰上此問題,若有,微軟的 KB 會很明確的正面表列說明。
    2. 此問題限制在 Win2k SP4 的作業系統才會發生,並非是通用狀況。亦即,你在 WinXP/Win2003 上並不會碰到此問題。
    3. 此問題會造成 IIS 核心元件無法執行,亦即 IIS 在執行的時候,就會因為權限不足無法執行,所以不會回應任何訊息,但是原作者可以看到 IIS 回應的錯誤訊息,即表示 IIS 本身是正常執行,但是 Script 內所建立的物件因為權限或是註冊的原因而無法完成建立。(註:亦有可能被防毒程式判定為不安全的物件而過濾阻擋)

    基於上面的思考與原因,我可以明確的判別你的回覆並不是原發問者問題的可能原因之一,而你在基於此解答來貶損網友時,有欠考慮。

    回覆時,回文者只能依據原發問者提供的資訊進行判別,發問者並沒有提供足以判別原因的資訊時,回文只能就一般狀況來說明,若你認為發問者及看文者時間被浪費了,你有沒有想過回文者的時間同樣也被浪費了?除了簽名有微軟的註記人員外,其他的人員都是非微軟員工,在版上回覆文章都是屬於熱心、志工的理念與精神,簡單的說,大家都是路人甲乙丙丁,大家都有自己的工作要忙,並非是在這裡回覆文章有薪資拿,所以在這邊混混的亂回一通,甚至台灣微軟員工也是如此,除了維持版面運作的管理人員外(僅針對版面功能運作維持服務,不針對問題提供技術服務),基本上微軟鼓勵員工參與論壇,但不強迫,微軟的正式技術支援服務的管道請參閱 http://support.microsoft.com/ ,那邊是要收錢的,而且可以確實解決你的問題,想做大爺,請去那邊,這邊是免費的技術交流區,這邊不保證每個回覆都是正確的,所以為了減少浪費時間,論壇提供標示為正解的功能,給原發問者標示,當然原發問者能不能正確判別,那是另一回事,但是至少大家都是熱心交流,而不是為了彼此浪費時間而在版面上寫些沒營養的東西。

    為了減少彼此浪費無所謂的時間,各版面都有公告說明如何有效的提問,至於網友是否願意花時間閱讀來體諒自己與大家,那又是另外一回事了。

    2006年12月12日 上午 01:24
    版主
  • 我同意你的說法,幫助別人解決問題事實上是無償的,即便網友看到你的文章而解決問題也不見得會記得你的名字。

    但是回文時應當考量自己本身對問題的了解,當然向提問者要求問題詳盡是一個好方法。但是...

    我這麼說好了,我看你的文章數,大約可以了解到你發了不少文,想當然幫助過不少朋友,但是 "就本問題論述"

     璉璉 寫信:
     

    基本上這樣的問法,別人也沒辦法幫你過濾問題吧...

    問題本身要可重複才能想辦法抓到問題點,此外相關發生錯誤的錯誤行或是相關訊息也不夠...

    事實上我覺得他已經講明問題重點,是因為你無法重現問題或者你沒在寫 ASP 吧,這問題跟 VB 使用上不太有關連,而是ASP。

    其實他的問題不在於該元件(提問者自行製作的那顆),而是在於 "當安裝完 SP6 之後,使用 ASP Server 物件 (不見得要Server 物件 直接 Create 也是一樣) 去 CREATEOBJECT 時,會無法產生物件"

    我會提出 Filesystem 的例子,是想指出跟提問者自己開發的物件無關,就連基本的 Script 內建物件都無法產生 ,可是相同的程式碼使用 WSH 卻可以正常叫用物件並執行。

    連 ADO Connection 及 recordset 都掛點,而相同的環境在換回 VB6 SP5 便正常了。

    大家都知道一定是SP6 去改到某個 地方的權限所導致,會上來找文就是不知道它去改了什麼東西啊。

    重現問題方法:

    我想你應該裝了 Studio 6 加 SP6了,所以你只需要 在機器上弄個 ASP 然後試著產生物件,若成功,多按幾下重新整理。

    就會看到它壞掉了。

    我想.... 要回文教別人,除了熱心之外,能否解決問題是一回事,至少要知道提問者在講些什麼啊~~

    不過我的態度是很糟糕沒錯,先道個歉,請別讓沒刷牙的我澆息了你的熱情。

     

     

     

     

     

     

     

     

    2006年12月12日 上午 08:00
  • 我回應一下。

    不是每個人都有能力或者有時間去重現提問人的問題,在這裡做回應的人,本身可都是有工作,不是閒閒沒事幹掛在網路上等人來問問題的。

    所以提問人提供的資料就很重要了,資料充不充份,和回答的精確性確實有很大關聯,不信的話,這個論壇就有一大堆答非所問的問題,不是回答者亂答,而是發問人問題講不清楚。我們只能看到提問人的資訊,看不到他的想法以及他的實作品,我們只能憑著片段資訊和片段程式碼來判斷問題,錯誤在所難免,但是不正確的提問會導致不正確的回答,就像 GIGO(Garbage In, Garbage Out) 一樣。

    若對答案有疑意,或是有另外的看法,提出討論是可以,也很歡迎,但不要有貶低他人的言詞或是暗藏諷刺意味或人身攻擊的語意,否則將會被視為不友善或不禮貌的言語,若板主要的話,是可以砍掉這類的文章。

    在批評別人前,先看看你自己有沒有更好的 solution 再來評論,讓大家來決定答案是好是壞,而不是以個人主觀立場來判斷,畢竟這是互相的,你不尊重別人,別人可也不一定要尊重你。

    2006年12月12日 上午 08:12
    版主
  •  小朱 寫信:

    但不要有貶低他人的言詞或是暗藏諷刺意味或人身攻擊的語意

    其實我沒有 "貶低他人的言詞或是暗藏諷刺意味或人身攻擊" 的意思,我只是指出他導引決解的方向是無用的,也許是這句 "回答亂答一通" ? 這句真的失言,抱歉。我想應該把該句刪除,免得回覆者看了生氣。

     小朱 寫信:

    在批評別人前,先看看你自己有沒有更好的 solution 再來評論,讓大家來決定答案是好是壞,而不是以個人主觀立場來判斷,畢竟這是互相的,你不尊重別人,別人可也不一定要尊重你。

    那這段算不算 "暗藏諷刺意味" ?

    最前的發文態度並不好,再次道歉。也許讓非關技術性的文章就此打住吧。

    2006年12月12日 上午 08:48
  • "抱歉,因為看到別人回答亂答一通覺得在浪費發問者以及看的人的時間,由其是出現問題後在找答案時看到這種回答會更不悅~~所以才抱怨一下。"

    這句話算不算?
    至少,我在你第一篇貼文,看不出來你的客氣。

    2006年12月12日 上午 08:54
    版主
  •  小黑 寫信:

    事實上我覺得他已經講明問題重點,是因為你無法重現問題或者你沒在寫 ASP 吧,這問題跟 VB 使用上不太有關連,而是ASP。

    其實他的問題不在於該元件(提問者自行製作的那顆),而是在於 "當安裝完 SP6 之後,使用 ASP Server 物件 (不見得要Server 物件 直接 Create 也是一樣) 去 CREATEOBJECT 時,會無法產生物件"

    我會提出 Filesystem 的例子,是想指出跟提問者自己開發的物件無關,就連基本的 Script 內建物件都無法產生 ,可是相同的程式碼使用 WSH 卻可以正常叫用物件並執行。

    連 ADO Connection 及 recordset 都掛點,而相同的環境在換回 VB6 SP5 便正常了。

    大家都知道一定是SP6 去改到某個 地方的權限所導致,會上來找文就是不知道它去改了什麼東西啊。

    重現問題方法:

    我想你應該裝了 Studio 6 加 SP6了,所以你只需要 在機器上弄個 ASP 然後試著產生物件,若成功,多按幾下重新整理。

    就會看到它壞掉了。

    我想.... 要回文教別人,除了熱心之外,能否解決問題是一回事,至少要知道提問者在講些什麼啊~~

    不過我的態度是很糟糕沒錯,先道個歉,請別讓沒刷牙的我澆息了你的熱情。

    ... 我從 1999 左右開始寫 ASP ,到 2004 秋,改寫 ASP.NET 1.1 。先前我的電腦在安裝 VSNET 之前,都是安裝 Visual Studio 98 + VB6 繁中,原因很簡單,我要用 Visual InterDev 6.0 。

    我現在的電腦還有在跑舊專案,裡面包含了 ASP 網頁。

    這是我其中一個 asp 專案,現在系統也還在跑,系統現在是用 VB6 SP6 + ASP,既然存取資料庫當然用 ADO,發表在:

    周乃昉、鄭子璉,「曾文溪流域水庫整體防洪運轉展示決策系統建置」,中華民國資訊學會通訊,台灣,台北,第八卷,第一期,第 209 - 236 頁,民國 94 年 3 月。

    線上手冊:http://tlcheng.twbbs.org/tsengwen3/Help/

    包含即時到氣象局網站擷取雨量、颱風資料,繪製各種歷線、向量地圖、繪製等值線、動態預測推估各種變化。

    我使用 VB 的經歷包含 VB 1.0 for DOS/Windows、(2.0 年代改用 MSC 7.0 + MFC 1.0 + SDK)、VB 3.0/4.0 16 bit/32 bit/5.0/6.0/7.0/7.1/8.0 、VBA 1.0 (Excel 5.0) / WordBasic (Word 6.0a) / VBA 5.0/6.1/6.3/6.4、VBScript 5.x 。

    提供網友參考 ASP 原始碼函數庫:字串工具檔案輸出通訊錄行事曆

    提供網友參考取代 Visual InterDev 的編輯環境:MDE編輯器MSE編輯器

    提供網友參考 ASP 權限問題參考:使用元件

    提供網友參考在 IIS6 ASP 常見問題參考:IIS6設定

    這樣的經歷你可以不用懷疑我有沒有用過 VB6 + ASP 了吧?


    從你描述你的 FSO 問題中,可以判斷你應該是權限問題,因為 WSH 可以跑,WSH 會使用目前使用者的權限,ASP 則使用 IUSR_servername 或 Windows 驗證登入使用者的權限,但不能確定你是不是檔案總管沒有授權指定檔案給 IUSR_servername ,還是其他問題,ADO 在 WinXP SP1 從 2004/7 、Win2003 R2 上,Windows Update 有針對 ADO.Stream 做過安全性變更,不能執行的部份,請把你的連線字串與查詢語法貼出來,跟 VB6 SP6 無關。你同時有 FSO/ADO 問題時,我會猜測你是上面 ASP 使用元件步驟 7 的問題,但是你沒有提供更多的資訊,我無法判斷。

    網頁系統是多人同時共用,要考慮鎖定問題,你多按幾次重新整理會掛掉,我會懷疑你 FSO/ADO 沒有正確的關閉或是使用獨佔權,造成無法新建立連線,但是你沒有提供更多的資訊,我無法判斷。

    程式語言的討論,必須精確明白,一點小誤差就可能造成錯誤的判斷,當你經驗夠多時,你會發現同樣的錯誤狀況有很多種可能,你就無法針對少量的資訊判斷出問題。

    2006年12月12日 上午 09:50
    版主
  •  璉璉 寫信:

    我使用 VB 的經歷包含 VB 1.0 for DOS/Windows、(2.0 年代改用 MSC 7.0 + MFC 1.0 + SDK)、VB 3.0/4.0 16 bit/32 bit/5.0/6.0/7.0/7.1/8.0 、VBA 1.0 (Excel 5.0) / WordBasic (Word 6.0a) / VBA 5.0/6.1/6.3/6.4、VBScript 5.x 。

    MS Office 自動化巨集 (Excel & Word)
    http://tlcheng.twbbs.org/TLCheng/Basic/Office/officevb.htm

    這篇就是 Excel 5.0 + Word 6.0a 的巨集範例,是 1996/7/10 寫的,早期在網頁化不普及的年代,是用 ftp 來分享文章。

    2006年12月12日 上午 10:06
    版主
  •  小朱 寫信:

    "抱歉,因為看到別人回答亂答一通覺得在浪費發問者以及看的人的時間,由其是出現問題後在找答案時看到這種回答會更不悅~~所以才抱怨一下。"

    這句話算不算?
    至少,我在你第一篇貼文,看不出來你的客氣。

    1. 這句話我認為的確是態度不佳,但即便抱怨,也總是客客氣氣,請問 我這句雖然抱怨,但口氣是否還算客氣 ?

    2. 我同意也認為我不應該這麼寫,所以除了道歉,也將語意不妥的文句刪除。刪除並非想隱瞞什麼,所以我也寫出該句話是圾垃,我想當事者應該能看出我的誠意

    3. 雖然我這句實在不妥,但原意並非用來攻擊他人,而是表答我個人意見,就如同你所說 "網友自會評判"。這不就是討論區嗎?

    2006年12月12日 下午 06:50
  • 我原本想向你本人道歉,但覺得實在不妥,因為我根本沒有針對你。

    你看發文次數便知,我是由搜尋引擎找上來該文章的。

    不過看起來我這冷水似乎倒的不小。我想我也該來自我介紹一下:

    小弟也是 1999 年開始寫 ASP,VB作品倒是沒幾個,不過網站到現在做了該有百來個去了。

    雖然作品跟你的相比... 可能不太好看,做的案子都是些小案,甚至也寫過彩金計算 / 連線遊戲的案子,因為討生活,接的案子的錢都很少,但工作量卻很多。也沒有像你一樣能夠寫出許多優秀的作品以及範例 / 論述文件。

    InterDev 小弟也不會用,因為沒錢買又不敢用盜版寫案子,所以到現在仍然使用文字型編輯器在寫作,至於 VB6 則是前些年華彩軟體倒店時趁特價去店裏買的,當時才 1450 便買到專業版。

    從你描述你的 FSO 問題中,可以判斷你應該是權限問題,因為 WSH 可以跑,WSH 會使用目前使用者的權限,ASP 則使用 IUSR_servername 或 Windows 驗證登入使用者的權限,但不能確定你是不是檔案總管沒有授權指定檔案給 IUSR_servername ,還是其他問題,ADO 在 WinXP SP1 從 2004/7 、Win2003 R2 上,Windows Update 有針對 ADO.Stream 做過安全性變更,不能執行的部份,請把你的連線字串與查詢語法貼出來,跟 VB6 SP6 無關。

    我也覺得是權限問題,但是 WEB 根目錄所在資料夾已做過權限變更,測試時甚至除去全部權限只加入 Everyone 完全控制(連子目錄及檔案都強制繼承)。

    IIS 使用 IWAM_電腦名,WEB 登入使用 IUSR_電腦名 ,所以不會有 Windows 驗證登入使用者的權限問題

    權限就不用討論了,檔案系統已經使用 Everyone 完全控制,我想  IUSR_電腦名也該算是個 User 吧。

    至於連線字串,大家都寫一樣,所以才沒有貼

    Set dsnless_conn = Server.CreateObject("ADODB.Connection")
    dsnless_conn.Open "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & Server.MapPath("/db1.mdb")  & ";Uid=;Pwd=;"

    當然也改用過 Jet.OLEDB.4.0 不過結果一樣。我在想應該是你指出的 "Windows Update 有針對 ADO.Stream 做過安全性變更"

    我在想應該不是 使用元件步驟 7 也許應該是步驟 3,因為筆電又弄回 SP5 目前正常工作中,所以明天對桌上型來安裝 VB6 及 SP6做測試,非常感謝。

    FSO/ADO 我倒是一定會關,我也不喜歡留給 ASP 結束來關。

    程式語言的討論,必須精確明白,一點小誤差就可能造成錯誤的判斷,當你經驗夠多時,你會發現同樣的錯誤狀況有很多種可能,你就無法針對少量的資訊判斷出問題。

    抱歉我經驗不夠多,但最前的發文真的只是個人情緒,並非針對任何人,若有得罪,還請原諒。

     

    2006年12月12日 下午 07:57
  • 華彩倒之前我就有買 VS98/VB6 了,華彩要倒的時候,我去撿 VS98/VB6 企業版各是 299 ,我印象中 VB6 專業版還是企業升級版 199 我就沒撿了...

    FSO 不能處理的檔案會建議你單獨檢查檔案權限屬性,包含擁有者,因為我也碰過不能複寫的情況,若碰上不能複寫的時候,要重新取得擁有權,這種狀況多半發生在 Multi-OS 或是重灌 OS 前曾經設定過權限或其他 NTFS 的資料碟,資料區保留的狀態下,擁有者為其他 OS。除了權限無法複寫的情況下,基本上設定為 everyone 就不再區分了,若不是開 Automation ,只是開檔案權限,不用開給 IWAM_servername ,只需要開 IUSR_servername 。

    ADO.Stream 的安全性變更主要不是針對資料庫查詢,而是針對 ASP 透過 ADO.Stream 轉碼的使用安全,但是附帶會影響到 ODBC Driver 使用 In 子句,使用 OleDb 還沒碰過受到該安全性變更的影響。

    Windows API : http://tlcheng.twbbs.org/TLCheng/WinAPI/winapi.asp

    這個網頁是 2000 年左右寫的,除了後來把計數器改為 ASP.NET 產生外,沒什麼動,這邊沒用到 FSO ,有用到 ADO ,但是我無法把它 try 到掛... 我在本機一值按重整也沒用,目前環境是 Win2003 R2 + VB6 SP6 + .Net 1.1/2.0。另外要問你呼叫 ADO 的連線參數?比如說你是否有用到類似 adModeShareExclusive 來獨佔開啟連線?這網頁在拷貝到其他台新電腦時,也曾經忘了調權限以獨佔權在跑,導致僅能有一人連線:http://tlcheng.spaces.live.com/blog/cns!145419920BFD55A7!499.entry

    前篇給連結的系統,所有參數都存在文字檔內,資料才存在資料庫內,使用時會頻繁的讀取文字檔,主系統在 Win2k Srv + VB6 SP6 的環境下跑,截至目前為止,沒人回報過會有你所稱的問題,在我這測 Win2003 R2 上測也沒有這種問題。

    若是 FSO 註冊資訊有問題,你可以去下載 Windows Script 5.6 重新安裝來修復它。

    2006年12月13日 上午 02:52
    版主