2010年8月31日 星期二

BugNet 新增選單

Source Code中有個Web.sitemap,看來是定義目錄選單
查看里有個Reports的定義,但實際執行時,選單卻看不到.
在web.config中,將sitemape的註解行拿掉,一debug run後,在Old_App_Code的UIL下的SmartSiteMapProvider.SmartSiteMapProvider_SiteMapResolve事件馬上變成是個無窮迴圈,有點搞不清這個東西,更懶得查找原因.

土方煉鋼一下,在UserControls目錄看到TabMenu.ascx.cs.Page_Load事件寫了許多和menu相關的程式碼,加上一段
if (Context.User.Identity.IsAuthenticated)
{
   if (ITUser.IsInRole("Reporter"))
  {

      Tabs.Add(new Tab(GetLocalResourceObject("Reports").ToString(), "~/Reports/SelectReport.aspx"));

  }
} 
 
我要的menu就出來了, 
然後就可以用RDLC自已去加一些分析的報表囉.
參考大師想的,看看要做哪些報表
BugNET 應用:從問題資料庫挖掘專案問題的線索
 
或是參考TFS Reporting Samples, 這就更專業了

2010/10/30,
網站已更新到0.8.25, 試著再把sitemap開啟,debug後,似乎進不了頁面?
SmartSiteMapProvider該如何使用呢?

所以,如想要新增tab menu, 也只好在 TabMenu.ascx.cs.Page_Load再加上一段

Tabs.Add(new Tab(GetLocalResourceObject("NewTab").ToString(), "~/NewTab/myPage.aspx"));


同時,也必需在BugNet_StringResources 加入一筆設定


insert into BugNet_StringResources
select 'UserControls/TabMenu.ascx','en','NewTab','NewTab'

HTML特殊字元參考

使用sandcastle製作文件時在<example>中撰寫範例時, 有些字元要做一下轉換.例如List的 大於小於符號,若未轉換,則產出的文件會有
 [missing <param name="type"/> documentation for......的錯誤

來源網站 Special Entities

CharacterEntityDecimalHexRendering in Your Browser
EntityDecimalHex
quotation mark = APL quote&quot;&#34;&#x22;"""
ampersand&amp;&#38;&#x26;&&&
less-than sign&lt;&#60;&#x3C;<<<
greater-than sign&gt;&#62;&#x3E;>>>
Latin capital ligature OE&OElig;&#338;&#x152;ŒŒŒ
Latin small ligature oe&oelig;&#339;&#x153;œœœ
Latin capital letter S with caron&Scaron;&#352;&#x160;ŠŠŠ
Latin small letter s with caron&scaron;&#353;&#x161;ššš
Latin capital letter Y with diaeresis&Yuml;&#376;&#x178;ŸŸŸ
modifier letter circumflex accent&circ;&#710;&#x2C6;ˆˆˆ
small tilde&tilde;&#732;&#x2DC;˜˜˜
en space&ensp;&#8194;&#x2002;
em space&emsp;&#8195;&#x2003;
thin space&thinsp;&#8201;&#x2009;
zero width non-joiner&zwnj;&#8204;&#x200C;
zero width joiner&zwj;&#8205;&#x200D;
left-to-right mark&lrm;&#8206;&#x200E;
right-to-left mark&rlm;&#8207;&#x200F;
en dash&ndash;&#8211;&#x2013;
em dash&mdash;&#8212;&#x2014;
left single quotation mark&lsquo;&#8216;&#x2018;
right single quotation mark&rsquo;&#8217;&#x2019;
single low-9 quotation mark&sbquo;&#8218;&#x201A;
left double quotation mark&ldquo;&#8220;&#x201C;
right double quotation mark&rdquo;&#8221;&#x201D;
double low-9 quotation mark&bdquo;&#8222;&#x201E;
dagger&dagger;&#8224;&#x2020;
double dagger&Dagger;&#8225;&#x2021;
per mille sign&permil;&#8240;&#x2030;
single left-pointing angle quotation mark&lsaquo;&#8249;&#x2039;
single right-pointing angle quotation mark&rsaquo;&#8250;&#x203A;
euro sign&euro;&#8364;&#x20AC;

2010年8月27日 星期五

手動安裝BugNet

前幾個月小玩了一下BugNet, 其實他有DotnetNuke的影子在.所以我使用起來覺得挺親切的

這是線上版,可以看看他的功能和操作介面

現在開始要記錄一個內部小專案的點滴, 所以打算用這套管理工具,同時打算升級到vs2010,方便做一些客製修改,以下是安裝過程

1.先到BugNet網站下載 source,目前版本為 0.8.193.0,  

已經有for vs2010的版本0.8.221.0, release date 2010/08/31,

修改source code  BugNET_WAP\BugNET_WAP.csproj,把UseIIS設成False, 所以步驟2-8都不用了

若要沿用原來0.8.1930的資料庫,不想執行install, 則將src\BugNET_WAP\Install\dbscripts\Latest.SqlDataProvider.sql直接執行
或者參考官網的升級步驟


若建立一個新的DB,則繼續 步驟9-13

2.解壓縮後,先將src\BugNET_WAP複製出來, 因為等等要升級到vs2010
3.點開src\BugNET.sln,用vs2008開啟,開啟時,系統會提示在IIS建立BugNet的虛擬目錄,開啟後,先rebuild solution,將會使用到的bin檔先準備好(因為直接用bin檔下的dll比較省事)
4.刪除IIS  BugNet的虛擬目錄
5.在vs2010開啟步驟2的目錄下的BugNET_WAP.csproj 專案檔 (來源是web application而不是web site project)
6.系統會再提示在IIS建立BugNet的虛擬目錄, 所以之前建立的虛擬目錄要先刪除
7.開啟後,將此專案的 Target framewpork版本改成3.5
8.接著Add Reference, 將vs2008 下的 src\BugNET_WAP\bin\ 除了BugNet.dll外都加入
9.rebuild 2010的專案


10.接著,開啟sql2008, 建一個空的Database名叫BugNet
11.回到vs2010專案, 打開web.config,將資料庫連線資訊修改一下,指到步驟10所建立的db server,可參考官網上的說明,第4點
12.展開專案目錄install, 找到 Install.aspx, 進行瀏覽
13.接著就開始執行資料庫物件建立,然後就大功告成了, 按登入用admin / password 登入即可,如以下的書面

2010年8月26日 星期四

Microsoft.ACE.OLEDB.12.0 讀excel 2010 64bit 儲存格格式

安裝了office 2010 64 bit後, 想要在 sql2008 64bit 測看看 用openrowset讀取excel的狀況

先建了一個excel檔 test.xlsx

里頭只新增了一行資料,共三個欄位, 如下圖

其中, 欄位C 實際存放的數值是0, 透過儲存格格式的自訂,將之轉換為 - 顯示


測試的語法如下
select * from
OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Format=xlsx;HDR=NO;IMEX=1;Database=C:\test.xlsx','SELECT * FROM [工作表1$] ')

結果回傳如下
 

第三個欄位應該要回傳0才對,

切回SQL 2005 32 bit, 用Microsoft.Jet.OLEDB.4.0測試

select * from
OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Format=xls;HDR=NO;IMEX=1;Database=C:\test.xls','SELECT * FROM [工作表1$] ')   

結果回傳如下

回傳結果第三欄是0無誤

看來 Microsoft.ACE.OLEDB.12.0讀到格式後的值
看來是driver的限制, 因為在32bit環境上使用Microsoft.ACE.OLEDB.12.0仍有此問題

移除office2007後,vs2008 design當掉

最近幾天開啟vs2008的web site project ,隨便開啟一隻.aspx後,整個vs2008就莫名的當掉. 如果只是開啟.aspx.cs檔, vs2008看來又很正常.

搞啥啊...
想了一想,到底這幾天有安裝什麼更新啊?....沒有啊..

直到看到這篇文章...

恍然大悟,,,YABALI....上週有把office 2007移除掉改裝office 2010

好咧加在,  原本要重裝VS2008說....

在程式集,將 Office Web Authoring Component 變更修復一下就OK了.

2010年8月12日 星期四

有長進的powerbuilder 12

因為公司玩PB的人都不在,所以今天被指派去聽PowerBuilder 12 巡迴發表會.
半天下來, 這個帶我CODING入門生涯的開發工具, 真讓人驚奇
最早開始是由PB6.0開始, 那時有位天才高手,在沒有CODING經驗的倩況下,在很短的時間就寫了一套template,有點類似像PFC的架構,但完全是自行架構的一套, 當時, 我還記得我也貢獻了一點CODING, 參考了PB附的PFC程式碼,寫了一些功能.

那時覺得PB在處理資料那塊,有玩過都應該知道DataWindow吧...做得真的很棒
雖然界面UI一點都不吸引人,但以做一個OLTP的APPLICATION而言, PowerBuilder簡直帥呆了, 到現在為此, 儘管市面上一堆開發工具, 但我仍然認為他是個快速開發Client-Server OLTP系統的好工具.

template歷經PB7,8,9,10,11,還真不是蓋的, 歷久不衰咧.

今天比較吸人的是用PB.Net寫.Net WPF, 光看到WPF三個字,就可以想𢠽到PB終於也可以寫出美美的UI囉, 再加上很久很久以前參加過PB10 Datawindow.Net, 二者一比較,簡直不像是同一父母生出來的孩子一樣, 怎麼差那麼多.
所以今天看了講師的DEMO後, 真是令人躍躍欲試啊
整個PB .Net用 Visual Studio Isolated Shell 的開發環境,
晝面設計會有相對應的xaml, code behind還是power script咧.
CODING的界面倒是做到了我以前的幻想... 就是把PB coding的界面搬到.Net上
PB依元件及事件分得好好的,要找要看挺容易的,在.Net 的codebehind檔找事件, 有時是個麻煩,如果程式碼很多,又沒做好分類的話

今天的研討會,我想唯一的缺點就是, 以Roadmap來看..如果我沒看錯, PB.Net大概落後真正的.Net技術二年,因為2012年才支援完整的sliverlight. 而陸續他也會援雲端開發. 是有在跟隨時代的潮流,只不過慢了點..

積於年少對PB的熱愛, PB.Net我想應該要來玩一下

SSRS 亂七八糟的SOAP API 配對

VS2003一直用到VS2010, 每一個版本都免不了要使用到RDL或RLDC的報表功能
所以想要整理一個可以呼叫各版本Reporting Server SOAP API的功能

結果發現, 真是有夠亂,又一整個假象....搞得我暈頭轉向的.....

SQL Server 2000 Reporting Server ReportService.asmxvs2005
SQL Server 2005 Reporting Server ReportService2005.asmxvs2008
SQL Server 2008 Reporting Server ReportService2006.asmxvs2010
SQL Server 2008R2 Reporting Server ReportService2010.asmx

以上連連看, 哪個配哪個可以WORK????

因為用VS2010開發,所以整個測試開發環境就在VS2010上,
所以要測試SQL SERVER Reporting 各版本和SOAP API各版本的組合.

為了方便, 先利用下列指令在VS command line下,將各版本的SOAP API變成一個class, 這樣在專案中就不用新增web reference

wsdl /language:CS /n:"Microsoft.SqlServer.ReportingServices2010" http://sql2008r2/reportserver_sqlserver/reportservice2010.asmx?wsdl


wsdl /language:CS /n:"Microsoft.SqlServer.ReportingServices2006" http://sql2008/reportserver_sql2008/reportservice2006.asmx?wsdl

wsdl /language:CS /n:"Microsoft.SqlServer.ReportingServices2005" http://sql2008/reportserver_sql2008/reportservice2005.asmx?wsdl

wsdl /language:CS /n:"Microsoft.SqlServer.ReportingServices2000" http://sql2000/reportserver/reportservice.asmx?wsdl

將產出的.cs檔, include到專案中就可以使用了

明明知道
VS2008中, report viewer的engine 是RS2005
VS2010中,report viewer的engine 是RS2008

但一直被sql server 版本數字的假象給擾亂....GOOGLE的關鍵字又下得不夠精準.. 



測了半天, 我已經頭暈暈了.
 
測試:
SQL Server 2008 (SP1) Reporting Server + ReportServices2005.asmx + vs2010   可以work
雜唸... ReportServices2005.asmx  為何要配Reporting Server  2008啊, 版本數字能不能匹配一下啊

原本以為ReportServices2006.asmx 是給Reporting Server 2008用得哩...在此打轉很久..空轉
MSDN的說明要好好看仔細, 不要自做聰明.....唉.....

測試:
SQL Server 2008 R2 Reporting Server + ReportServices2010.asmx + vs2010 可以work
雜唸...  Reporting Server 2008為何要配ReportServices2010.asmx , 直接跳過ReportServices2008.asmx ....版本數字能不能匹配一下啊

2010年8月9日 星期一

Informix Linked Server假象

同事在SSMS2005 (9.0.4053 SP3)建立一個linked server的連線到informix
安裝的ODBC版本是IBM Informix Client-SDK 3.5
ODBC的環境設置及測試連線都OK,
但在SQL SERVER LINKED SERVER上新增一個設定後,通常我們都會點開catalog目錄,看一下是不是設定成功吧......
結果,一點選catalog目錄,卻彈出下列訊息..

TITLE: Microsoft SQL Server Management Studio

------------------------------
Failed to retrieve data for this request. (Microsoft.SqlServer.SmoEnum)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&LinkId=20476
------------------------------
ADDITIONAL INFORMATION:
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
------------------------------
The OLE DB provider "SQL Server" for linked server "(null)" reported an error. One or more arguments were reported invalid by the provider.
Cannot obtain the schema rowset "DBSCHEMA_CATALOGS" for OLE DB provider "SQL Server" for linked server "(null)". The provider supports the interface, but returns a failure code when it is used. (Microsoft SQL Server, Error: 7399)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.4053&EvtSrc=MSSQLServer&EvtID=7399&LinkId=20476
------------------------------


很奇怪咧.....相同的ODBC及環境設定,在我的機器上卻是OK...

比較了二者的差異只在於,他是用SSMS 2005連結到SQL2005 DB SERVER來建LINKED SERVER, 而我則是在SSMS 2008連線到SQL2005 DB SERVER建立LINKED SERVER....
(我的本機同時安裝了2008 及2005,所以習慣以SSMS2008來開啟專案)

怪哉, 二者都是連到SQL2005 DB建立LINKED SERVER, SSMS版本不同會有差嗎?

試了一下, 改用SSMS2005 建立LINKED SERVER,
幹.........還真的是有差, 點開catalog時,也同樣發生了上面的錯誤訊息

突然間, 熊熊想到, 以前好像碰過這個問題, 雖然無法瀏覽catalog, 但實際上, 直接下一段openquery的查詢卻是OK的....

下一次,就別再被騙了....

publish error allowDefinition='MachineToApplication'

一個老舊的aspx web form專案,調了一些功能建置成功,但進行部署時顯示以下錯誤。 在應用程式層級之外使用註冊為 allowDefinition='MachineToApplication' 的區段發生錯誤。錯誤的原因可能是虛擬目錄尚未在 IIS 中設定為...