mboost-dp1

Erstatning af tabeller i dataSet (C#)


Gå til bund
Gravatar #1 - Emil Melgaard
1. jul. 2009 09:06
Jeg er ved at lave et program der henter tal fra en DB2 database ud fra nogle valg brugeren foretager. Jeg har dog problemer med at brugeren skal have lov til at lave flere udtræk uden at lukke programmet.

Her er hvad jeg startede med at gøre:

dB2Connection1.ConnectionString = "Database=SST;UserID=" + UserName + ";Password=" + Password + ";Server=Berlin";
dB2Connection1.Open();
dB2Command1.CommandText = SQL;
db2DataAdapter1.Fill(dataSet1);
dB2Connection1.Close();
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataMember = dataSet1.Tables[0].TableName;


Det virker fint ved første udtræk, men når man laver et nyt udtræk, bliver de gamle data ikke slettet. Det betyder at der er rækker og kolonner der ikke burde være der. Det løser jeg så med denne kode:

dB2Connection1.ConnectionString = "Database=SST;UserID=" + UserName + ";Password=" + Password + ";Server=Berlin";
dB2Connection1.Open();
dB2Command1.CommandText = SQL;
if (dataSet1.Tables.Count > 0)
{
dataSet1.Tables[0].Rows.Clear();
dataSet1.Tables[0].Columns.Clear();
}
db2DataAdapter1.Fill(dataSet1);
dB2Connection1.Close();
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataMember = dataSet1.Tables[0].TableName;


Det virker også fint ved normale omstændigheder, men hvis jeg klikker på en kolonneoverskrift for at sortere den, før jeg laver andet udtræk, får jeg denne fejl på linje 9: System.NullReferenceException was unhandled (Object reference not set to an instance of an object).

Jeg har prøvet at bruge dataSet1.Tables.Clear() i stedet for, men det ser ikke ud til at have nogen effekt overhovedet. Jeg har desuden prøvet at bruge dataSet1.Clear() i stedet for, men der er det kun rækkerne der forsvinder. De gamle kolonner er der stadigvæk.

Jeg har ikke kodet så meget C#, så jeg håber lidt at der er en der kan vise mig en løsning der er noget smartere end det jeg prøver på, eller i hvert fald forklare mig hvad jeg gør forkert.

Den komplette kode kan evt. findes her: http://fyrrevang.dk/sst/autudtraek.zip
Gravatar #2 - Windcape
1. jul. 2009 13:04
Istedet for at clear dit dataset, skal du bare instansisere en ny.


dataSet1 = new DataSet();


istedet for


dataSet1.Tables.Clear()


Der er ingen anden måde at gøre det på.
Gravatar #3 - Emil Melgaard
3. jul. 2009 10:19
#3: Mange tak, det virker perfekt! :)
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login