Solved

C# DataView and the 'if' statement???

Posted on 2004-08-28
3
608 Views
Last Modified: 2011-09-20
For some reason the DataView always loads "No Match Found" in colums 2 and 5 of my ListView. It's obviously not findin any matches, however the code complies and the program runs without error.  I'm sure the DataSet (ds) is working correctly and loaded with data. I feel the problem maybe in the 'if' statement. I'm undecided on using 'Count' or 'Equals' like so:

if(dv.Count > 0)   // Match found...................
{
strDest1 = dv[0]["value"].ToString();


Q. What is wrong with my dataview???



*** Full Code Below***

private void Load()
{
DataSet ds = new DataSet();

string SQL1 = "SELECT col_1, col_2 FROM table2";
SqlConnection cn1 = new SqlConnection("integrated security=SSPI;data source=office; persist security info=False;initial catalog=master");
SqlDataAdapter da1 = new SqlDataAdapter(SQL1,cn1);
cn1.Open();
da1.Fill(ds);
cn1.Close();

dt = ds.Tables[0];
                  
string SQL2 = "SELECT col_1, col_2, COUNT(col_2)AS 'count' FROM table1 GROUP BY col_1, col_2 HAVING COUNT (*) >5 ORDER BY count DESC";
SqlConnection cn2 = new SqlConnection("integrated security=SSPI;data source=office; persist security info=False;initial catalog=master");
SqlDataAdapter da2 = new SqlDataAdapter(SQL2,cn2);
cn2.Open();
SqlDataReader SqlReader2 = da2.SelectCommand.ExecuteReader();

listView1.Items.Clear();
listView1.BeginUpdate();
                        
try
{
while(SqlReader2.Read())
{
string str_col_1 = SqlReader2.GetString(0);
string str_col_2 = SqlReader2.GetString(1);
int cnt_count = SqlReader2.GetInt32(2);                  

DataView dv = new DataView(ds.Tables["table2"]);
dv = dt.DefaultView;
dv.RowFilter = "col_1 LIKE ' * '";
dv.RowStateFilter = DataViewRowState.CurrentRows;
                                                            
if(dv.Count > 0)   // Match found..............
{
strDest1 = dv[0]["value"].ToString();
}
else
{
strDest1 = "No Match Found";
}
                                                                                 
if(dv.Count > 0)  // Match found..........
{
strSrc2 = dv[0]["value"].ToString();      
}
else
{
strSrc2 = "No Match Found";
}
ListViewItem item1 = new ListViewItem(str_col_1.ToString());
item1.SubItems.Add(strDest1.ToString());
item1.SubItems.Add(cnt_count.ToString());
item1.SubItems.Add(str_col_2.ToString());
item1.SubItems.Add(strSrc2.ToString());            
listView1.Items.Add(item1);
}
}
catch(Exception erro)
{
MessageBox.Show(erro.ToString());
}
finally
{
SqlReader2.Close();
cn2.Close();
                                                
listView1.EndUpdate();
}
}
0
Comment
Question by:kvnsdr
3 Comments
 

Accepted Solution

by:
fpasquier earned 125 total points
ID: 11925010
I don't know what is the exact purpose of this code, but their are 2 things that are strange for me:

First thing:
I am not sure to understand the purpose of the two lines:
DataView dv = new DataView(ds.Tables["table2"]);
dv = dt.DefaultView;
Why don't you write smth like:
DataView dv = dt.DefaultView;

Because the first line "dv = new DataView(ds.Tables["table2"]);" has no contribution in your program. It is immediately overwritten by the second line.

And second thing:
The two if-blocks can be grouped in only one!
if(dv.Count > 0)   // Match found..............
{
strDest1 = dv[0]["value"].ToString();
strSrc2 = dv[0]["value"].ToString();    
}
else
{
strDest1 = "No Match Found";
strSrc2 = "No Match Found";
}

0
 
LVL 1

Author Comment

by:kvnsdr
ID: 11925834
Changes well noted. The basic purpose is looking for a match in table1 (col_1) for table2 (col_1 or col_3) and the result is table1 (col_2) which returns a value for one of the listview columns.

NOTE: I also changed the dv.Count to dv.Equals hoping for a match and changed "value" to "col_2" , but it did not work... However, no compiling or run-time errors either..... still getting "No Match Found" in colums 2 and 5 of the listview..............

Q. Is the DataView the right tool for the job???  


DataView dv = new DataView(ds.Tables[0]);
dv.RowFilter = "col_IP LIKE ' ' ";
dv.RowStateFilter = DataViewRowState.CurrentRows;

if(dv.Equals (str_col_1))   // col_1 of table1 or data to match the key in col_1 of table2 (key-value pair concept)
{
strDest1 = dv[0]["col_2"].ToString(); // col_2 of table2 or value needed to display in listview
strSrc2 = dv[0]["col_2"].ToString();  // col_2 of table2 or value needed to display in listview
}
else
{
strDes1 = "No Match Found";
strSrc2 = "No Match Found";








0
 
LVL 37

Assisted Solution

by:gregoryyoung
gregoryyoung earned 125 total points
ID: 11926170
dv.RowFilter = "col_IP LIKE ' ' ";   ... im confused about this ...


DataView dv = new DataView(ds.Tables[0]); //ok you get your dataview
dv.RowFilter = "col_IP LIKE ' * ' "; //you set a rowfilter to like ' * ', why are you doing a like this ? you actually want a space before and after and anything in between ? shouldnt you be setting the rowfilter to the record that you are looking for i.e. the values you are using in the loop ?
dv.RowStateFilter = DataViewRowState.CurrentRows; //makes sense

if(dv.Rows.Count == 1)  {
strDest1 = dv[0]["col_2"].ToString(); // col_2 of table2 or value needed to display in listview
strSrc2 = dv[0]["col_2"].ToString();  // col_2 of table2 or value needed to display in listview
} else if (dv.Rows.Count > 1) {
strDes1 = "Multiple Matches Found";
strSrc2 = "Multiple Matches Found";
}
else
{
strDes1 = "No Match Found";
strSrc2 = "No Match Found";
}

0

Featured Post

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
How to read XML file attributes... 17 42
C# SQL BULK INSERT CLASS 5 36
String manipulation 15 49
Long URL in SMS 6 24
Article by: Najam
Having new technologies does not mean they will completely replace old components.  Recently I had to create WCF that will be called by VB6 component.  Here I will describe what steps one should follow while doing so, please feel free to post any qu…
Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…

747 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now