2010年12月14日 星期二

[Excel] 格式化條件 設定文字變色 判斷日期是否到期

這是 利用 Excel 欄位 來做顏色區別,同時也可以提醒自己 是否到期
主要是利用 下次送校日 與 本日  做判斷 來計算出 日期

#這是完成後的效果














#完整的設定 如下圖  請參考






















當然,如果使用 VBA 是比較簡潔,且變化性更好,只是VBA 對於某些人
比較難理解 及 靈活的運用。

2010年12月10日 星期五

[C#] UNC 網路芳鄰連接 含帳號密碼

using IWshRuntimeLibrary;  //在COM 元件內 

private WshNetwork _networkShell = new WshNetwork();
        private void MapDrive(string driveLetter, string UNC, bool isPersistent, string userName, string password)
        {
            if (driveLetter != "")
            {
                DisconnectDrive(driveLetter, true, true);
            }
            else
            {
                DisconnectDrive(UNC, true, true);
            }
            object persistent = isPersistent;
            object user = userName;
            object pwd = password;
            _networkShell.MapNetworkDrive(driveLetter, UNC, ref persistent, ref user, ref pwd);
        }

        private void DisconnectDrive(string UNC_or_DriveName, bool willForce, bool isPersistent)
        {
            try
            {
                object force = willForce;
                object updateProfile = isPersistent;
                _networkShell.RemoveNetworkDrive(UNC_or_DriveName, ref force, ref updateProfile);
            }
            catch
            {
                //
            }
        }

//使用方式 Mount
        private void MAP_DRIVER_Y()
        {
            string sour_path = @"file://123.456.789.123/qq";
            MapDrive("Y:", sour_path, false, "user_id", "password");
        }

// Umount
        private void DIS_MAP_DRIVER_Y()
        {
            DisconnectDrive("Y:", true, true);
        }

不想使用 命令模式 ,這是另一個選擇

2010年10月7日 星期四

[Firefox] 除了擋廣告,還可以擋網址

之前一直為了 廣告網頁煩惱,這次找到好東西了。
可以直接把 Site 網址 直接擋掉。

先看一下套件 Adblock Plus 是主套件 ,一定要安裝
再來就是這次推薦的 Adblock Plus Pop-up Addon











裝完了之後,進入 Ablock plus pop-up addon 的選項裡面。
將 Always show context menu item 打勾。














使用方法很簡單,只要針對要檔的網頁 按滑鼠右鍵
選擇 Block This Window  ,下次這個網址就不會被開啟。

2010年10月6日 星期三

[WCF] 解決 DataTable 的使用

一般來說,在 WCF 裡面 只能操作 DataSet 而不能 操作 DataTable 。
竟然只要指定 DataTable Name 就可以使用 DataTable 了。

真是太好了。

2010年9月29日 星期三

[C#] 監控USB插拔

       
        // 常數宣告

        //USB
        public const int WM_DEVICECHANGE = 0x219;
        public const int DBT_DEVICEARRIVAL = 0x8000;
        public const int DBT_CONFIGCHANGECANCELED = 0x0019;
        public const int DBT_CONFIGCHANGED = 0x0018;
        public const int DBT_CUSTOMEVENT = 0x8006;
        public const int DBT_DEVICEQUERYREMOVE = 0x8001;
        public const int DBT_DEVICEQUERYREMOVEFAILED = 0x8002;
        public const int DBT_DEVICEREMOVECOMPLETE = 0x8004;
        public const int DBT_DEVICEREMOVEPENDING = 0x8003;
        public const int DBT_DEVICETYPESPECIFIC = 0x8005;
        public const int DBT_DEVNODES_CHANGED = 0x0007;
        public const int DBT_QUERYCHANGECONFIG = 0x0017;
        public const int DBT_USERDEFINED = 0xFFFF;
        //雙擊滑鼠左鍵
        public const int WM_MOUSE_DOUBLE_CHICK = 0x0203;



        //USB 監控
        protected override  void WndProc(ref System.Windows.Forms.Message m)
        {
        
            try
            {
                if (m.Msg == WM_DEVICECHANGE)
                {
                    switch (m.WParam.ToInt32())
                    {
                        case WM_DEVICECHANGE:
                            break;
                        case DBT_DEVICEARRIVAL://USB IN
                            DriveInfo[] s = DriveInfo.GetDrives();
                            foreach (DriveInfo drive in s)
                            {
                                if (drive.DriveType == DriveType.Removable)
                                {
                                    MessageBox.Show("U盤已插入,盤符為:" + drive.Name.ToString());
                                    break;
                                }
                            }
                            break;
                        case DBT_CONFIGCHANGECANCELED:
                            break;
                        case DBT_CONFIGCHANGED:
                            break;
                        case DBT_CUSTOMEVENT:
                            break;
                        case DBT_DEVICEQUERYREMOVE:
                            break;
                        case DBT_DEVICEQUERYREMOVEFAILED:
                            break;
                        case DBT_DEVICEREMOVECOMPLETE: //USB OUT
                            MessageBox.Show("You Flash ....Bye");
                            break;
                        case DBT_DEVICEREMOVEPENDING:
                            break;
                        case DBT_DEVICETYPESPECIFIC:
                            break;
                        case DBT_DEVNODES_CHANGED:
                            break;
                        case DBT_QUERYCHANGECONFIG:
                            break;
                        case DBT_USERDEFINED:
                            break;
                        default:
                            break;
                    }
                }
            
                //Mouse
                if (m.Msg == WM_MOUSE_DOUBLE_CHICK)
                {
                    MessageBox.Show("別在雙擊滑鼠左鍵了!");
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            base.WndProc(ref m);
        }

2010年9月28日 星期二

[C#] enum 列舉 補充 - 與 Switch 結合用法

1.) 先宣告 enum

        enum enum_FUNCTION
        {
            CES,
            AOI,
            FET,
            FVT,
            OQC,
            PAK
        }

2.) 然後  new 起來

enum_FUNCTION FC_Function =new enum_FUNCTION();

3.) 然後在 Visual Studio 裡面,按右鍵 選擇 插入程式碼片段  選擇 switch ,
     這時候會顯示下面畫面。

  switch (switch_on)
 {
               default:
 }


4.) 在 switch_on 的地方 ,打入 New 起來的 enum 就會自動展開喔。
     
           switch (FC_Function)
           {
               case enum_FUNCTION.CES:
                   break;
               case enum_FUNCTION.AOI:
                   break;
               case enum_FUNCTION.FET:
                   break;
               case enum_FUNCTION.FVT:
                   break;
               case enum_FUNCTION.OQC:
                   break;
               case enum_FUNCTION.PAK:
                   break;
               default:
                   break;
           }

[C#] 播放音效

//播放音效
        public void PLAY_WAV_MUSIC(string Path)
        {
            if (Path.Length == 0 || Path.IndexOf(".wav") == -1)
            {
                return;
            }
            System.Media.SoundPlayer sp = new System.Media.SoundPlayer();
            sp.SoundLocation = Path;
            sp.Play();
        }

2010年9月20日 星期一

[WCF] 使用說明

第一次使用,做個紀錄

在 IService1.cs 裡面
    public interface IService1
    {
        [OperationContract]
        string KM_GetData(int value);
        [OperationContract]
        string KM_EMP(string ID);
    }

在 Service1.cs  裡面
    public class Service1 : IService1
    {
        public string KM_GetData(int value)
        {
            return string.Format("You entered: {0}", value);
        }
        public string KM_EMP(string ID)
        {
            string a = ID.ToString().Trim();
            return "HI, IAM KUoming -"+a;
        }
    }

發佈到 IIS 以後,就可以使用了,在 使用專案裡面,先加入 服務參考

        private void button1_Click(object sender, EventArgs e)
        {
            KM_WCF.Service1Client WCF = new WindowsFormsApplication1.KM_WCF.Service1Client();
            MessageBox.Show(WCF.KM_GetData(9999));
            MessageBox.Show(WCF.KM_EMP("zxcvbnm,"));
            WCF.Close();
        }

2010年9月15日 星期三

[Silverlight] 畫面佈局

  • Grid - 基本上是一種表格,用以將物件放置在資料列和資料行中。
  • StackPanel - 用以將物件放置在另一個物件的旁邊,或是放在另一個物件的上方。
  • Canvas - 用於絕對位置 (而且從 Silverlight 1.0 開始就未變更)
    <Grid x:Name="LayoutRoot" Background="Black" ShowGridLines="True">
        <Grid.RowDefinitions>
            <RowDefinition Height="450"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="500"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
       
        <Canvas Grid.Column="0" Grid.Row="0">
            <TextBox x:Name="mytextbox" FontSize="20" Text="Hello World" Height="120"
              Width="200" Canvas.Left="50" Canvas.Top="10"></TextBox>
            <Button Click="Button_Click" Content="按我!" Height="120" Width="200"
              FontSize="26" Canvas.Left="50" Canvas.Top="150"></Button>
            <ToggleButton x:Name="bt1" Content="QQ" Height="120" Width="200" Canvas.Left="50"
              Canvas.Top="300" Click="bt1_Click" IsThreeState="True"></ToggleButton>
            <ScrollViewer Background="Blue" Height="120" Width="300"    
            HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Visible"
            Canvas.Left="280" Canvas.Top="10">
            <TextBlock TextWrapping="Wrap" Text="1234567890 嘿嘿!!          測試!!" 
           FontSize="20" FontWeight="light" HorizontalAlignment="Right" IsHitTestVisible="True"
           LineStackingStrategy="MaxHeight"></TextBlock>
            </ScrollViewer>
            <Rectangle Fill="AliceBlue" Height="60" Width="60" Canvas.Left="280"
            Canvas.Top="150"></Rectangle>
            <Rectangle Fill="BurlyWood" Height="60" Width="60" Canvas.Left="360"
            Canvas.Top="200"></Rectangle>
        </Canvas>
        <StackPanel Orientation="Horizontal" Grid.Row="1" Grid.Column="0">
            <TextBlock Text="UserName:" VerticalAlignment="Center" Foreground="White"></TextBlock>
            <TextBox Width="200" Height="30" HorizontalAlignment="Left"></TextBox>
        </StackPanel>
        <StackPanel Orientation="Horizontal" Grid.Row="1" Grid.Column="1">
            <TextBlock Text="Password:" VerticalAlignment="Center" Foreground="White"></TextBlock>
            <TextBox Width="200" Height="30" HorizontalAlignment="Left"></TextBox>
        </StackPanel>
        <Canvas Grid.Column="1" Grid.Row="0">
            <Button x:Name="bt2" Click="bt2_Click" Content="全螢幕" Height="30" Width="150" Canvas.Left="50" Canvas.Top="10"></Button>
        </Canvas>
    </Grid>

[C#] 查詢 IP 資訊

        private void button1_Click(object sender, EventArgs e)
        {
            listBox1.Items.Clear();

            IPHostEntry hostInfo;
            hostInfo = Dns.Resolve(textBox1.Text);
            listBox1.Items.Add("Host Name:" + hostInfo.HostName.ToString());

            foreach (IPAddress ipaddr in hostInfo.AddressList)
            {
                listBox1.Items.Add("IP Address:" + ipaddr.ToString());
            }

            foreach (String alias in hostInfo.Aliases)
            {
                listBox1.Items.Add("Alias:" + alias.ToString());
            }

        }

寫真:

2010年9月14日 星期二

[Auto Macro Recorder] Auto Macro Recorder 基本用法

最近被一些 「重複」的事情搞到很煩,上網找了好幾套 可以 利用先錄製好的巨集
然後重複執行,下面這套還蠻方便的。

怕忘記,先放一些上來註解一下

//Auto Macro Recoder , 副檔名用 scp

//註解
/* xxxxxxx

//延遲(ms)
delay(0)

//按按鍵(KEY)
KB_CLK(win)

//移動滑鼠到(x,y)
M_MV(514,431)

//開啟檔案(檔按名稱 文字檔檔名) , 可以不要檔名
RUN(notepad tp1.txt)

//開啟檔案
OPEN(notepad)

//功能組合按鍵 shift - p
KD(shift)
delay(100)
KD(p)
delay(100)
KU(p)
delay(100)
KU(shift)
delay(100)

//輸入 string
Input(today is )

//得到日期 並輸入
GetDate()
delay(1000)
Input(VARSTR)
delay(1000)

//得到時間
GetTime()

//從暫存貼上
paste()

2010年9月10日 星期五

[SQL] 字串多行..

剛剛爬文時,突然看到,發現 我也寫了 2 年多的 C# ,也不知道可以多行字串。

原本寫法:
SQL="SELECT "+
"* "+
"FROM TABLE ";

發現只要加上 @
SQL = @"SELECT
*
FROM TABLE";

真是太神奇了!

[C#] HASHTABLE

宣告
System.Collections.Hashtable HT = new System.Collections.Hashtable();


資料
HT.Add(101, "CM4021-1-1-L");
HT.Add(102, "CM4021-1-1-R");
HT.Add(103, "CM4021-1-2-L");
HT.Add(104, "CM4021-1-2-R");


實做
string SLOT = "";
foreach (DictionaryEntry KK in HT)
{
if (KK.Value.ToString() == MC + "-" + L1[0] + "-" + L1[2] + "-" + L1[5].Trim())
{
SLOT = KK.Key.ToString();
}
}

排序
//Sort
ArrayList sorter = new ArrayList();
sorter.AddRange(PDLINE1.Keys);
sorter.Sort();

[SQL] 尋找前100筆資料

  • 在 SQL 裡面,找前 100 筆資料:
SELECT TOP 100 * FROM TABLE......

  • 在 ORACLE 是這樣
SELECT * FROM TABLE WHERE ROWNUM < 100 ....

2010年9月9日 星期四

[SQL] 查詢TOP 100 最差的指令

這是從書上看來的,主要 是要查詢 SQL Server 最花費時間的指令, 用來做效率改善的參考。 SELECT TOP 20 TOTAL_WORKER_TIME,PH.text FROM sys.dm_exec_query_stats AS QS CROSS APPLY sys.dm_exec_sql_text(QS.PLAN_HANDLE) AS PH ORDER BY 1 DESC; GO

2010年7月6日 星期二

[寶寶] 台中兒藝館

 

2010 . 07 . 04

P1060313 P1060316
P1060314 P1060315

 P1060320 P1060384
P1060327 P1060352

P1060433 P1060385
P1060386 P1060419

P1060444 P1060447
P1060446 P1060445
P1060464 P1060459
P1060471 P1060468
P1060480 P1060479
P1060527 P1060528

[C#] 自動登入/控制網頁

 

這是工作上所要用到的一個功能,第一次實做 IE 的自動登入。

 

string IE_ID = "guest"; //帳號部分
string IE_PW = "qkqk"; //密碼
mshtml.IHTMLDocument2 IE__DOC;  //網頁內容
mshtml.HTMLInputElementClass IE_INPUT; //輸入 Tag
SHDocVw.InternetExplorer IE_AUTO_OPEN_IE = null; //IE 視窗
object missing = null; //開起IE navigate用

if (IE_AUTO_OPEN_IE == null)
{
    IE_AUTO_OPEN_IE = new SHDocVw.InternetExplorer();
    IE_AUTO_OPEN_IE.Visible = true;
    IE_AUTO_OPEN_IE.Navigate("http://www.kimo.com.tw", ref missing, ref missing, ref missing, ref missing);

    while (IE_AUTO_OPEN_IE.StatusText.IndexOf("完成") == -1)
    {
        Application.DoEvents();
    }

    //開始處理
    IE__DOC = (mshtml.IHTMLDocument2)IE_AUTO_OPEN_IE.Document;
    foreach (mshtml.IHTMLElement MyElement in IE__DOC.all)
    {
        if (MyElement.tagName == "INPUT")
        {
            //轉型
            IE_INPUT = ((mshtml.HTMLInputElementClass)MyElement);

            //帳號
            if (IE_INPUT.name == "UserID")
            {
                IE_INPUT.value = IE_ID;
            }

            //密碼
            if (IE_INPUT.name == "UserPass")
            {
                IE_INPUT.value = IE_PW;
            }

            //登入
            if (IE_INPUT.value == "Login")
            {
                IE_INPUT.click();
            }
        }
    }

    while (true)
    {
        if (IE_AUTO_OPEN_IE.Busy == false && IE_AUTO_OPEN_IE.ReadyState == SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE)
        {
            break;
        }
        System.Threading.Thread.Sleep(500);
    }

    if (true)
    {
         Application.DoEvents();
        IE__DOC = (mshtml.IHTMLDocument2)IE_AUTO_OPEN_IE.Document;

        foreach (mshtml.IHTMLElement MyElement in IE__DOC.all)
        {
            if (MyElement.tagName == "INPUT")
            {
                //轉型
                IE_INPUT = ((mshtml.HTMLInputElementClass)MyElement);
                if (IE_INPUT.name == "UnitNo")
                {
                    IE_INPUT.value = textBox3.Text.Trim();
                }
            }
        }

2010年6月22日 星期二

[Other] 嚇一跳阿

 

昨天內人打了一通電話過來,說是 帶小朋友去醫院 看醫生,可能是醫院生意太好了 ..

所以要等很久。。

於是跑到附近 M 用餐(主要是為了 萬惡的溜滑梯),突然 一下子小孩不見了!!

各個地方都找過了,就是找不到 寶貝兒子。。

 

最後經過附近的店家告知,有個小孩子過馬路 跑回去醫院了。

 

!!天阿!!

見到面的第一句話是 『媽媽 我在等你喔』  。  真是嚇死人了。

2010年6月17日 星期四

[C#] DateTime 加一天, String to DateTime

--
--

        private string GET_ADD1_DAY(string DT)
        {
            DateTime BF = new DateTime();
            BF = (DateTime.Parse(DT)).AddDays(1);
            string NEW_DATE = BF.ToString("yyyy-MM-dd");
            return NEW_DATE;
        }
--
--

2010年6月15日 星期二

[C# ASP.NET] LABEL To PH

                 Label lb = new Label();
                lb.Text = "請正確輸入日期格式 Example:2010-05-01";
                lb.Font.Size = 20;
                lb.ForeColor = System.Drawing.Color.Yellow;
                lb.BackColor = System.Drawing.Color.Black;
                PlaceHolder1.Controls.Add(lb);

2010年6月11日 星期五

[C# ASP.NET] DataTABLE TO CSV

1.)首先 所在頁面的 命名空間請加入 Using 內.
2.)CLASS

   public static class DataTABLE_TO_CSV_CLASS
    {
        public static string DT_TO_CSV(this DataTable dt)
        {
            StringBuilder sb = new StringBuilder();
            for (int x = 0; x < dt.Columns.Count; x++)
            {
                if (x != 0)
                    sb.Append(",");
                sb.Append(dt.Columns[x].ColumnName);
            }
            sb.AppendLine();
            foreach (DataRow row in dt.Rows)
            {
                for (int x = 0; x < dt.Columns.Count; x++)
                {
                    if (x != 0)
                        sb.Append(",");
                    sb.Append(row[dt.Columns[x]].ToString());
                }
                sb.AppendLine();
            }
            return sb.ToString();

        }
    }



使用時:

                //將 Datatable 存成 CSV
                string ds_string = DataTABLE_TO_CSV_CLASS.DT_TO_CSV(ds._DT_ReturnValue);
                ds_string = ds_string.Replace("\r\n","\n").Trim();
                string[] ds_string_array=ds_string.Split(new char[] { '\n'});
                File.WriteAllLines(System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory).ToString()+"\\"+txtStartDate.Text+"-OQC.csv", ds_string_array, Encoding.Default); 

[C# ASP.NET] Web DataTABLE to TABLE

  public Table CreateTableByDatatable(DataTable ds)
        {
            Table tb = new Table();  //主表
            TableRow tr = null;      //列
            TableCell tc = null;     //行
            Label lb = null;
            HyperLink lk = null;

            //=========================================================設定 Table 參數
            tb = new Table();
            //tb.Width = 1000;
            tb.Font.Name = "Courier New";
            tb.CellPadding = 1;
            tb.CellSpacing = 1;
            tb.BorderStyle = BorderStyle.Solid;
            tb.BorderWidth = 0;
            tb.BorderColor = System.Drawing.Color.FromName("#C0C0C0");
            //tb.GridLines = GridLines.Both;
            //=========================================================設定 標題
            tr = new TableRow();
            lb = new Label();
            tb.Rows.Add(tr);
            tc = new TableCell();
            tc.Attributes.Add("Style", "border-width:1px;border-color:#006699;border-style:solid");
            tc.ColumnSpan = ds.Columns.Count + 1;          //合併儲存格
            tc.HorizontalAlign = HorizontalAlign.Center;
            //lb.Width = ds.Columns.Count  * 70 + 140;
            lb.Text = "Raw Data";
            lb.BackColor = System.Drawing.Color.FromName("#17375D");
            lb.ForeColor = System.Drawing.Color.FromName("#FFFFFF");
            tc.BackColor = lb.BackColor;
            tc.Controls.Add(lb);
            tr.Cells.Add(tc);
            //=========================================================
            tr = new TableRow();
            for (int i = 0; i < ds.Columns.Count; i++)
            {
                lb = new Label();
                tb.Rows.Add(tr);
                tc = new TableCell();
                tc.Attributes.Add("Style", "border-width:1px;border-color:#006699;border-style:solid");
                tc.HorizontalAlign = HorizontalAlign.Center;
                //lb.Width = ds.Columns.Count * 70 + 140;
                lb.Text = ds.Columns[i].ColumnName;
                lb.BackColor = System.Drawing.Color.FromName("#F5FF8E");
                lb.ForeColor = System.Drawing.Color.FromName("#000000");
                tc.BackColor = lb.BackColor;
                tc.Controls.Add(lb);
                tr.Cells.Add(tc);
            }
            //========================================================
            for (int j = 0; j < ds.Rows.Count; j++)
            {
                if (cmbFunction.SelectedValue != "SELECT")
                {
                    if (cmbFunction.SelectedValue == ds.Rows[j].ItemArray[3].ToString())
                    {
                        tr = new TableRow();
                        tb.Rows.Add(tr);
                        for (int i = 0; i < ds.Columns.Count; i++)
                        {
                            lb = new Label();
                            tc = new TableCell();
                            tc.Attributes.Add("Style", "border-width:1px;border-color:#006699;border-style:solid");
                            tc.HorizontalAlign = HorizontalAlign.Center;
                            //lb.Width = ds.Columns.Count * 70 + 140;
                            lb.Text = ds.Rows[j].ItemArray[i].ToString();
                            lb.BackColor = System.Drawing.Color.FromName("#FFFFFF");
                            lb.ForeColor = System.Drawing.Color.FromName("#000000");
                            tc.BackColor = lb.BackColor;
                            tc.Controls.Add(lb);
                            tr.Cells.Add(tc);

                        }

                    }
                }
                else
                {
                    tr = new TableRow();
                    tb.Rows.Add(tr);
                    for (int i = 0; i < ds.Columns.Count; i++)
                    {
                        if (ds.Columns[i].ColumnName == "FAIL" & int.Parse(ds.Rows[j].ItemArray[7].ToString ())>0)
                        {
                            lk = new HyperLink();
                            tc = new TableCell();
                            tc.Attributes.Add("Style", "border-width:1px;border-color:#006699;border-style:solid");
                            tc.HorizontalAlign = HorizontalAlign.Center;
                            lk.Text = ds.Rows[j].ItemArray[i].ToString();
                            lk.NavigateUrl = "DefectDetail.aspx?date=" + ds.Rows[j].ItemArray[4].ToString() + "&" +
                                                               "fc=" + ds.Rows[j].ItemArray[3].ToString() + "&" +
                                                               "model=" + ds.Rows[j].ItemArray[2].ToString();
                            lk.Target = "_blank";
                            lk.BackColor = System.Drawing.Color.FromName("#FFFFFF");
                            lk.ForeColor = System.Drawing.Color.FromName("#0000FF");
                            tc.BackColor = lk.BackColor;
                            tc.Controls.Add(lk);
                            tr.Cells.Add(tc);
                        }
                        else
                        {
                            lb = new Label();
                            tc = new TableCell();
                            tc.Attributes.Add("Style", "border-width:1px;border-color:#006699;border-style:solid");
                            tc.HorizontalAlign = HorizontalAlign.Center;
                            //lb.Width = ds.Columns.Count * 70 + 140;
                            lb.Text = ds.Rows[j].ItemArray[i].ToString();
                            lb.BackColor = System.Drawing.Color.FromName("#FFFFFF");
                            lb.ForeColor = System.Drawing.Color.FromName("#000000");
                            tc.BackColor = lb.BackColor;
                            tc.Controls.Add(lb);
                            tr.Cells.Add(tc);
                        }

                    }

                }
               

            }

            return tb;


        }

2010年3月30日 星期二

[Oracle] 資料表的關連方式

SELECT

A.SERIAL_NUMBER "Barcode",
B.PART_NO "Model Name",
C.PDLINE_NAME "Line",
C.PDLINE_DESC "Line DESC",
A.STAGE_ID,
A.PROCESS_ID,
A.TERMINAL_ID,
A.OUT_PROCESS_TIME,
A.EMP_ID

FROM G_SN_TRAVEL A,
SYS_PART B,
SYS_PDLINE C

WHERE
A.MODEL_ID=B.PART_ID(+) AND
A.PDLINE_ID=C.PDLINE_ID(+) AND
TRUNC(A.OUT_PROCESS_TIME)=TO_DATE('2008-12-29','yyyy-mm-dd')
ORDER BY OUT_PROCESS_TIME

2010年3月24日 星期三

[C#] 動態產生物件 RadioButton 後,自訂事件

private void button2_Click_1(object sender, EventArgs e)

{
string[] KK = new string[3];
KK[0] = "Yes";
KK[1] = "No";
KK[2] = "Maybe";
System.Windows.Forms.RadioButton[] radioButtons = new System.Windows.Forms.RadioButton[3];
for (int i = 0; i < 3; ++i)
{
radioButtons[i] = new RadioButton();
radioButtons[i].Text = KK[i];
radioButtons[i].Location = new System.Drawing.Point(10, 10 + i * 20);
this.Controls.Add(radioButtons[i]);
}
radioButtons[0].Click += new System.EventHandler(this.OhYa_Click1);
radioButtons[1].Click += new System.EventHandler(this.OhYa_Click2);
radioButtons[2].Click += new System.EventHandler(this.OhYa_Click3);
}

private void OhYa_Click1(object sender, EventArgs e)
{
MessageBox.Show("1");
}

private void OhYa_Click2(object sender, EventArgs e)
{
MessageBox.Show("2");
}

private void OhYa_Click3(object sender, EventArgs e)
{
MessageBox.Show("3");
}

[C#] TreeView 用法

TreeNode node = treeView1.Nodes.Add("項目");

node.Nodes.Add("1");
node.Nodes.Add("2");
node.Nodes.Add("3");

SO,

[C#] 將Datatable 與 DataGridView 綁在一起

DataTable dt = new DataTable();

dt.Columns.Add(new DataColumn("Item", typeof(string)));
dt.Columns.Add(new DataColumn("Color", typeof(string)));
dt.Rows.Add(new string[] { "table", "brown" });
dt.Rows.Add(new string[] { "chair", "white" });
dataGridView1.DataSource = dt;


操作的部分
            DataView view = new DataView(this._Table);
            view.RowFilter = "Item='" + "table" + "'";
            DataTable table = view.ToTable();
            dataGridView3.DataSource = table;

2010年3月2日 星期二

[Oracle] 日期的比對、搜尋 語法

日期的比對、搜尋 語法

試了好久,跟 SQL 真的差好多阿!!

SELECT * FROM 資料表


WHERE TRUNC(欄位名)=(SELECT TO_DATE('2008-9-20', 'yyyy-mm-dd') from dual)

2010年2月26日 星期五

[C#] 方法的使用

第一種是 呼叫方法(只有執行)
private void Form1_Load(object sender, EventArgs e)
{
CALL_BG();
}
           private void CALL_BG()
          {
//這裡寫上要做的事情
}
第二種 呼叫方法同時將值 傳給副程式執行
private void Form1_Load(object sender, EventArgs e)
{
string aa = "abc";
CALL_BG(aa);
}
private void CALL_BG(string aa)
{
aa = aa + "12345";
MessageBox.Show(aa);
}
第三種 傳入 、處理後 傳出
 private void Form1_Load(object sender, EventArgs e)
{
string aa = "abc";
string bb=CALL_BG(aa);
MessageBox.Show(bb);
}
private string CALL_BG(string aa)
{
string CALL_BG_FB = aa + "12345";
return CALL_BG_FB;
}

2010年2月11日 星期四

[C#] Region 註解


用來 Mark 大範圍程式碼 區塊 ,識別使用





使用後效果


[C#] enum 列舉

剛剛伙伴教我的,第一次使用

用來做流程控制最好了,而且還支援中文  :)

2010年2月3日 星期三

[C#] FTP 下載單一檔案(WebClient)

網路上有說,使用 WebClient 的作法碰到取很大檔案時 會有 timeout 問題,
目前自己測試 16MB 單檔是沒有問題。

using System.Net;
using System.IO;
----------------------------------
WebClient RMS = new WebClient();
RMS.Credentials = new NetworkCredential("ubuntu", "zzzzzz");
string FILE_NAME = "新增文字文件.txt";
byte[] fildData = RMS.DownloadData("ftp://10.1.1.195/tools/"+FILE_NAME);
FileStream file = File.Create(@"C:\Users\kuoming\Desktop\" + FILE_NAME);
file.Write(fildData, 0, fildData.Length);
file.Close();
listBox1.Items.Add(FILE_NAME);


完整程式碼:

 
 
 
 
 
using System;


using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Net;

using System.IO;



namespace _20100203_FTP_Client_test

{

public partial class Form1 : Form

{

string FILE_NAME = "";

public Form1()

{

InitializeComponent();

}



private void Form1_Load(object sender, EventArgs e)

{

this.Text= "目前目錄 為 10.1.1.195 / TOOLS ";

button1.Text = "Download";

listBox1.Items.AddRange(GetFileList());

listBox1.Sorted = true;

}



private void GET_FILE()

{

try

{

WebClient RMS = new WebClient();

RMS.Credentials = new NetworkCredential("ubuntu", "zzzzzz");

byte[] fildData = RMS.DownloadData("ftp://10.1.1.195/tools/" + FILE_NAME);

FileStream file = File.Create(@"C:\Users\kuoming\Desktop\" + FILE_NAME);

file.Write(fildData, 0, fildData.Length);

file.Close();

MessageBox.Show("OK");

}

catch (Exception QQ)

{

MessageBox.Show("目前不支援目錄下載...");

}



}



public string[] GetFileList()

{

string[] downloadFiles;

StringBuilder result = new StringBuilder();

FtpWebRequest reqFTP;

try

{

reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + "10.1.1.195" + "/tools/"));

reqFTP.UseBinary = true;

reqFTP.Credentials = new NetworkCredential("ubuntu", "zzzzzz");

reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;

WebResponse response = reqFTP.GetResponse();

StreamReader reader = new StreamReader(response.GetResponseStream());

string line = reader.ReadLine();

while (line != null)

{

result.Append(line);

result.Append("\n");

line = reader.ReadLine();

}

result.Remove(result.ToString().LastIndexOf('\n'), 1);

reader.Close();

response.Close();

return result.ToString().Split('\n');

}

catch (Exception ex)

{

System.Windows.Forms.MessageBox.Show(ex.Message);

downloadFiles = null;

return downloadFiles;

}

}



private void button1_Click(object sender, EventArgs e)

{

FILE_NAME = listBox1.SelectedItem.ToString();

GET_FILE();

}



}

}

2010年1月26日 星期二

[Other] Firefox Javascript 可以只顯示文字的語法

有時候遇到很多圖片的網頁,可是只是想要 看文字的部分。所以把文字放大,背景顏色套用白色
 

可以存成『我的最愛』連結,當按下連結就可以套用了。

javascript:(function(){var%20newSS,%20styles='*%20{%20background:%20white%20!%20important;%20color:%20black%20!important;%20line-height:%20160%%20!important;%20font-size:%2018pt%20!important%20}%20:link,%20:link%20*%20{%20color:%20#0000EE%20!important%20}%20:visited,%20:visited%20*%20{%20color:%20#551A8B%20!important%20}';%20if(document.createStyleSheet)%20{%20document.createStyleSheet(%22javascript:'%22+styles+%22'%22);%20}%20else%20{%20newSS=document.createElement('link');%20newSS.rel='stylesheet';%20newSS.href='data:text/css,'+escape(styles);%20document.getElementsByTagName(%22head%22)[0].appendChild(newSS);%20}%20})();
  
原本樣式

          








套用後樣式








2010年1月23日 星期六

[C#] Listview

  

Listview 是很好用,之前一直都用 Listbox 來做,最近才開始接觸。。

 

   1: listView1.Clear(); //清空 listview



   2:            listView1.View = View.Details; //設定模式為 清單模式



   3:            listView1.GridLines = true; //繪製 格線



   4:            listView1.FullRowSelect=true; //ture 一次選擇一行  ; false 一次選一格 



   5:            listView1.MultiSelect = false; //不可選多行



   6:            listView1.Scrollable = true; //需要的時候 自動顯示 滾動條



   7:            listView1.HeaderStyle = ColumnHeaderStyle.Nonclickable; //設定點選 標題項目不動作



   8:            listView1.Columns.Add("機種",150,HorizontalAlignment.Left);  //設定標題,寬度,位置



   9:            listView1.Columns.Add("55階",180,HorizontalAlignment.Left);



  10:  



  11:            for (int i = 0; i < 1; i++)



  12:            {



  13:                ListViewItem LM = new ListViewItem(comboBox1.Text.ToString());



  14:  



  15:                LM.SubItems.Add("1");



  16:              



  17:                listView1.Items.AddRange(new ListViewItem[] { LM });



  18:            }




 



排序的部分(CLASS)





   1: class ListViewItemComparer : IComparer



   2: {



   3:     private int col;



   4:     public ListViewItemComparer()



   5:     {



   6:         col = 0;



   7:     }



   8:     public ListViewItemComparer(int column)



   9:     {



  10:         col = column;



  11:     }



  12:     public int Compare(object x, object y)



  13:     {



  14:         return String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);



  15:     }



  16: }




用法





   1: //排序 Listiew 4



   2: this.listView4.ListViewItemSorter = new ListViewItemComparer(listView4.Columns[5].Index);



   3: listView4.Sort();