2017-09-06 87 views
0

這個問題是關係到我前面的問題vb.net - 比較兩個文本文件和檢索特定值

我目前工作登記表上,其中一個學生的所有詳細信息都保存在一個文本文件。

我使用文本文件填充組合框。

這些值的格式,例如:(代碼〜校名)SCH001〜聖 托馬斯學院

這就是我在文本文件中保存的細節:

Dim firstname, lastname, email, mobile, level, currentschool, currenttrack, institution1, institution2, institution3, institution4, institution5, institution6, courses1, courses2, courses3, macaddress, eventcode, idseq, filename, logfiledirectory, targetdirectory, log, configdir, printschool As String 
    firstname = txtFName.Text 
    lastname = txtLName.Text 
    email = txtEmail.Text 
    mobile = txtMobile.Text 
    level = cmbLevel.Text 
    currenttrack = cmbCurrentTrack.Text 
    printschool = cmbCurrentSchool.Text 
    currentschool = cmbCurrentSchool.SelectedValue 
    institution1 = cmbInstitution1.SelectedValue 
    institution2 = cmbInstitution2.SelectedValue 
    institution3 = cmbInstitution3.SelectedValue 
    institution4 = cmbInstitution4.SelectedValue 
    institution5 = cmbInstitution5.SelectedValue 
    institution6 = cmbInstitution6.SelectedValue 
    courses1 = cmbCourse1.SelectedValue 
    courses2 = cmbCourse2.SelectedValue 
    courses3 = cmbCourse3.SelectedValue 

    If mobile = "" Then 
     mobile = "09000000000" 
    End If 

    If firstname = "" Or lastname = "" Or email = "" Or level = "" Or currentschool = "" Or currenttrack = "" Then 
     MessageBox.Show("Please enter the required fields!", "Registration", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) 

我有顯示文本文件中所有保存的詳細信息的datagridview。 這裏是我的datagridview的截圖: enter image description here

什麼,我想做的事:我想用從源文本文件目前學校的代碼(參見圖)(我用了一個檢索學校名稱填充我的組合框)。而不是學校代碼,我希望學校名稱顯示在datagridview中。 有沒有可能的方法來做到這一點?

我希望你們明白我在說什麼。 我在這裏新的。

+0

它很容易。在文本文件內容中搜索_school code_。獲得該行後,將行分割爲'〜'。現在我真的想知道,你自己實際嘗試了多少。因爲我提供了前兩個問題的答案。你現在可以學會這一切! –

回答

2

再次就像我回答最後一次,使用此功能:

Function FetchSchoolName(schoolcode As String, filepath As String) As String 
    Dim filecontents = File.ReadAllLines(filepath) 
    For Each line As String In filecontents 
     If (line.Contains(schoolcode.Trim())) Then 
      Return line.Split("~"c)(1) 
     End If 
    Next 
    Return String.Empty 
End Function 

示例文本輸入:

sch001~abcinstitute 
sch002~myacademy 
sch003~someschoolname 

然後通過schoolcode(你從DataGridView中得到)和文件路徑中最上面的功能

MessageBox.Show(FetchSchoolName("sch002", "C:\Users\nobody\Desktop\somefile.txt")) 

輸出:

myacademy

現在關於你DataGridView,無論你是填充(源綁定)如果要產生輸出沒有人的答案,但不循環同樣也用上面的方法

1

,你可以使用LINQ,這也使用更少的代碼行,但達到相同的輸出

Dim query = filecontents.Where(Function(x) x.Contains(schoolcode)).Select(Function(x) x.Split("~")(1)).FirstOrDefault 
Return query.ToString() 
+1

Upvoting你的答案,因爲我喜歡它比我更好:) –

+0

@沒有人謝謝,你做了大部分工作壽,我只是提供了一個替代循環:) –

+1

我的Linq的知識是有點碰上。所以去了foreach版:]但是我學到了一些東西。萬分感謝 ;] –