Avatar billede nielsandersen Nybegynder
22. marts 2005 - 16:26 Der er 5 kommentarer og
1 løsning

Filtere data i dataset objekt

Jeg laver et SQL udtræk:

"SELECT TypeID, TypeName FROM TYPE"
og indsætter data i et dataset.
Nu vil jeg gerne filtere data hvor TypeID er 3.

Burde man ikke med nedenstående linje kun  filtere det ønskede data??

dataset.Tables[0].DefaultView.RowFilter = " TypeID = 3 ";
Avatar billede nielsandersen Nybegynder
22. marts 2005 - 17:32 #1
using System;
using System.Data;
using System.Data.SqlClient;

namespace ConsoleApplication1
{
    class Class1
    {

        public System.Data.DataSet sort()
        {
            DataSet objDataSet = new DataSet();
            try
            {
                SqlConnection Connection = new SqlConnection("server=localhost;Trusted_Connection=true;database=northwind");
           
                SqlCommand Command = new SqlCommand("SELECT * from Categories", Connection);
           
                SqlDataAdapter objDataAdapter = new SqlDataAdapter(Command);
           
                objDataAdapter.Fill(objDataSet, "Comments");
                       
                Connection.Close();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.ToString());
            }
       
            return objDataSet;
        }

        [STAThread]
        static void Main(string[] args)
        {
            Class1 c = new Class1();
            DataSet ds = c.sort();
            ds.Tables[0].DefaultView.RowFilter = "CategoryID = '1'";

            foreach (DataRow test in ds.Tables[0].Rows)
            {
                Console.WriteLine(test[0].ToString());
            }
           
        }
    }
}
Avatar billede nielsandersen Nybegynder
22. marts 2005 - 17:33 #2
Her er ovenståendekode som jeg forsæger at få til at virke. Men den kan ikke filtere. HVad gør jeg galt ?
Avatar billede snepnet Nybegynder
22. marts 2005 - 18:26 #3
i din foreach-løkke går du stadig direkte på tabellens rækker.... der vil ligge de samme rækker der som der hele tiden har ligget.

lav en løkke over ds.Tables[0].DefaultView.Count istedet :

for(int i=0;i<ds.Tables[0].DefaultView.Count;i++)
{
  Console.WriteLine("Række {0} : Id={1}", i, ds.Tables[0].DefaultView[i][0].ToString());
}

mvh
Avatar billede snepnet Nybegynder
22. marts 2005 - 18:28 #4
alternativt kan du lave en select på tabellen istedet :

DataRow[] rows = ds1.Tables[0].Select("<filterexpression>","sortexpression",DataViewRowState.Current);

DataViewRowState er en enumerator med lidt flere mulige værdier en den valgte.

mvh
Avatar billede nielsandersen Nybegynder
22. marts 2005 - 20:32 #5
hej snepnet det var lige præcis det jeg søgte. Nu virker det. HVis du kommer emd et svar giver jeg point
Avatar billede snepnet Nybegynder
22. marts 2005 - 20:56 #6
et svar får du her :o)
mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester