Friday, October 24, 2014

[Azure] SSMS 連線 SQL Database

第一次接觸 Azure,看著大神的教學 - 用 SQL Server Management Studio 連線 Windows Azure 上的 SQL Database ,想說用 SSMS 來連接 SQL Database 並不是甚麼困難的事情,沒想到還是花費不少時間才成功 ~~ >.<

Azure => SQL 資料庫 => SQL2014(事先建好的 SQL Database)

[Azure] SSMS 連線 SQL Database-1

SQL2014 => 儀表板

[Azure] SSMS 連線 SQL Database-2

儀錶板頁面又下角可以看見該 Database 相關資料,SSMS 要利用下圖中的 "伺服器名稱" 來連接 SQL2014,"管理 URL" 是另外一段故事,後面紀錄,>.<

[Azure] SSMS 連線 SQL Database-3

第一次使用 Azure 情況下,要先設定允許的 IP 位置,下圖畫面在儀表板內右下角可以找到

[Azure] SSMS 連線 SQL Database-4

畫面上會顯示 Client 端 IP 位置,只要按下加入即可

[Azure] SSMS 連線 SQL Database-5

輸入伺服器名稱、選擇 SQL Server 驗證並輸入建立 SQL Database 時的登入帳號和密碼

[Azure] SSMS 連線 SQL Database-6

在 SSMS 中登錄 SQL Database 成功,可以看見 instance 圖示右下角會有一個淺藍色圖示

[Azure] SSMS 連線 SQL Database-7

 登錄過程中發生的小狀況
  • 大神影片中是抓取 "管理 URL" (可以從伺服器資料那張圖中看見)資料,然後把它 copy 到 SSMS 中並刪除後面的 SQL Database 名稱,我沒有注意到不需要 https 字樣,一直用 https:ServaerName.database.windows.net 去連接,一直都失敗,嘗試過 Azure 提供的連接字串用 SSMS 或寫 C# 進行連接都 OK,後來才從連接字串中發現到只要輸入 ServerName.database.windows.net 就好 ~~ 暈 ~~
  • 第一次使用 Azure,不知道要設定允許 IP,連接時才發現下列的錯誤訊息 ~~
[Azure] SSMS 連線 SQL Database-8

Thursday, October 23, 2014

[C#] FileUpload 多選

FileUpload 多選練習
  • dotNet 4.5:FileUpload AllowMultiple屬性 
  • dotNet 4.5 前版本:Panel 內有多個 FileUpload 控件
using System.IO;

namespace MultiUpload
{
    public partial class _default : System.Web.UI.Page
    {
        string serverPath = @"D:\FileUploadDemo";
        string serverFilePath = string.Empty;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                // 設定該屬性 FileUpload 就具有多選檔案功能
                FU1.AllowMultiple = true;
            }
        }

        protected void btnUpload_Click(object sender, EventArgs e)
        {
            if (FU1.HasFiles == false) return;

            foreach (HttpPostedFile file in FU1.PostedFiles)
            {
                serverFilePath = Path.Combine(serverPath, file.FileName);
                try
                {
                    FU1.SaveAs(serverFilePath);
                    lblMessage.Text = "上傳成功";
                }
                catch (Exception ex)
                {
                    lblMessage.Text = ex.Message;
                }
            }
        }

        protected void btnPanelUpload_Click(object sender, EventArgs e)
        {
            // 搜尋 Panel 內的 FileUpload 控件
            foreach (FileUpload fu in plFU.Controls.OfType<fileupload>())
            {
                // 判斷有哪些 FileUpload 有選擇檔案
                if (fu.HasFile == false) continue;
                serverFilePath = Path.Combine(serverPath, fu.FileName);
                try
                {
                    fu.SaveAs(serverFilePath);
                    lblPanelMessage.Text = "上傳成功";
                }
                catch (Exception ex)
                {
                    lblPanelMessage.Text = ex.Message;
                }
            }
        }
    }
}
[C#] FileUpload 多選

Tuesday, October 21, 2014

0Y5M - 朱玖瑩書法

1005 剛好是小鬼頭滿五個月,規劃半天行程,目標安平樹屋,爸爸媽媽第一次出遊的地方,順道找地頭蛇莊老師聚聚 ~~ ^_^ ~~

之前來樹屋並沒有朱玖瑩展館,媽媽買了一張拓印卡片來製作

正面

img-141008202036-001

背面

img-141008201953-001

小鬼頭合照,人生第一次出遊 ~~

IMG_1067-001

館內另一處特色是這面心經牆,一看見時直覺是想到龍哥的婚紗照,印象中是在成大校園內,沒想到這裡也有一面,事後才知道原來就是這一面,^_^'' ~~

IMG_1071

午餐在莊老師安排下,來到一間空間寬敞又舒適的餐廳用餐,過程中最讓人驚豔的莫過於他女兒的好表現,用餐過程中,很安靜地坐在兒童椅上用餐,完全沒有坐不住的情況,而莊老師只要把食物剪碎放到她的碗內,她就會自動吃,也不需要別人餵,真的是上了一課,小鬼頭你的榜樣在這,加油 ~~ ^_^ ~~

Monday, October 20, 2014

[C#] 格式化 DataGridView 內資料

練習在 DataGridView 內,對資料進行格式化
  1. Money 欄位資料每三位有ㄧ個小數點
  2. Money 欄位內不同金額區間設定不同顏色表示
  3. 點選 Money 欄位內資料,會改變顏色來強化點選的 cell
  4. 日期欄位內資料指定格式化為 D
  5. NULL 值必須顯示未輸入日期字樣
  6. Money 欄位利用 CellFomatting、Date 欄位利用 DefaultCellStyle.Format 來格式化
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // 建立基礎資料
            DataTable dt = new DataTable("Demo");
            dt.Columns.Add("ID", typeof(int));
            dt.Columns.Add("Money", typeof(decimal));
            dt.Columns.Add("Date", typeof(DateTime));
            dt.Rows.Add(1, 2456, DateTime.Now);
            dt.Rows.Add(2, 789456123, DateTime.Now.AddDays(1));
            dt.Rows.Add(3, 456123, DateTime.Now.AddDays(2));
            dt.Rows.Add(4, 1, DateTime.Now.AddDays(3));
            dt.Rows.Add(5, 1111, null);
            dt.Constraints.Add("PK", dt.Columns["ID"], true);
            dgvData.DataSource = dt;
            dgvData.AllowUserToAddRows = false;

            // 利用 DefaultCellStyle.Format 屬性來 Date 欄位格式化
            dgvData.Columns["Date"].DefaultCellStyle.Format = "d";
            dgvData.Columns["Date"].DefaultCellStyle.NullValue = "未輸入日期";
        }

        private void dgvData_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            // 利用 CellFormatting 來完成 Money 欄位格式化
            if (dgvData.Columns[e.ColumnIndex].Name.Equals("Money"))
            {

                decimal money = (decimal)e.Value;

                e.CellStyle.Format = "###,###,###";
                e.CellStyle.SelectionBackColor = Color.Red;
                e.CellStyle.SelectionForeColor = Color.White;
                e.CellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;

                if (money > 0 && money <= 1000) e.CellStyle.BackColor = Color.LightBlue;
                if (money > 1000 && money <= 10000) e.CellStyle.BackColor = Color.LightGreen;
                if (money > 10000) e.CellStyle.BackColor = Color.LightPink;
            }
        }
    }
}
[C#] 格式化 DataGridView 內資料