Jag har bytt ifrån OleDbDataAdapter till SqlDataAdapter på mångas inrådan. Enligt de flesta så skulle det inte vara så stora problem. Pröva att stoppa in ett maskinnamn i data source, du kan även använda "localhost" eller "." Hej Mattias, tyvärr så hjälpte inte det, men jag tror att jag har isolerat problemet nu. Det beror säkert på att din lKolumn inte innehåller något värde första gången eftersom inget är valt i listan. Ajajaj, det visar sig var lite mera lustigt an vad jag trodde. Om du får NullReferenceException så tror jag att det beror på att du inte har några rader i din allfrånkunder DataTable. Testa något liknande: Hej Matias. Jag kunde inte köra din test, det var något fel i den, som jag inte kom till rätta med. Jag får inget grepp på ditt problem. I ditt första inlägg var det "General network error Check your network docomentation.", men sedan försvann det och kom sedan tillbaks igen. Hej Magnus.Problem när jag bytte till SqlDataAdapter
Men, koder som har fungerat smärtfritt krachar hela tiden nu...
Här ett ex:
<code>
try
{
string kolumn = treeView1.SelectedNode.Text;
string SQL = "Select Firma,Namn,Box,Adress,PostOrt,Tel,Mobil,Fax,URL,Epost,Anteck,EjLjud,Info,SkickCd FROM t_Kunder WHERE Firma = '" + kolumn + "'";
da = new SqlDataAdapter(SQL, con);
ds = new DataSet("frånKund");
con.Open();
da.Fill(ds, "frånKund");
con.Close();
}
catch(Exception fel)
{
MessageBox.Show(fel.Message,"Databasfel i UppdateraInfo");
}
</code>
Jag får error:
General network error Check your network docomentation.
Jag drar igång så här:
<code>
using System.Data.SqlClient;
using System.Data.SqlTypes;
private SqlDataAdapter da;
private SqlDataAdapter da1;
private SqlDataAdapter da2;
private DataSet ds;
private DataSet ds1;
private DataSet ds2;
private SqlConnection con;
string CONstring = "Data Source=; Initial Catalog=Melodi;Trusted_Connection=yes";
con = new SqlConnection(CONstring);
</code>
Någon som har någon ide?Sv: Problem när jag bytte till SqlDataAdapter
<code>
string CONstring = "Data Source=localhost; Initial Catalog=Melodi;Trusted_Connection=yes";
string CONstring = "Data Source=.; Initial Catalog=Melodi;Trusted_Connection=yes";
</code>
/MattiasSv: Problem när jag bytte till SqlDataAdapter
Jag har en treeview med namn ne combobox med kategorier och ett antal textboxar för adress tel osv för de namn som klickas på i treeview,.
När jag start så drar jag igång:
<code>
FyllPåKategori(); //enbart denna
//sen så har jag skrivet i:
private void treeView1_AfterSelect(object sender,
System.Windows.Forms.TreeViewEventArgs e)
{
UppdateraInfo();
}
//dvs nar app. startar så skall den första posten vara selectad, eller när man klicka
//så skall motsvarande post visas i textrutorna. Sen i UppdateraInfo:
string lkolumn = treeView1.SelectedNode.Text.ToString();
string fSQL = "Select Firma,Namn,Box,Adress,PostOrt,Tel,Mobil,Fax,URL,Epost,Anteck,EjLjud,Info,SkickCd FROM t_Kunder WHERE Firma = '" + lkolumn + "'";
da = new SqlDataAdapter(fSQL, con);
ds = new DataSet("alltfrånKunder");
try
{
con.Open();
da.Fill(ds,"alltfrånKunder");
con.Close();
}
catch(Exception fel)
{
MessageBox.Show(fel.Message,"Databasfel i UppdateraInfo");
}
</code>
Det är när jag har det så här som jag får ett error, men om jag kommentera bort
'WHERE Firma = '" + lkolumn + "'";' då får jag inget error.
Men om jag kolla vi en Messagebox:
<code>
MessageBox.Show(lkolumn.ToString());
</code>
då fungerar det!!!
Hur skall jag lösa detta? Sv: Problem när jag bytte till SqlDataAdapter
Gör en check på det och välj sedan att kör/inte köra din SQL sats.
- mSv: Problem när jag bytte till SqlDataAdapter
Jo du hade rätt Magnus, och det mästa fungera nu, men om jag klicka på ETT namn(det var det som låg först tidigare) då bryter han ihop.
Så här ser error ut:
<code>
An unhandled exception of type 'System.NullReferenceException' occurred in Saw.exe
Additional information: Object reference not set to an instance of an object.
</code>
Den pekar också på den här koden:
<code>
DataRow dr=ds.Tables["alltfrånKunder"].Rows[0];
checkBox1.Checked=(bool)dr["EjLjud"];
checkBox2.Checked=(bool)dr["Info"];
checkBox3.Checked=(bool)dr["SkickCd"];
</code>
Så här ser databasen(tabellen) ut:
Kundid int 4
KundKategori int 4
Firma nvarchar 30
Namn " " 25
Box " " 14
Adress " " 25
PostOrt " " 25
Tel " " 15
Mobil " " 15
Fax " " 15
URL " " 50
Epost " " 50
EjLjud bit 1
Info bit 1
SkickCD bit 1
Anteck nvarchar 255
Jag känner mig väldigt osäker på datartyperna, tycker ni att jag har gjort rätt?
Någonstans så finns det någonting som gör att den krachar.Sv: Problem när jag bytte till SqlDataAdapter
<code>
if( DataRow dr=ds.Tables["alltfrånKunder"].Rows.Count == 0 )
{
MessageBox.Show("Ingen data funnen i databasen.");
throw new ApplicationException("...");
}
DataRow dr=ds.Tables["alltfrånKunder"].Rows[0];
checkBox1.Checked=(bool)dr["EjLjud"];
checkBox2.Checked=(bool)dr["Info"];
checkBox3.Checked=(bool)dr["SkickCd"];
</code>
Orsaken till att du inte har några rader är svår att identifiera. Jag skulle debugga och kopiera den SQL sats du genererar och sedan köra den i Query Analyzer (om du kör SQL Server) för att se vilka rader som returneras. I det fall som går fel så kommer du antagligen inte få något resultat vid frågan i QA.
Hoppas detta hjälper!
/MattiasSv: Problem när jag bytte till SqlDataAdapter
Jag har kört SQL:en i QA helt utan problem, och jag fick fram poster.
Som jag nämde så när jag tog bort en speciell post, så började allting att fungera igen, mycket märkvärdigt.
För att göra det ännu mera märkvärdigt.
Boven i dramat är tydligen fältet FIRMA.
Jag trodde att fältet FIRMA var för litet, så jag ändrade till:
nvachar 50
I den post där felet kommer står det 'Air Chrysalis Scandinavia'.
Då får jag error:
"General Network Error Check your network documentation."
Nästa error:
"Object referense not set to an instance of an object."
Och så bryter den ihop.
Men om jag ändrar i fältet till:
'Air Chrys. Scandinavia' då är det inga problem.
Ändrar jag till 'Chrysalis', då är felen tillbaka.
Går det TROLL i datorn???Sv: Problem när jag bytte till SqlDataAdapter
Jag får känslan av att du inte hanterar dina exception rätt, om du får ett fel i form av en exception när du gör Open/Fill/Close (som du har i ditt try-block) och sedan tar hand om felet genom att visa en dialog så kan du ju inte använda det DataSet som har skapats. Ett fel uppstod ju vid dess skapande! Eftersom du skriver att "nästa fel" blir object reference... så verkar du ju använda det icke-giltiga DataSet trots att det uppstod fel vid skapandet.
Vad jag menade med förra inlägget var att skriva som nedan, copy&paste fel...
<code>
if( ds.Tables["alltfrånKunder"].Rows.Count == 0 )
{
MessageBox.Show("Ingen data funnen i databasen.");
throw new ApplicationException("...");
}
</code>
Om det är som jag tror så funkar nog inte heller denna kod eftersom det nog inte finns någon DataTable som heter alltfrånkunder i ds, eftersom dess skapande misslyckades...
/MattiasSv: Problem när jag bytte till SqlDataAdapter
Det tycks bli en långtradare det här.
Så här gjorde jag, obs namnbyte..
<code>
string lkolumn = treeView1.SelectedNode.Text.ToString();
string fSQL = "Select
Firma,Namn,Box,Adress,PostOrt,Tel,Mobil,Fax,URL,Epost,Anteck,EjLjud,Info,SkickCd
FROM t_Kunder WHERE Firma = '" + lkolumn + "'";
da = new SqlDataAdapter(fSQL, con);
ds = new DataSet("frånKunder");
if( ds.Tables["frånKunder"].Rows.Count == 0 )
{
MessageBox.Show("Ingen data funnen i databasen.");
throw new ApplicationException("...");
}
</code>
Med andra ord, så fort som ds"frånKunder" är skapat, så försöker jag att kolla enligt din kod.
Då krachar programmet, den vill inte höra talas om koden, mycket märkvärdigt.
Fortfarande så är det just när post en 'Air Crys...' kommer upp som det djäklas alla andra poster hanteras kanonbra.
Som jag skrev innan så tog jag också bort den posten, och la in den på nytt, samma resultat.
I övrigt så fungerar uppdate/nytt/delete kanon.
En sak som jag reagera på är, att om jag tar posten 'Air Crys..' så kan jag se att ds"frånKunder' ändras, men den vägrar att uppdatera i databasen.