Hey guys, I'm seriously breaking my head over this one. This project should have been finished 10 hours ago but I've been stuck on this for ages.
First I set the DataSources / Dataviews of all the things I need;
Dim dsPubs As New DataSet()
dsPubs.ReadXml(pathdone)
DataGridView2.DataSource = dsPubs.Tables(0)
Dim dsWord As New DataSet()
dsWord.ReadXml(pathdone2)
Dim dsSynonyms As New DataSet()
dsSynonyms.ReadXml(pathdone3)
Dim fileStr2 As String
Dim fileStr3 As String
Dim fileStr4 As String
Dim dv2 As DataView
dv2 = New DataView
dv2.Table = dsWord.Tables(0)
Me.DataGridView4.DataSource = dv2
Dim dv3 As DataView
dv3 = New DataView
dv3.Table = dsSynonyms.Tables(0)
Me.DataGridView6.DataSource = dv3
Is great, so now For each row in DataGrid2, I break down all the words in the text to arrays.
For Each row As DataGridViewRow In DataGridView2.Rows
If Not row.IsNewRow Then
Dim OriginalContent As String = row.Cells(1).Value
astrSplitItems = Split(OriginalContent, " ")
Then, for each word, I prevent errors by doubling all single quotes. I then filter DataGrid4 to only include rows where the word matches the word in the array(the first for-each).
For intX = 0 To UBound(astrSplitItems)
Dim OriginalWord As String = astrSplitItems(intX)
fileStr2 = OriginalWord
fileStr3 = fileStr2.Replace(Chr(39), "''")
fileStr4 = fileStr3.Replace(Chr(34), Chr(34))
dv2.RowFilter = "word = '" & OriginalWord & "'"
Then for each of those rows in DataGrid4, we filter DataGrid6 to only include rows where "wordID" matches the ID in DataGrid4. And then for each of those rows we input the word given to TextBox2.
For Each row2 As DataGridViewRow In DataGridView4.Rows
If row2.Cells(1).Value = OriginalWord Then
dv3.RowFilter = "wordID = '" & row2.Cells(0).Value & "'"
For Each row3 As DataGridViewRow In DataGridView6.Rows
If Not row3.Cells(2).Value = "" Then
wordsID = row2.Cells(0).Value
synonymID = row3.Cells(0).Value
theSynonym = row3.Cells(2).Value
Dim n As Integer = DataGridView8.Rows.Add()
If Not row3.IsNewRow Then
If Not synonymID = "" Then
If Not theSynonym = "" Then
If Not wordsID = "" Then
DataGridView8.Rows.Item(n).Cells(0).Value = synonymID
DataGridView8.Rows.Item(n).Cells(1).Value = wordsID
DataGridView8.Rows.Item(n).Cells(2).Value = theSynonym
TextBox2.Text = TextBox2.Text + theSynonym + wordsID
TextBox2.Refresh()
DataGridView8.Refresh()
End If
End If
End If
End If
End If
Next
Still with me? here's what happened:
We broke down the original text into individual words. For each word, we searched the main dictionary for a match. If a word was found to indeed be in the dictionary, we retrieved all that words' synonyms from the synonym-database, and we then added that synonym to the text that already was in TextBox2.
This all works great, but I can't figure out the next two steps;
1. Instead of adding *all* synonyms to the TextBox2, add a random found one. So not the first or the last, but truely random.
2. When a synonym for the word is *not* found, add the original word to TextBox2 instead.
By the way, the code is so messy because I've been testing alot of stuff, I will clean it all up when it's done.
Sorry for the complicated question, but I've been fighting with this oen for way too long :<