搜尋此網誌

2013年6月4日 星期二

推薦文章Blogger(小朱® 的技術隨手寫-邁向架構師的暖身運動)

寫得很好,不管是不是邁向架構師,裡面的一些觀念在開發專案上都是有幫助的
下面是整理過後的連結,有興趣的可以看看

小朱® 的技術隨手寫


http://www.dotblogs.com.tw/regionbbs/archive/2009/05/15/interfaceorienteddesign.aspx
http://www.dotblogs.com.tw/regionbbs/archive/2009/05/18/abstract-ability-for-architect.aspx
http://www.dotblogs.com.tw/regionbbs/archive/2009/07/06/architecture_decision_making.aspx
http://www.dotblogs.com.tw/regionbbs/archive/2009/07/16/ruleandvalidator.aspx
http://www.dotblogs.com.tw/regionbbs/archive/2009/09/12/tieredapplicationconcepts.aspx
http://www.dotblogs.com.tw/regionbbs/archive/2009/12/24/logging.aspx
http://www.dotblogs.com.tw/regionbbs/archive/2010/06/18/15979.aspx
http://www.dotblogs.com.tw/regionbbs/archive/2010/08/21/dont.forget.proof.on.concepts.aspx
http://www.dotblogs.com.tw/regionbbs/archive/2010/09/13/17694.aspx

http://www.dotblogs.com.tw/regionbbs/archive/2011/06/27/dynamic.or.static.design.aspx

2012年11月30日 星期五

AutoPostBack後ListBox的scroll不動


網路上的找到的方法:
aspx端 javascript 
function autoscroll() {
   var list = document.getElementById("ListBox名稱");
   //找到ListBox物件(使用檢視原碼碼去找ID比較準確)  
               
   if (!list || !list.multiple || list.length == 0) return;
      var lastItem = list[list.length - 1];
          
      if (lastItem.selected) {
          lastItem.selected = true;               
          return;
      }
      else {
          lastItem.selected = true;
          lastItem.selected = false;
          }
          for (var i = 0; i < list.length; i++) {
          if (list[i].selected) // or list.selected ?  
             {
              list[i].selected = true;                    
              return;
             }
          }
     }

vb端
 Page.RegisterStartupScript("MyScript""<Script language=javascript defer='true'> autoscroll() </script>")

目前測試結果不包UpdatePanel運作正常包了則無作用


2012年7月3日 星期二

變更ListItem的底色

此範例是用ListBox當例子
由於案子需求,需要變更ListBox中某幾項的底色

 For Each row As ListItem In  ListBox .Items
       If  條件  Then
            row.Attributes("style") = "background-color:#DCDCDC"
       End If
 Next

但該方法有個問題就是每次AutoPostBack後顏色會消失
所以建議寫在共用FUNCTION中每次刷新時呼叫

2012年7月2日 星期一

關於使用ModalPopupExtender來製作popup視窗

在aspx中宣告
1.<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="asp" %>
2.

<asp:ModalPopupExtender ID="ModalPopupExtender1" runat="server"
   TargetControlID="觸發的按鈕名稱"
   BackgroundCssClass="popupBackground"
   PopupControlID="Panel名稱"
   DropShadow="true" >
</asp:ModalPopupExtender>
假如你是要在開啟的popup視窗中先做事件在開
那麼這邊是建議
先製作一個LinkButton
<asp:LinkButton ID="LModal" runat="server"></asp:LinkButton>
LinkButton在畫面上是看不到是給asp:ModalPopupExtender 使用而以
3.
假如你的程式有包UpdatePanel的話
那麼請記得Panel中也要包
否則欄位會有異常狀況
筆者之前碰過不是打不開不然就是值沒有塞進去


在VB
Button事件中
Protected Sub Button名稱_Click
(ByVal sender As Object, ByVal e As EventArgs) Handles  Button 名稱.Click
ModalPopupExtender1.Show()  <--開啟popup
end sub

關閉popup則是執行
ModalPopupExtender1.Hide()






GridView 中 RadioButton單選(後端)

基本上GridView中的AutoPostBack 事件皆可使用
前端ASPX
 1.包asp:UpdatePanel 
    <asp:UpdatePanel ID="UpdatePanel12" runat="server" >
    <ContentTemplate>
    </ContentTemplate> 
    </asp:UpdatePanel> 
2.在GridView的RadioButton裡宣告OnCheckedChanged,AutoPostBack="true"
   EX:OnCheckedChanged="opt_CheckedChanged" AutoPostBack ="true"
後端
Protected Sub opt_CheckedChanged (ByVal sender As Object, ByVal e As EventArgs)
 Try
     Dim tempRadioButton As New RadioButton
     tempRadioButton = CType(sender, RadioButton)
     Dim gvRow As GridViewRow
     gvRow = CType(tempRadioButton.NamingContainer, GridViewRow)
     If Not (gvRow Is Nothing) Then
        Dim index As Integer = gvRow.RowIndex
        For i As Integer = 0 To  GridView名稱.Rows.Count - 1
        If  i <> index Then
            If CType( GridView名稱.Rows(i).Cells(0).FindControl("RadioButton名稱"), RadioButton).Checked Then
                CType( GridView名稱 .Rows(i).Cells(0).FindControl(" RadioButton名稱 "), RadioButton).Checked = False
            End If
        End If
        Next
     End If
 Catch ex As Exception
 
 End Try
End Sub

UserControl事件觸發然後執行父網頁事件


UserControl 中宣告  
Public Delegate Sub Parent_EventHandler(ByVal sender As Object, ByVal e As System.EventArgs)
Public Event UsercontrolSelectEvent As Parent_EventHandler
然後在要觸發的事件中宣告
EX:

Protected Sub DropDownList名稱 _SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles DropDownList名稱.SelectedIndexChanged
        RaiseEvent UsercontrolSelectEvent(sender, e)
End Sub

在使用UserControl 的VB中
Page_Load裡宣告
AddHandler Me.UserControl名稱.UsercontrolSelectEvent, AddressOf  UsercontrolSelectEvent_proc
然後事件即可使用
Private Sub UsercontrolSelectEvent_proc(ByVal sender As Object, ByVal e As System.EventArgs)


 End Sub




參考:
http://blog.xuite.net/sugopili/computerblog/43063784-UserControl%E5%82%B3%E5%80%BC%E3%80%81%E5%9F%B7%E8%A1%8C%E7%88%B6%E7%B6%B2%E9%A0%81%E4%BA%8B%E4%BB%B6







2012年1月3日 星期二

GOOGLE+1語法


<script> 
          (function(d, t)
             {
                 var g = d.createElement(t), s = d.getElementsByTagName(t)[0]; g.async = true; g.src =   
                 'https://apis.google.com/js/plusone.js'; s.parentNode.insertBefore(g, s); 
              }
          )
          (document, 'script');
</script>


 -- 按鈕---
 <g:plusone></g:plusone>    

2012年1月2日 星期一

讀取文字檔


            以下範例是將文字檔讀出然後變更斷行符號
            1.使用LineInput 每一行每一行讀取
            FileNum = FreeFile()
            FileOpen(FileNum, strRFile, OpenMode.Input)


            Do Until EOF(FileNum)
                strTemp &= LineInput(FileNum) & vbNewLine
            Loop
            FileClose(FileNum)
            FileNum = FreeFile()
            FileOpen(FileNum, NewValue, OpenMode.Output)
            PrintLine(FileNum, strTemp)
            FileClose(FileNum)


            2.使用ReadToEnd 
             Dim value As String = ""
             Dim MySF As StreamReader = New StreamReader(strRFile, System.Text.Encoding.Default)
             value = MySF.ReadToEnd().Replace(vbLf, vbCrLf)
           

2011年12月29日 星期四

log4net的應用


   'log4net.Layout.PatternLayout 中的轉換模式(ConversionPattern)
    '
    '%m(message): 輸出的日誌消息,如ILog.Debug(…) 輸出的一條消息
    '%n(new line): 換行
    '%d(datetime): 輸出當前語句運行的時刻
    '%r(run time): 輸出程序從運行到執行到當前語句時消耗的毫秒數
    '%t(thread id): 當前語句所在的線程ID
    '%p(priority): 日誌的當前優先級別,即DEBUG 、INFO 、WARN… 等
    '%c(class): 當前日誌對象的名稱,例如:
    '       模式字符串為:%-10c -%m%n
    '       代碼為:
    '       ILog log=LogManager.GetLogger(“Exam.Log”);
    '       log.Debug(“Hello”);
    '       則輸出為下面的形式:
    '        Exam.Log        - Hello
    '%L :輸出語句所在的行號
    '%F :輸出語句所在的文件名
    '%- 數字:表示該項的最小長度,如果不夠,則用空格填充
    '例如,轉換模式為%r [%t]%-5p %c - %m%n 的PatternLayout 將生成類似於以下內容的輸出:
    '176 [main] INFO   org.foo.Bar - Located nearest gas station.


    1.下載並將log4net.dll加入參考
    
    2.在Global中Application_Start裡加入
       log4net.Config.XmlConfigurator.ConfigureAndWatch(New 
      System.IO.FileInfo(AppDomain.CurrentDomain.BaseDirectory & "log4net.config"))


   3.在根目錄增加log4net.config檔
  
   4.log4net.config中建立   
      <?xml version="1.0" encoding="utf-8" ?>
     <log4net>
     <!--設定監看等級必要一般而言會設DEBUG-->
     <!--訊息有五種等級由低而高為Debug、Info、Warn、Error、Fatal 設太低高的會無法使用-->
         <root>            
            <level value="DEBUG" />
            <appender-ref ref="RollingLogFileAppender" />
        </root>
     <!--自定義--> 
      <logger name="AAA.DBAccess" additivity="false">
            <level value="DEBUG" />
           <appender-ref ref="DBAccess_Info" />
      </logger>
    <!--DBAccess_Info自定義設定-->
     <appender name="DBAccess_Info" type="log4net.Appender.RollingFileAppender">
     <!--輸出檔案路徑-->
     <file value="Log/" />
     <appendToFile value="true" />
    <rollingStyle value="Date" />
    <!--關閉固定檔名-->
    <staticLogFileName value="false" />
    <!--檔名規則年月日+html-->
    <datePattern value="&quot;AAA_&quot;yyyyMMdd&quot;.html&quot;"  />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level - %logger - %L - [%property{NDC}] - %m %n" />
    </layout>
  </appender>




  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
     <!--輸出檔案路徑-->
    <file value="Log/" />    
    <appendToFile value="true" />
    <!--大小約束-->
    <rollingStyle value="Date" />
    
    <!--關閉固定檔名-->
    <staticLogFileName value="false" />
    <!--檔名規則年月日+html-->
    <datePattern value="yyyyMMdd&quot;.html&quot;"  />
    
    <layout type="log4net.Layout.PatternLayout">     
      <conversionPattern value="%date - %F - [%thread] - %-5level - %logger - %L -  %c - %m %n" />
    </layout>
  </appender>
    </log4net>

 5.程式中
    '預設的宣告
    Private Shared ReadOnly _log As log4net.ILog =     
    log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)
   '自定義宣告 
   Private Shared ReadOnly _log2 As log4net.ILog = log4net.LogManager.GetLogger("AAA.DBAccess")
   'log產生
   _log2.Debug("TEST<br>")


   測試過的格式TXT,HTML,XML
   由於測試時的換行只有TXT能正常執行
   所以建議假如需要使用檔案格式
   TXT,HTML(需自行加<BR>但是可以使用網路直接觀看XML格式需另行編寫比較麻煩)






相關好文介紹
http://johoya.blogspot.com/2007/03/log4net.html
  

2011年12月27日 星期二

友善列印~


<script type="text/javascript">
  function previewScreen(block)
  {
        var value = block.innerHTML;
        var printPage = window.open("","printPage","");
        printPage.document.open();
        printPage.document.write("<OBJECT classid='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2' 
        height=0 id=wc name=wc width=0>友善列印</OBJECT>");
        printPage.document.write("<HTML><head></head><BODY onload='javascript:window.print();window.close();'>");
        printPage.document.write("<PRE>");
        printPage.document.write(value);
        printPage.document.write("</PRE>");
        printPage.document.close("</BODY></HTML>");
  }
</script> 






<a onkeypress="previewScreen(PrintDiv1)" onclick="previewScreen(PrintDiv1)" style="text-decoration:none" target="_blank"> 
   <img src="images/icon_13_1.gif"  width="90" height="49" alt="友善列印">
</a>




//需要列印的內容包在div中
<div id="PrintDiv1">
     <table>
           <tr><td class="TFont12" align ="left" >
           <asp:Literal id="Lite1" runat ="server" ></asp:Literal>
          </td>
           </tr>
     </table>
</div>

關於google search

由於最近案子開發有用到所以在此紀錄一下
程式方面

function google_serch()
{
   
    var wq=document.getElementsByName("q")[0].value;
    var link="http://www.google.com/search?sitesearch=網域.info&q="+wq;
    window.open(link); 
}


//輸入欄位

<input type="text" name="q"  size="26" 
style="border: 1px solid #FFFFFF; margin: 0px; padding: 0;  background-color:#FFFFFF"
 value="請輸入關鍵字"/>

//按鈕
<a onkeypress="google_serch()" onclick="google_serch()" 
style="text-decoration:none" target="_blank">
按鈕或文字或圖隨你~
</a>


程式方面這樣就OK了~但別以為這樣就結束了~~~
假如你是網站
那麼你需要先申請網域
然後到以下網址去註冊
https://www.google.com/webmasters/tools/submit-url?continue=http://www.google.com/addurl/?hl%3Dzh-TW%26continue%3D/addurl
這樣google才搜尋的到google serch是認網域的這時間應該不用一天
不過申請完後應該也只抓的到首頁而已
接下來請去申請webmaster tools
並加入你的網站
然後
診斷-->Googlebot 模擬器
我是選擇首頁(這裡建議最好選擇網站導覽類的作者是因為要建立的首頁都連的到)
然後提交GOOGLE建立索引
選擇第二個網址和所有連結的網頁
在來就是等了
雖然有人是說要等爬蟲~但是個人感覺有設應該會快一些~









2011年12月21日 星期三

C# 寄信語法(System.Net.Mail)


using System.Net.Mail;
public void  Send2(string szTo, string szSubject, string szBody, string szFrom, FileUpload Attachmentsurl)
 {
     //szTo 收件者 szSubject主旨  szBody內容 szFrom 寄件者 Attachmentsurl 附件 
      object[] mailtoadd = szTo.Split(',');
      for (int i = 0; i <= mailtoadd.Length - 1; i++)
      {
           MailAddress from = new MailAddress("寄件者", "收到後要顯示的名稱", System.Text.Encoding.UTF8);
           MailAddress to = new MailAddress(mailtoadd[i].ToString());
           MailMessage em = new MailMessage(from, to);
           em.SubjectEncoding = System.Text.Encoding.UTF8;
           em.BodyEncoding = Encoding.UTF8;
           //信件主題 
          em.Subject = szSubject;
          //內容 
          em.Body = szBody;
          if (Attachmentsurl.FileName != "")
          {
                    string path = @"" + 路徑 + Attachmentsurl.FileName.ToString();
                    Attachment data = new Attachment(path);
                    em.Attachments.Add(data);
          }
          em.IsBodyHtml = true;
          System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
          //登入帳號認證  
          client.Credentials = new System.Net.NetworkCredential("帳號", "密碼");
          // port 跟 host 是用gmail做例子其他非一樣
          client.Port = 587;
          client.Host = "smtp.gmail.com";
          //啟動SSL 
         client.EnableSsl = true;
          try
          {
               client.Send(em);


            }
            catch (Exception e)
           {
                  
            }
       }
  }

2011年12月13日 星期二

.NET Framework ASP.NET Padding Oracle

這個月由於要忙於系統上線的關係~
所以程式要進機房~當然基於開放的前提下要做資安掃描
結果就發生了 .NET Framework ASP.NET Padding Oracle 重大缺失
要解決這個重大缺失的方法可以參考
http://cert.shnet.edu.cn/anquangonggao/.net-framework-asp.net-padding
算是比較完整的當然對方應該也會給你一個錯誤報告上方應該也會有寫
主要也就是
.NET Framework 3.5 Service Pack 1之後版本

Web.config下
<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/ErrorPage.aspx" />
然後新增一個一個存ASPX的網頁取名ErrorPage.aspx(名字自己訂就好跟上方呼應即可)
然後網頁內容
C#
<%@ Page Language="C#" AutoEventWireup="true" %>
<%@ Import Namespace="System.Security.Cryptography" %>
<%@ Import Namespace="System.Threading" %>

<script runat="server">
        void Page_Load() {
        byte[] delay = new byte[1];
        RandomNumberGenerator prng = new RNGCryptoServiceProvider();

        prng.GetBytes(delay);
        Thread.Sleep((int)delay[0]);
       
        IDisposable disposable = prng as IDisposable;
        if (disposable != null) { disposable.Dispose(); }
    }
</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <div>
        An error occurred while processing your request.
    </div>
</body>
</html>

VB
<%@ Page Language="VB" AutoEventWireup="true" %>
<%@ Import Namespace="System.Security.Cryptography" %>
<%@ Import Namespace="System.Threading" %>

<script runat="server">
    Sub Page_Load()
        Dim delay As Byte() = New Byte(0) {}
        Dim prng As RandomNumberGenerator = New RNGCryptoServiceProvider()
       
        prng.GetBytes(delay)
        Thread.Sleep(CType(delay(0), Integer))
       
        Dim disposable As IDisposable = TryCast(prng, IDisposable)
        If Not disposable Is Nothing Then
            disposable.Dispose()
        End If
    End Sub
</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <div>
        An error occurred while processing your request.
    </div>
</body>
</html>

iis重啟
當然假如你以上都做完還是沒過的話
那就是window update的問題了
基本上我會建議先做完window update
會比較沒問題以上是我的慘痛經驗




2011年11月30日 星期三

在string中使用雙引號

在C#中 \"代表雙引號
    ex: AAA\"BB\"AAA  -->AAA"BB"AAA
在C#中\\ 表示反斜線
參考來源:http://www.allenkuo.com/GenericArticle/view.aspx?id=28

2011年11月28日 星期一

回上方按鈕

直接回上方語法
<a  href="#top" alt="TOP">
<img border="0" src="images/btn_top-2.gif" alt="回上方" width="94" height="36">
</a>

慢慢回上方語法(雖然後來是改用上方但還是記錄一下雖然原始網頁我忘了@@)
按鈕
<a href='javascript:scrollToTop.action();'>
script
<script type="text/javascript">
scrollToTop=new Object();
scrollToTop.scrollTop=null;
scrollToTop.scrollLeft=null;
scrollToTop.action=function(){
   if(scrollToTop.scrollTop==null)
{
var pageY = window.pageYOffset || (document.documentElement.scrollTop || document.body.scrollTop);
var pageX = window.pageXOffset || (document.documentElement.scrollLeft || document.body.scrollLeft);  
scrollToTop.scrollTop=pageY;
scrollToTop.scrollLeft=pageX;
}
scrollToTop.scrollTop=scrollToTop.scrollTop-20
scrollToTop.scrollLeft=scrollToTop.scrollLeft-20
if(scrollToTop.scrollTop<0){scrollToTop.scrollTop=0};
if(scrollToTop.scrollLeft<0){scrollToTop.scrollLeft=0};
window.scroll(scrollToTop.scrollLeft,scrollToTop.scrollTop); 
if(scrollToTop.scrollTop>0)
setTimeout("scrollToTop.action();",10)
return;
}
scrollToTop.scrollTop=null;
scrollToTop.scrollLeft=null;
  }
</script> 

2011年10月24日 星期一

facebook 推薦語法


由於最近網站越來越多使用facebook 推薦
所以在此紀錄
本篇文章參考下列網站
http://epromotor.pixnet.net/blog/post/30099287-%E6%89%93%E9%80%A0%E6%96%B9%E4%BE%BF%E5%88%86%E4%BA%AB%E7%9A%84%E7%B6%B2%E9%A0%81%EF%BC%88%E7%BA%8C%EF%BC%89


//備註:測試時請放在server測本機測試是無效的

// meta name=title 推薦時要秀的標題
// link rel='image_src' 推薦時要秀的圖案
// meta name="description" 推薦時要秀的文字



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"   "http://www.w3.org/TR/html4/loose.dtd">
<HTML xmlns="http://www.w3.org/1999/xhtml"
      xmlns:og="http://ogp.me/ns#"
      xmlns:fb="http://www.facebook.com/2008/fbml">

<head>
    <title>The Rock (1996)</title>
    <meta http-equiv="Content-Type" content="text/html; charset=big5"/>
    <meta name=title content="FACEBOOK-TEST">
    <meta name="description" content="this is facebook test " /> 
    <link rel='image_src' href="圖片路徑" />
    
</head>
<body> 
<form id="form1" runat="server">
 <tr>
   <td align="right">
      <table width="90" border="0" cellspacing="0" cellpadding="0">
      <tr>
           <td> 
               <img width='100' height='100' src='圖片路徑' />  
         </td>
         <td>
               <a href="javascript:void(window.open('http://www.facebook.com/share.php?
                     u='.concat(encodeURIComponent(location.href))))">
              <img src="按鈕圖示" width="27" height="37" title='[推到 Facebook]' />
              </a>
         </td>            
      </tr>
     </table>
    </td>
  </tr>
 </form> 
</body>
</html>

2011年10月20日 星期四

工具應用

virtualbox
********************************
格式轉換
轉載位址:http://hi.baidu.com/mozillazg/blog/item/91692c13596a14c2c2fd787a.html
dos模式下
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" clonehd  "檔案路徑\檔案名稱.vhd" "檔案路徑\檔案名稱.vdi"

硬碟擴充
轉載位址:http://rondoyoyo.pixnet.net/blog/post/31569230-%5Bmac%5D-%E5%A6%82%E4%BD%95%E5%B0%87%E8%99%9B%E6%93%AC%E6%A9%9F%E7%9A%84%E7%A1%AC%E7%A2%9F%E8%AE%8A%E5%A4%A7%EF%BC%88for-virtualbox%EF%BC%89


*********************************

2011年10月18日 星期二

在windows form 中匯出行事曆(.ics)檔

由於之前專案有要求在windows form中匯出行事曆以供outlook匯入使用
所以在此紀錄


格式說明:

1.      整個行事曆以BEGIN:VCALENDAR  ….. END:VCALENDAR包起來
2.      檔頭描述:PRODID:-//Taipei Calendar  … VERSION:2.0
3.      單一行程以BEGIN:VEVENT ……END:VEVENT包起來
4.      DTSTAMP:產生時間
5.      SUMMARY;LANGUAGE=zh-tw:行程名稱
6.      PRIORITY:行程重要性,高:1, 一般:5, :9
7.      DTSTART:時間開始
8.      DTEND:時間結束
9.      DTSTART;VALUE=DATE:整天
10.  DESCRIPTION行程說明



private void ToIcs(DataTable dgv)
{
            
    string TSQL = "BEGIN:VCALENDAR";
    TSQL += "\r\n";
    TSQL += "PRODID:-//Taipei Calendar";
    TSQL += "\r\n";
    TSQL += "VERSION:2.0";
    TSQL += "\r\n";
    for (int row = 0; row < dgv.Rows.Count; row++)
    {


        TSQL += "BEGIN:VEVENT";
        TSQL += "\r\n";
        TSQL += "DTSTAMP:" +
        DateTime.Now.ToString("yyyyMMdd") + "T" +   DateTime.Now.ToString("HHmmss");
        TSQL += "\r\n";
        //PRIORITY:行程重要性,高:1, 一般:5, 低:9
        TSQL += "PRIORITY:" + dgv.Rows[row]["IMPORTANCE"].ToString();
        TSQL += "\r\n";
        //T後面紀錄的是時分秒
        TSQL += "DTSTART:" + dgv.Rows[row]["START_DATE"].ToString() + "T000000";
        TSQL += "\r\n";
        TSQL += "DTEND:" + dgv.Rows[row]["END_DATE"].ToString() + "T230000";
        TSQL += "\r\n";
        TSQL += "SUMMARY;LANGUAGE=zh-tw:" + dgv.Rows[row]["TITLE"].ToString() ;
        TSQL += "\r\n";
        if (dgv.Rows[row]["IS_ALL_DAY"].ToString() == "Y")
        {
            TSQL += "DTSTART;VALUE=DATE::整天";
            TSQL += "\r\n ";
        }
        TSQL += "DESCRIPTION:" + dgv.Rows[row]["CONTENT"].ToString();
        TSQL += "\r\n";
        TSQL += "END:VEVENT";
        TSQL += "\r\n";
   }
   TSQL += "END:VCALENDAR";  
   SaveFileDialog saveFileDialog1 = new SaveFileDialog();
   saveFileDialog1.Filter = ".ics |";
   saveFileDialog1.Title = "匯出行事曆";
   saveFileDialog1.ShowDialog();
   if (saveFileDialog1.FileName != "") 
   {  
        System.IO.File.WriteAllText(
        saveFileDialog1.FileName.Replace(".ics","") + ".ics", TSQL.ToString());
   }
}

2011年10月12日 星期三

新增後取PK的方法

SQL
新增語法後;select @@identity as new然後用ExecuteScalar接他回傳的KEY值
SQLITE
新增語法後;select last_insert_rowid()然後用ExecuteScalar接他回傳的KEY值

2011年10月3日 星期一

.NET在Oracle存取單引號的問題

在程式中轉換Replace("'", "''") 2個點
顯示出來就會變為一個
假如要雙引號那麼就是Replace("'", "''''") 4個點