Avatar billede starf Nybegynder
16. september 2004 - 13:40 Der er 17 kommentarer og
1 løsning

An unhandled exception problem

får følgende fejl:
//////////////////////////////

An unhandled exception of type 'System.NullReferenceException' occurred in Content Manager.exe

Additional information: Object reference not set to an instance of an object.

//////////////////////////////

her er min kode:

private void RedigereMenu_Click(object sender, System.EventArgs e)
        {
            string IDNummer9; //Creates a string
            for(int index = 0; index < lstItems.SelectedItems.Count; index++) //Run through the list
            {
                OleDbConnection myConn = new OleDbConnection( getDatabaseDNS());
                IDNummer9 = lstItems.SelectedItems[index].Tag.ToString(); //Get the id number from the list (li.tag lini 186)
                //Opdatere databasen
               
                string strLink = "<a href=\"" + sideload.Text +"?id="+ IdLink.Text +"\" target=\""+ TargetLink.Text +"\">"+ TekstLink.Text +"</a>";
                string strSQL="Update menu SET link = '"+ strLink + "',beskrivelse='" + BeskrivelseLink.Text +"' WHERE id1 = " + IDNummer9;
               
                OleDbDataAdapter myCmd = new OleDbDataAdapter( strSQL, myConn );
                MessageBox.Show(strSQL.ToString());
                myConn.Open();
                OleDbCommand cmd;
                cmd=new OleDbCommand(strSQL,myConn);
                cmd.ExecuteNonQuery();       
                strSQL = "";
               
                //lukker con
                myConn.Close();
            }
        }
Avatar billede snepnet Nybegynder
16. september 2004 - 13:44 #1
kan du eventuelt debugge dig frem til på hvilken linie det kikser (eller kommer den måske ud i fejlmeldingen... der plejer at komme lidt mere information end det du har vist)?
(der er flere steder det kan kikse)
Avatar billede starf Nybegynder
16. september 2004 - 13:46 #2
det er denne linie der fejler:

IDNummer9 = lstItems.SelectedItems[index].Tag.ToString(); //Get the id number from the list (li.tag lini 186)
Avatar billede snepnet Nybegynder
16. september 2004 - 13:53 #3
Hvad er lstitems for en sag ?
Avatar billede starf Nybegynder
16. september 2004 - 13:58 #4
det er en list view altså:


        private void lstItems_SelectedIndexChanged_1(object sender, System.EventArgs e)
        {

        }

sådan en
Avatar billede snepnet Nybegynder
16. september 2004 - 14:00 #5
Er det så ikke bare dit .Tag der er null ?
Avatar billede snepnet Nybegynder
16. september 2004 - 14:01 #6
du kan jo checke det med debuggeren... er det ikke en værdi man selv skal sætte til noget fornuftigt hvis man har lyst ?
(jeg er mest på ASP.NET - har ikke ikke lavet så win i .NET)
Avatar billede starf Nybegynder
16. september 2004 - 14:04 #7
nej ikke såvidt jeg lige kan se!
Avatar billede snepnet Nybegynder
16. september 2004 - 14:18 #8
Prøv at lave sådan en løkke her istedet

For Each lvi As ListViewItem In lstItems.SelectedItems
Dim someValue As String = lvi.Tag.ToString()
Next

Det skulle ikke være andet end Tag der kan være null i ovenstående, så jeg vil tro at du rammer en (eller flere) hvor den ikke er sat.
Avatar billede starf Nybegynder
16. september 2004 - 14:24 #9
vil du have jeg skal smide den inde i lst items ?
Avatar billede snepnet Nybegynder
16. september 2004 - 14:29 #10
undskyld... den forstod jeg ikke helt.
du kan bare skifte

for(int index = 0; index < lstItems.SelectedItems.Count; index++)

ud med

For Each lvi As ListViewItem In lstItems.SelectedItems

så kan du arbejde direkte på det enkelt item med lvi (du slipper for indexering og den slags).

og du kan prøve at lave et check på om Tag er null.... pakke det ind i en try/catch eller noget.
Avatar billede starf Nybegynder
16. september 2004 - 14:32 #11
problemet er koden virker fint i andre tilfælde...

og det virker ikke...

denne her kode virker f.eks fint..

//vi finder det id nummer der skal slettes i menu comboboxen
        string IDNummer2; //Creates a string
        for(int index = 0; index < lstItems.SelectedItems.Count; index++) //Run through the list
            {
            //vi åbner databasen og sletter
                OleDbConnection myConn = new OleDbConnection( getDatabaseDNS());
                //vælger første collum og sletter fra det valgte id
                IDNummer2 = lstItems.SelectedItems[0].SubItems[0].Text;    //Get the id number from the list (li.tag lini 186)
                string SQL = "DELETE * FROM menu WHERE id = " + IDNummer2;
                OleDbDataAdapter myCmd = new OleDbDataAdapter( SQL, myConn );
                myConn.Open();
Avatar billede snepnet Nybegynder
16. september 2004 - 14:37 #12
der kigger du jo heller ikke på .Tag
Avatar billede starf Nybegynder
16. september 2004 - 14:41 #13
AHhhh fuck havde jeg sku lige overset doh!
Avatar billede starf Nybegynder
16. september 2004 - 14:42 #14
men nu får jeg:

An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in system.data.dll

i

cmd.ExecuteNonQuery();

hele koden er:

            string IDNummer9; //Creates a string
            for(int index = 0; index < lstItems.SelectedItems.Count; index++) //Run through the list
            {
                OleDbConnection myConn = new OleDbConnection( getDatabaseDNS());
               
                IDNummer9 = lstItems.SelectedItems[0].SubItems[0].Text; //Get the id number from the list (li.tag lini 186)
                //Opdatere databasen
               
                string strLink = "<a href=\"" + sideload.Text +"?id="+ IdLink.Text +"\" target=\""+ TargetLink.Text +"\">"+ TekstLink.Text +"</a>";
                string strSQL="Update menu SET link = '"+ strLink + "',beskrivelse='" + BeskrivelseLink.Text +"' WHERE id1 = " + IDNummer9;
               
                OleDbDataAdapter myCmd = new OleDbDataAdapter( strSQL, myConn );
                MessageBox.Show(strSQL.ToString());
                myConn.Open();
                OleDbCommand cmd;
                cmd=new OleDbCommand(strSQL,myConn);
                cmd.ExecuteNonQuery();       
                strSQL = "";
               
                //lukker con
                myConn.Close();
            }
Avatar billede snepnet Nybegynder
16. september 2004 - 14:46 #15
er id måske en int ?
Avatar billede snepnet Nybegynder
16. september 2004 - 14:51 #16
du kan lave en
Dim id As Integer = Integer.Parse(<sometext>)
Avatar billede starf Nybegynder
16. september 2004 - 14:56 #17
har fundet fejlen :)

smid et svar og få point!
Avatar billede snepnet Nybegynder
16. september 2004 - 15:01 #18
ok :o)
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