2017年10月24日 星期二

Oracle 11g 安裝

環境 win7 64bit

從 oracle 官網上下載 windows 64bit 的資料庫

win64_11gR2_database_1of2.zip
win64_11gR2_database_1of2.zip

將兩個壓縮檔分別解壓縮,然後放到同一個資料夾下,執行 setup





需要設定管理密碼,Oracle 設定 a1234,提示不符合 Oracle 建議的標準,不過仍然可以繼續


安裝


如果安裝的過程中發生錯誤,像是「找不到檔案 WFMLRSVCApp.ear」
原因可能是因為從 oracle 網站上下載兩個壓縮檔,需要分別解壓縮後放到同一個資料夾下
然後如果在過程中發生這個錯誤,這時候再解壓到同一個目錄來不及了,需要重新再跑一次安裝



安裝完後,打開 oracle 資料庫,這個選項會用預設的瀏覽器開啟一個 oracle database control,如果是 ie9 好像會有一個憑證的問題,改用 chrome 即可


成功登入後可以看到目前資料庫運行的狀況,注意這邊在「一般」下,有一個
「執行處理名稱」,等下會用到


因為等下的 SQL Developer 要用到 jdk
安裝 jdk,這邊我用的是 jdk 9.0.1,過程我就略過

安裝 SQL Developer

在啟動時候他要 jdk 的位置,所以才有了上一步裝 jdk 的動作,在裝的時候需要注意 java 的版本,每個 sqldeveloper 有對應特定版本的 java,所以當版本不合的時候會跳提示訊息,繼續執行就好


選左邊的綠色加號,建立新的資料庫連線,同時輸入連線資訊


連線名稱:隨便取
使用者名稱:先用資料庫預設的 system
密碼:在安裝資料庫過程中設定的密碼

主機名稱:localhost
連接埠:1521
SID:填入前面提到的「執行處理名稱」


按下測試,沒有跳什麼紅色的錯誤訊息就結束了。

    如果有問題了話,可以在 cmd 模式下輸入以下指令做測試

        tnsping localhost

    如果回應 OK 了話,再檢查一下帳號密碼和SID的部份

    也可以下

        lsnrctl status

    檢查一下監聽器的狀態

如果都正常了話,按連線就會以帳號 system 連入資料庫了

可以展開左邊的表格資料夾,應該可以看到一堆系統資料表

2017年9月7日 星期四

RDLC 固定筆數分頁(一)

針對需要設定每頁只列印固定筆數就換頁的需求

環境

    Visual Studio 2017 Community
    Microsoft.ReportViewer.WinForm 版本是 14.0.0.0

示範用的 RDLC 使用的資料集的格式

public class FixedRowEachPageDataSet
{
    public string ItemCode { get; set; }
    public string ItemName { get; set; }
    public string ItemPrice { get; set; }
    public string ItemStock { get; set; }
}

怎麼建立 RDLC 頁面的部份不做說明

首先在 RDLC 中建立好資料表,並綁定資料集


在詳細資料上點右鍵,選加入群組 > 父群組,顯示 Tablix 視窗



在 Tablix 群組視窗上輸入公式,其中的數字即是每頁要顯示的頁數

    =Ceiling(RowNumber(nothing)/15)


接著在建立的Group1群組上點右鍵選群組屬性


在「分頁符號」頁籤勾選分頁方式


在「排序頁籤」刪除裡面的排序依據
因為排序運算式會預設成群組運算式的內容,但是排序運算式不能用RowNumber,否則會報錯


設定標頭重覆
在完成上面步驟之後,目前畫面上應該像這樣,點右邊的小箭頭,選「進階模式」


選代表 Group 的那個靜態,如果把自動生成的那個 Group1 欄刪掉了話,就是點另一個(靜態),點下去之後按 F4 叫出屬性視窗,並修改屬性中的值,即完成標頭重覆

    KeepWithGroup = After
    RepeatOnNewPage = True


2017年9月4日 星期一

ASP.NET MVC DisplayTemplates

範本檔案放置的路徑是固定的

    /Views/ControllerName/DisplayTemplates
    /Views/Shared/DisplayTemplates

檔名需要與物件的型別相同,即若物件型別為 DateTime,則檔名需為 DateTime,或在
Model 上以 [UIHint("YourDisplayTemplatesName")] 標籤指定顯示範本的檔名

選定檢視範本的方式有三種,其順序為
1.UIHine 屬性
2.DataType 屬性
3.物件的資料型別名稱(不含命名空間)

蠻適合拿來處理西元轉民國年問題
在處理檢示範本頁面上需要注意會不會傳入的值是 null 的問題

實作方式

在 /Views/Shared/DisplayTemplates 中加入 twDateTime.cshtml
可能需要自行建立 DisplayTemplates 資料夾
這頁就是檢視範本,最後輸出什麼到 View 上就是看這頁最後會產出什麼

    @model DateTime
    @using  System.Globalization
    @{ 
        TaiwanCalendar tc = new TaiwanCalendar();
    }    
    @tc.GetYear(Model)/@tc.GetMonth(Model)/@tc.GetDayOfMonth(Model)    

在 Model 中加入 DTTest.cs

    public class DTTest
    {
        [UIHint("twDateTime")]
        [DataType(DataType.DateTime)]
        public DateTime Dt { get; set; }
    }

在 Controller 中加入

    public ActionResult ShowTWDt()
    {
        var DTTest = new DTTest()
        {
            Dt = DateTime.Now
        };

        return View(DTTest);
    }

在 View 中加入 ShowTWDt.cshtml
    @model ControllerPratice.Models.DTTest
    @Html.DisplayFor(model => model.Dt)