Jag håller på att lär mej databashantering i C# har har ett programexempel, som jag inte får att fungerar. Felet betyder att du har glömt att instansera ett objekt. Jag ser inte felet med en gång, men om du berättar vilken rad felet uppstår på blir det mycket enklare. Hej! Innan du fyller en combobox finns det inga element i det och således inget SelectedItem. OK jag misstänkte något liknande, för när man höll muspekaren över så stod det ett "null" värde. Testa med lägga in en if sats i FyllpåListrutan funktionen: Många tack för hjälpen!!!Var ligger felet när man får felmeddelandet "NullReferenceException was unhandle
Min felkod blir: "NullReferenceException was unhandled"
Och: "Objekreferensen har inte angetts till en instans av ett objekt."
Vad är fel?
Här är koden:
using System.Data.OleDb;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Register
{
public partial class Form1 : Form
{
private OleDbConnection con;
private OleDbDataAdapter da;
private DataSet ds;
private TextBox[] tr;
private bool ny;
private string[] nr;
public Form1()
{
InitializeComponent();
string CONstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Försäljning.mdb";
con = new OleDbConnection(CONstring);
tr = new TextBox[10];
tr[0] = textBoxKundnr;
tr[1] = textBoxFöretagsnamn;
tr[2] = textBoxKontaktperson;
tr[3] = textBoxBefattning;
tr[4] = textBoxAdress;
tr[5] = textBoxPostnummer;
tr[6] = textBoxOrt;
tr[7] = textBoxLand;
tr[8] = textBoxTelefon;
tr[9] = textBoxTelefax;
FyllpåListrutan();
}
private void FyllpåListrutan()
{
listBox1.Items.Clear();
string kolumn = comboBox1.SelectedItem.ToString();// PÅ DENNA RAD STANNAR VC2005!!!
string SQLstring = "SELECT * FROM Kunder ORDER BY '" + kolumn + "'";
da = new OleDbDataAdapter(SQLstring, con);
ds = new DataSet("frånKunder");
con.Open();
da.Fill(ds, "frånKunder");
con.Close();
int rader = ds.Tables["frånKunder"].Rows.Count;
nr = new string[rader];
for (int a = 0; a < rader; a++)
{
listBox1.Items.Add(ds.Tables["frånKunder"].Rows[a][kolumn].ToString());
nr[a] = ds.Tables["frånKunder"].Rows[a]["Kundnr"].ToString();
}
listBox1.SelectedIndex = 0;
}
private void UppdateraInfo()
{
int n = listBox1.SelectedIndex;
string kn = nr[n];
string SQLstring = "SELECT * FROM Kunder WHERE Kundnr = '" + kn + "'";
da = new OleDbDataAdapter(SQLstring, con);
ds = new DataSet("frånKunder");
con.Open();
da.Fill(ds, "frånKunder");
con.Close();
int a = 0;
foreach (TextBox t in tr)
{
t.Text = ds.Tables["frånKunder"].Rows[0][a].ToString();
a++;
}
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
FyllpåListrutan();
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
UppdateraInfo();
}
}
}Sv: Var ligger felet när man får felmeddelandet "NullReferenceException was unha
/JohanSv:Var ligger felet när man får felmeddelandet "NullReferenceException was unha
på denna rad stannar den.
string kolumn = comboBox1.SelectedItem.ToString();// PÅ DENNA RAD STANNAR VC2005!!!
MickeSv: Var ligger felet när man får felmeddelandet "NullReferenceException was unha
Sv:Var ligger felet när man får felmeddelandet "NullReferenceException was unha
Kan man ändra detta i något i stil med detta?
listBox1.Items.Add(tr[6]);//detta är för felt "ort"
//listBox1.Items.Clear();
eller hur gör man lättast?
Det verkar som programexemplet är gjort för VS2003 och jag använder VC2005, men det ska väl inte spela någon roll i detta fall? (för det är ju inget ovanligt att det står fel i böckerna :-) )
MickeSv: Var ligger felet när man får felmeddelandet "NullReferenceException was unha
private void FyllpåListrutan()
{
listBox1.Items.Clear();
if (comboBox1.SelectedItem != null) {
string kolumn = comboBox1.SelectedItem.ToString();// PÅ DENNA RAD STANNAR VC2005!!!
string SQLstring = "SELECT * FROM Kunder ORDER BY '" + kolumn + "'";
da = new OleDbDataAdapter(SQLstring, con);
ds = new DataSet("frånKunder");
con.Open();
da.Fill(ds, "frånKunder");
con.Close();
int rader = ds.Tables["frånKunder"].Rows.Count;
nr = new string[rader];
for (int a = 0; a < rader; a++)
{
listBox1.Items.Add(ds.Tables["frånKunder"].Rows[a][kolumn].ToString());
nr[a] = ds.Tables["frånKunder"].Rows[a]["Kundnr"].ToString();
}
}
listBox1.SelectedIndex = 0;
}
Sv:Var ligger felet när man får felmeddelandet "NullReferenceException was unha
MVH
Micke