Pages

顯示具有 DOTNET 標籤的文章。 顯示所有文章
顯示具有 DOTNET 標籤的文章。 顯示所有文章

2011年9月13日 星期二

VB.NET判斷物件是否有使用

You can use isNothing() function in VB.net to check if the object is NULL or not

Example:

If IsNothing(yourObject) Then
// Do this
else
//do this
end if

2010年9月14日 星期二

VB.NET讀取EXCEL CSV檔案

以下function可以讀取EXCEL的CSV檔案格式
使用方式在每讀一行時執行此function即可得到每個欄位資料


Public Function ParseCSV(ByVal text As String) As String()

Dim pattern As String = ",(?=(?:[^""]*""[^""]*"")*(?![^""]*""))"
Dim r As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex(pattern)
Dim fieldValues As String() = r.Split(text)
Dim i As Integer

For i = 0 To fieldValues.Length - 1
fieldValues(i) = fieldValues(i).Replace("""", "")
fieldValues(i) = fieldValues(i).Replace(",", "")
Next

Return fieldValues

End Function

2009年11月13日 星期五

逐行讀取做判斷

讀取的資料為cvs檔,內有多行資料

想一次讀取一行做判斷
如果不包含指定的字串刪除該行資料
如果包含指定字串則刪除該字串但保留該行其他資料
想請教語法該如何寫才能做到逐行判斷

以下為程式碼
Dim filename As String
Dim sr As StreamReader
Dim sw As StreamWriter
Dim line As String
Dim num As New Integer
Dim newfile As String
Dim newline As String

filename = Console.ReadLine

sr = New StreamReader(filename)
newfile = filename.Replace(".txt", ".cvs")
sw = New StreamWriter(newfile)

Do

   line = sr.ReadLine()
   num = line.IndexOf("(N)")

   If num > -1 Then
      newline = line.Remove(num, 3)
      sw.WriteLine(newline)
   Else

   End If
Loop Until line Is Nothing

sr.Close()
sw.Close()



在 num = line.IndexOf("(N)")這一行出現
"並未將物件參考設定為物件的執行個體"
num這變數已經用new宣告了
line讀進來的值為null時迴圈也應該停止了才對



解答:
While sr.Peek > -1
先檢查是不是讀到尾了再去做readLine

2009年10月27日 星期二

如何讓Repeater與ObjectDataSource資料為空

原本想法是網頁上拉出元件Repeater1設定datasource為ObjectDataSource,且在Load page的時候有設定
if A = "Y" then
   ObjectDataSource撈資料
else
   ObjectDataSource不撈資料
end if

結果發現ObjectDataSource沒有屬性可以設定不撈資料

只好想個爛方法來解決
第一種:給定一個ObjectDataSource.SelectParameters.Item(0).DefaultValue的值是不會Select到資料的

第二種:按照第一種方式且在ObjectDataSource的SelectMethod="getData"的getData的Method去修改碰到某些值時直接回傳空資料


第一種方式不用再修改SelectMethod中的邏輯但是還是會有一次的查詢

第二種方式直接擋掉查詢

其實方法都很爛,但是我想不出有其它方式了

2009年10月23日 星期五

RegularExpressionValidato屬性:ValidationExpression

[ ]:


定義可接受的字元,例:

[a-z]表示可接受a~z等26個英文小寫字母、

[0-5]表示可接受0~5個數字、

[^ b-e]表示除了b~e之外,所有字元圴接受

(^符號為不接受的意思)、[abc]表可接受a,b,c三個小寫字母。)



{ }:

定義須輸入的字元數,例:

{3}表示須輸入3個字元、

{1,3}須輸入1~3個字元、

{n,}表接受n~無限多個字元。

所以

[A-C]{3}表必須輸入3個大寫字母、

[a-zA-z0-9]{1,9}表可輸入1~9個大小寫字母或數字。



.:

表任意的字元,例:

.{8}表可接受8個任意字元。



|:

表「或」的意思,例:

[a-c]{1}
[0-9]{2}表必須輸入a~c之間的一個小寫字母或2個數字。



( ):

此符號可有可無,目的是為了方便閱讀,例:

([A-B])
([a-z])加了括號是不是比 [A-B]
[a-z]更清楚看出
符號。

\:

若可接受的字元中包含上述符號,

則必須在特殊符號前加上\符號,例:可接受的字元包括[],則寫成 \[\]

2009年10月20日 星期二

將預設的 Membership、Roles 等功能所使用的資料庫以 SQL Server 取代

我們知道使用 VS2005 設計 ASP.NET 2.0 的網站時,你可以使用內建而且現成的 Membership、Roles、Profile 等等功能,而且你可以利用 ASP.NET 組態工具來建立 app_data 資料夾下的 aspnetdb 資料庫,裡面就是上述功能所使用的資料庫檔案。




不過在上述情況中,你必須在本機上安裝有 SQL Express 來作為資料庫引擎。然而,畢竟 SQL Express 只能使用於小網站,其功能無論如何都不能與 SQL Server 相比擬。那麼你要如何將資料庫轉移到 SQL Server 而非 SQL Express 呢?



如果你只是希望使用 SQL Server 取代 SQL Express 的話,那就非常容易了。但如果你要使用其它的資料庫,例如 Oracle 或 Access,那麼你必須自訂 Provider,其過程就不那麼容易,而且也不在本文所涵蓋的範圍之內。如果你有興趣,請前往 http://msdn2.microsoft.com/zh-tw/asp.net/aa336558(en-us).aspx。



要使用 SQL Server 取代 SQL Express 以作為 Membership、Roles、Profiles 等內建功能的資料庫,總共只有兩個簡單的步驟,詳述如下。



第一步,請執行 aspnet_regsql.exe (位於 C:\Windows\Microsoft.NET\Framework\v2.0.50727\ 或 C:\Windows\Microsoft.NET\Framework64\v2.0.50727\子目錄下),它會啟動一個精靈,幫你在 SQL Server 中建立所需的資料庫。你要做的事情很單純,就是輸入連線方式,指定資料庫名稱(不需取名為 ASPNETDB,可以是任何名稱),接著,它會幫你把資料庫建立起來。當然,你最好另外設定該資料庫的各種權限,我想這就不用多說了吧。



第二步,你必須在網站中的 Web.config 檔案中加上必要的連線字串如下。請注意,LocalSqlServer 這個字是固定的,不能改它。





...









現在,你已經可以使用這個位於 SQL Server 上的資料庫以及 ASP.NET 2.0 內建的各項功能,而且可以使用 ASP.NET 組態工具以接續其它的設定了。



請記得 這一行絕對不能省略,否則將會發生許多奇怪的錯誤。

Process 呼叫外部執行檔

早期在vb6常會利用"DosShell",類似呼叫Dos Command的方式來開啟外部程式




在VB.NET提供了更完整的呼叫外部程式的方式-Process





以下舉例呼叫ipconfig來release IP

Dim process As New System.Diagnostics.Process()



'呼叫的外部程式名稱

process.StartInfo.FileName = "ipconfig"



'外部程式所需之參數

process.StartInfo.Arguments = "/release"

process.StartInfo.UseShellExecute = False

process.StartInfo.CreateNoWindow = True

process.StartInfo.RedirectStandardError = False

process.StartInfo.RedirectStandardInput = False

process.StartInfo.RedirectStandardOutput = True



process.Start()

process.WaitForExit()



If Not process.HasExited Then

process.Kill()

End If



process.Close()







'簡單的寫法

process.start("ipconfig","/release")