2011年2月15日 星期二

ASP.NET 3.5 + Crystal Report

狀況一:系統找不到指定的檔案。
錯誤訊息:在指定dataset 給CrystalReportSource1 的這一行

Me.CrystalReportSource1.ReportDocument.SetDataSource(ds)



我應該最近寫程式有點鬼打牆了,明明就這樣寫就好,怎麼一直在那邊轉圈圈啊!! 哈哈哈

目前整理出的寫法:
先在頁面上放一個CrystalReportViewer1,就可以開始寫了,但我不知道crystalreportSource該怎麼用。

Dim sCN0 As String = "資料庫連線字串"
Dim commandText As String = "資料庫查詢語法"
Dim da As SqlDataAdapter = New SqlDataAdapter(commandText, sCN0)

 '建立一個 DataSet 物件。如果要塞入一個實體的dataset ,名稱一定要打對喔!!
' 例如我新增的一個叫做dsReport的dataset,它的datatable叫做dt_rpt
 Dim ds As dsReport = New dsReport()
 da.Fill(ds, "dt_rpt")

' 這個crystal report的路徑要注意,如果你的程式是放在資料夾下的話,它會認為你的crystalReport也是在同個路徑喔!!
'所以記得放對地方
'我記得我在寫windows form 的時候不用指定路徑啦,但不知道為什麼asp.net要
 Dim rptFile = Server.MapPath("rpOrderRpt.rpt")
 Dim doc As New ReportDocument
 doc.Load(rptFile)

''將dataset指定為ReportDocument的setDatasource
 doc.SetDataSource(ds)
 Me.CrystalReportViewer1.ReportSource = doc






狀況二:
登入失敗。細目: crdb_adoplus : 並未將物件參考設定為物件的執行個體檔案 C:\DOCUME~1\chenyu\LOCALS~1\Temp\rpOrderRpt {BF7D59DE-BDB8-4F0E-9875-2B9470BDBEB6}.rpt 錯誤: 無法連接: 登入參數錯誤


這個問題的話,我知道為什麼,但不知道該怎麼改,
狀況二就是只要資料庫連線資料是寫在function裡,總之不跟程式同一個頁面的話,例如我把去資料庫抓資料的程式全部寫在GetReport.GetReportA的function裡傳回datatable,
然後在產生報表的程式把datatable傳回,這樣就會出現上面的錯誤訊息了,


DTA = GetReport.GetReportA(Me.txtFromDate.Text, Me.txtToDate.Text).Copy


不知道是什麼問題,我有試著把連線字串宣告的區域變大,不過似乎不是這個問題,
只好繼續找方法囉!
如果有試出來再發文囉!


2/16更新
狀況二已經試出來了,
跟什麼連線字串的宣告變數無關啦,之前確實推斷錯誤,
剛試出來的結果:
新建的dataset中無論是DataTable或是TableAdapter,名稱要與資料庫的tableName一樣,否則就會出現狀況二的錯誤訊息,
只要改成跟資料庫的tableName一樣,無論是DataTable或是TableAdapter都不會有問題,再者,資料表的欄位可以不用一樣也沒關係。


以上就是目前的解決方案,
但還是覺得不方便,我就是想跟資料庫的tableName不一樣不行嗎?呵呵
繼續測試囉,有新發現再po上來喔!!


2/17更新
狀況三:
Crystal Report頁面按下一頁或是匯出報表都會出現像狀況二那樣的問題。


因為按下一頁或是匯出,都是觸發page_load,
所以目前我是在page_load的時候,再呼叫一次產生報表的程式,這樣就可以了,
但還是覺得這個方法有點…不太好…所以想到再po上來囉!!






資料來源:自己測試及參考
http://social.msdn.microsoft.com/Forums/zh-TW/236/thread/83b8206d-c4b0-4f62-8725-365f5b7b1ebc
http://www.blueshop.com.tw/board/FUM20041006161839LRJ/BRD201102141042154LH.html

2011年2月10日 星期四

VS 2008 SP1連線遠端資料庫,發生錯誤訊息

使用vs 2008 sp1連線遠端資料庫時,(本機資料庫不會喔!)發生以下錯誤訊息


看了網路上的文章是說安裝下列檔案:
安裝如下連結檔案:
1. Microsoft SQL Server System CLR Types
    http://go.microsoft.com/fwlink/?LinkId=123721&clcid=0x409

2. Microsoft SQL Server 2008 Management Objects
    http://go.microsoft.com/fwlink/?LinkId=123708&clcid=0x409

3. Microsoft SQL Server 2008 Native Client
    http://go.microsoft.com/fwlink/?LinkId=123717&clcid=0x409


結果:我只安裝了2、3點的檔案就可以了囉!!
我想是第1點我在本機安裝資料庫時可能就有安裝了,所以就不用裝了。
但是可能因為我本機的資料庫是SQL SERVER 2005的版本,而是用VS 2008 SP1
開發,所以可能缺少2、3點SQL SERVER 2008的元件,
但沒有試過用VS 2008 SP1連SQL SERVER 2008看這樣還會不會出現問題,
這倒是可以試試看。


2/14 用vs 2008連SQL SERVER 2008的資料庫,確實不會出現上面的錯誤訊息,
所以上面的推斷應該是正確的喔!!

參考資料:http://tw.myblog.yahoo.com/carlo-blog/article?mid=705

2011年2月8日 星期二

AjaxControlToolkit 版本3.5,可能有問題啦???????????????

使用vs 2008開發AJAX,出現了下列的錯誤訊息:

錯誤: AjaxControlToolkit requires ASP.NET Ajax 4.0  scripts. Ensure the correct version of the scripts are referenced. If you are using an ASP.NET ScriptManager, switch to the ToolkitScriptManager in AjaxControlToolkit.dll.

想說是vs 2008,所以我使用的AjaxControlToolkit.dll的版本是 3.5.40412.0
但沒想到出現這樣的錯誤訊息,所以我就將AjaxControlToolkit.dll的版本降為 3.0.30930就可以用了,會是3.5的版本不穩定嗎?????????

資料來源:自己測試。

AJAX 錯誤訊息。「作業無法完成。無效的FORMATETC結構」

好久沒使用AJAX了,今天因為在修改一個系統,所以就想說用AJAX,將AJAX ToolKit的控制項拖拉到畫面也不行,在原始碼上放的話,結果竟然出現下列訊息:


最好只好「重設工具箱」,將AjaxControlToolkit.dll重新加入,就可以正常使用啦…真是奇怪呢?



資料來源:自己測試囉!!

2011年1月31日 星期一

MCTS 70-431

好開心喔

之前已經把70-431考試的書買好了,一直都沒時間去考,最近才又開始準備,
昨天1/30去考 ,ya…我考過了,
超緊張的啦!!

不過今天在微軟的論壇看到這個不幸的消息啊!!

SQL Server 2005, Visual Studio 2005 與 BizTalk 2006 系列考試將要在 2011/6/30 停考



http://social.technet.microsoft.com/Forums/zh-TW/2014/thread/a0c14544-f968-484b-be7f-05230c40fde7

不知道證照會不會就跟著失效了

2011年1月25日 星期二

在VM 中使用電腦名稱會產生解析錯誤

今天在VM中測試防毒軟體小紅傘,突然發現無法使用電腦名稱連到遠端電腦,如\\sales,這樣會出現錯誤訊息,且在命令列 tracert sales時,會出現解析錯誤

但是如果用\\192.168.0.x(IP)就可以,本以為是小紅傘的問題,結果我在本機裝小紅傘竟然不會,結果才發現是VM設定的問題(連Virtual PC也是一樣)

後來試著將網卡的模式從NAT改成Bridge,然後在vm中指定一組ip給它,再試一次用\\salles,這樣就可以了,tracert 也正常,也不會出現解析錯誤了,

但明明都ping 的到,(改成Bridge模式,也沒指定DNS給它)
為什麼更改網卡模式(從NAT改成Bridge)就行了呢?
還是bridge有支援電腦名稱的解析,而NAT沒有呢?


自己測試

2011年1月22日 星期六

SQL SERVER 武林盟主大會 參賽心得

今天很開始參加微軟的「SQL SERVER 武林盟主大會」,在得知進入複賽之前,微軟的客服人員很熱心,,一直與我聯絡,最後很開心還是進入了複賽。開始問答題時真的好緊張喔!主持人還一直叫我人妻…其實我不是人妻啦,人家還小姑獨處呢!!呵呵…


不過最後還是因為實力不足被刷下來了,接下來我就報名參加Kinet遊戲,跟我一組的另外兩個男生聊天後才知道,都是微軟的MVP也,真的覺得好開心喔!最後我們藍隊獲勝了,拿到了8G的隨身碟也。


最後選出來去上機的10位決賽者回來了,要公布最高分的5位,結果沒想到坐在我左右兩邊的男生都是其中的5位SQL盟主,真的覺得實在太榮幸了,而且在現場看到了五位老師的 「真面目」,跟想像的"真的"有些不一樣也,有的不是被操的皮包骨,就是熬夜工作吃宵夜有點吹氣了,不然就是一臉睡不飽的樣子,每位老師都看的出來為了專業努力過的"痕跡",還有看到了很多的MVP,還有平常在論壇幫忙解答的大大,今天真的是不虛此行啊!!


真的很感謝可以參加今天的比賽,也更讓我了解到資訊是如此的無遠弗界,可以讓一群不認識的人齊聚一堂,互相交流彼此在專業上的努力,我真的還太淺,但是經過今天的參與,更讓我更加有信心去面對工作的挑戰及對自己專業的負責。


最近剛面臨到是否要換工作或是要轉換跑道,我真的非常熱愛資訊工作,當一個IT人員可以玩的東西真的很多,而且越有挑戰性的東西,越能滿足我的好奇心,但有時候也會被資訊更新的快速壓的有點喘不過氣了,而迷失自己的方向,但最後還是因為自己真的太好奇了,所以又會開始摸東摸西玩新的產品跟技術,所以我想我是真的適合走資訊的,只是還要更加努力,並確立自己要走的方向,才可以跟微軟的老師及MVP一樣,堅持自己的專業,走出自己的路。



SQL SERVER 武林盟主大會的網頁,錄取名單有我的名字喔!!
http://technet.microsoft.com/zh-tw/gg566443.aspx