2013年10月28日 星期一

WebClient運用:自動下載遠端網路檔案

把遠端的檔案下載到電腦


            //string sPathFile = @"D:\test.txt";
            string sFile = "rctp" + string.Format("{0:yyyyMMddHHmmssfff}", DateTime.Now);
            string sPathFile = Request.PhysicalApplicationPath + sFile +".txt";

            //DownloadFileAsync
            WebClient wc = new WebClient();
            wc.Credentials = System.Net.CredentialCache.DefaultCredentials;
            wc.DownloadFileAsync(new Uri(@"http://www.taoyuan.com/up/flxxxtx/AA.txt"), sPathFile);



WebForm1.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="FightTaotao.WebForm1" Async="true" %>


完畢。



重點:
DownloadFileAsync : 以非同步作業的方式將指定的資源載入至本機檔案,並傳回工作物件。 這些方法不會封鎖呼叫執行緒。


===================
同場加映:
WebClient運用:可以每天自動抓yahoo股票行情




抓取"檢視原始檔"內容。如何使用C#抓取網頁"真正"的本文



        public static string RdData()
        {
            string strUrl = "http://www.taoyuan.com/up/flxxxtx/AA.htm";

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strUrl);

            HttpWebResponse webresponse = (HttpWebResponse)request.GetResponse();

            StreamReader streamReader = new StreamReader(webresponse.GetResponseStream(),
                               Encoding.GetEncoding("big5")); //可改不同編碼

            string 原始碼 = streamReader.ReadToEnd();

            return 原始碼;
        }

完畢。


筆記:
  • webBrowser.Document.Body.InnerHtml 是修改過後的本文(多了<TBODY>)
  • 使用HttpWebRequest即可抓取原始檔. 

2013年10月23日 星期三

[sql]找出重複的資料

檢查有沒有重複的資料


SELECT ID,COUNT(1)          /*重複的次數*/ 
FROM [View_1] 
GROUP BY ID 
HAVING COUNT(*) > 1      /*重複出現超過一次的資料*/



完畢。


2013年10月16日 星期三

建立資料夾


C#

                if (!System.IO.Directory.Exists(Server.MapPath(@"tmp")))  //建立資料夾
                    System.IO.Directory.CreateDirectory(Server.MapPath(@"tmp"));

2013年10月15日 星期二

web.config的連線字串


 <connectionStrings>
    <add name="FlightConnectionString" connectionString="Data Source=.;Initial Catalog=Flixxx;User ID=xxx;Password=xxxxxx" providerName="System.Data.SqlClient"/>
  </connectionStrings>


Ajax的小日曆 CalendarExtender

功能需求,使用者輸入日期 或 選擇日期,並做日期格式驗證

很簡單。
首先,加入Ajax參考了沒? 看此 http://gdlion.blogspot.tw/2013/10/ajaxajaxcontroltoolkit.html

再來
1.Default.aspx 請加入下列註冊
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="cc1" %>




            <td style="width: 28%">
                <asp:Label ID="lb_sdate" runat="server" Font-Size="Small" Text="自"></asp:Label>
                &nbsp;

                <asp:TextBox ID="txt_sdate" runat="server" AutoPostBack="False" Width="60px"
                    MaxLength="8" style="margin-bottom: 0px"></asp:TextBox>

                <cc1:CalendarExtender ID="CalendarExtender1" runat="server" Format="yyyyMMdd"
                    PopupButtonID="btn_calstart" TargetControlID="txt_sdate">
                </cc1:CalendarExtender>

                <asp:ImageButton ID="btn_calstart" runat="server"
                    ImageUrl="~/images/APPTL.ICO" CausesValidation="False" />

                <asp:DropDownList ID="ddl_from" runat="server" Visible="False">
                    <asp:ListItem Selected="True" Value="0">0000</asp:ListItem>
                    <asp:ListItem Value="1">0100</asp:ListItem>
                    <asp:ListItem Value="2">0200</asp:ListItem>
                    <asp:ListItem Value="3">0300</asp:ListItem>
                    <asp:ListItem Value="4">0400</asp:ListItem>
                    <asp:ListItem Value="5">0500</asp:ListItem>
                    <asp:ListItem Value="6">0600</asp:ListItem>
                    <asp:ListItem Value="7">0700</asp:ListItem>
                    <asp:ListItem Value="8">0800</asp:ListItem>
                    <asp:ListItem Value="9">0900</asp:ListItem>
                    <asp:ListItem Value="10">1000</asp:ListItem>
                    <asp:ListItem Value="11">1100</asp:ListItem>
                    <asp:ListItem Value="12">1200</asp:ListItem>
                    <asp:ListItem Value="13">1300</asp:ListItem>
                    <asp:ListItem Value="14">1400</asp:ListItem>
                    <asp:ListItem Value="15">1500</asp:ListItem>
                    <asp:ListItem Value="16">1600</asp:ListItem>
                    <asp:ListItem Value="17">1700</asp:ListItem>
                    <asp:ListItem Value="18">1800</asp:ListItem>
                    <asp:ListItem Value="19">1900</asp:ListItem>
                    <asp:ListItem Value="20">2000</asp:ListItem>
                    <asp:ListItem Value="21">2100</asp:ListItem>
                    <asp:ListItem Value="22">2200</asp:ListItem>
                    <asp:ListItem Value="23">2300</asp:ListItem>
                </asp:DropDownList>
             
                <asp:CustomValidator ID="CustomValidator1" runat="server"
                    ClientValidationFunction="check_date" ControlToValidate="txt_sdate"
                    ErrorMessage="請輸入正確日期!" SetFocusOnError="True">*</asp:CustomValidator>
            </td>



============================


            <td>
                <asp:Label ID="lb_end" runat="server" Font-Size="Small" Text="至"></asp:Label>
                &nbsp;<asp:TextBox ID="txt_edate" runat="server" AutoPostBack="False" Width="60px"
                    MaxLength="8"></asp:TextBox>                  
            <cc1:CalendarExtender ID="CalendarExtender2" runat="server" Format="yyyyMMdd"
                PopupButtonID="btn_calend" TargetControlID="txt_edate">
            </cc1:CalendarExtender>
                <asp:ImageButton ID="btn_calend" runat="server" ImageUrl="~/images/APPTL.ICO"
                    CausesValidation="False" />
                <asp:DropDownList ID="ddl_to" runat="server" Visible="False">
                    <asp:ListItem Value="1">0100</asp:ListItem>
                    <asp:ListItem Value="2">0200</asp:ListItem>
                    <asp:ListItem Value="3">0300</asp:ListItem>
                    <asp:ListItem Value="4">0400</asp:ListItem>
                    <asp:ListItem Value="5">0500</asp:ListItem>
                    <asp:ListItem Value="6">0600</asp:ListItem>
                    <asp:ListItem Value="7">0700</asp:ListItem>
                    <asp:ListItem Value="8">0800</asp:ListItem>
                    <asp:ListItem Value="9">0900</asp:ListItem>
                    <asp:ListItem Value="10">1000</asp:ListItem>
                    <asp:ListItem Value="11">1100</asp:ListItem>
                    <asp:ListItem Value="12">1200</asp:ListItem>
                    <asp:ListItem Value="13">1300</asp:ListItem>
                    <asp:ListItem Value="14">1400</asp:ListItem>
                    <asp:ListItem Value="15">1500</asp:ListItem>
                    <asp:ListItem Value="16">1600</asp:ListItem>
                    <asp:ListItem Value="17">1700</asp:ListItem>
                    <asp:ListItem Value="18">1800</asp:ListItem>
                    <asp:ListItem Value="19">1900</asp:ListItem>
                    <asp:ListItem Value="20">2000</asp:ListItem>
                    <asp:ListItem Value="21">2100</asp:ListItem>
                    <asp:ListItem Value="22">2200</asp:ListItem>
                    <asp:ListItem Value="23">2300</asp:ListItem>
                    <asp:ListItem Selected="True" Value="24">2400</asp:ListItem>
                </asp:DropDownList>
                <asp:CustomValidator ID="CustomValidator2" runat="server"
                    ClientValidationFunction="check_date" ControlToValidate="txt_edate"
                    ErrorMessage="請輸入正確日期!" Display="Dynamic">*</asp:CustomValidator>
                <asp:CompareValidator ID="CompareValidator1" runat="server"
                    ControlToCompare="txt_edate" ControlToValidate="txt_sdate"
                    ErrorMessage="起始日期不能大於結束日期" Operator="LessThanEqual">*</asp:CompareValidator>
            </td>


再加上 驗證使用者手動輸入格式:


    <script language="javascript" type="text/javascript">
        function check_date(source, arguments) {
            var monthDays = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
            var args = arguments.Value;
            var year = args.substr(0, 4);
            var month = args.substr(4, 2) - 1; //月份從0~11
            var day = args.substr(6, 2);
            var source_date = new Date(year, month, day);
            if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) monthDays[1] = 29; //潤年
            if (year != source_date.getFullYear() || month != source_date.getMonth() || day != source_date.getDate() || day >

monthDays[month])
                arguments.IsValid = false;
            else
                arguments.IsValid = true;
        }
</script>




完畢。


使用Ajax前,請先加入參考AjaxControlToolkit


使用Ajax前,請先加入參考AjaxControlToolkit 囉



加入只要2個步驟

如何加入參考?命名空間 'Microsoft' 中沒有型別或命名空間名稱 'Office' (您是否遺漏了組件參考?)

命名空間 'Microsoft' 中沒有型別或命名空間名稱 'Office' (您是否遺漏了組件參考?)
using 無效,是的,我遺漏了組件參考。




需要做加入參考的步驟,2個步驟就完成了。