webForumDet fria alternativet

Hämta uppgiffter ifrån treeview.

.NET

8 svar · 384 visningar · startad av saw

Medlem sedan mars 20011 880 inlägg
Frågan#1

Av någon lustig anledning så krachade mitt project, och jag har nu börjat om på ny kula.
När jag klicka på treeview, så fångar jag upp det så här:

private void treeView1_AfterSelect(object sender,
 System.Windows.Forms.TreeViewEventArgs e)
		{
			UppdateraInfo();
		}

Sedan skall den dra igång UppdateraInfo();

				string lkolumn = treeView1.SelectedNode.Text;
				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");

Så här fungerade det innan, men nu blir det bara skit.
Om jag ta bort lkolumn i SQL;en, så är det inga problem, men har jag den med så plir det error:

System.OutOfMemoryException: Error creating window handle. ---
> System.NullReferenceException: Object reference not set to an
 instance of an object.
   at Saw.frmKunder.UppdateraInfo() in
 e:\c#\sawdata\saw\frmkunder.cs:line 922
   at Saw.frmKunder.treeView1_AfterSelect(Object sender,
 TreeViewEventArgs e) in e:\c#\sawdata\saw\frmkunder.cs:line 
947
   at System.Windows.Forms.TreeView.OnAfterSelect(TreeViewEventArgs e)
   at System.Windows.Forms.TreeView.TvnSelected(NMTREEVIEW* nmtv)
   at System.Windows.Forms.TreeView.WmNotify(Message& m)
   at System.Windows.Forms.TreeView.WndProc(Message& m)
   at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.ControlNativeWindow.WndProc

(jag förkottade errormedelandet då det var jättelängt)
Någon med ett bra tips?

Medlem sedan juni 20022 599 inlägg
#2

OutOfMemoryException låter som ett ganska "djupt" fel. Har du nån uppfattning om exakt vilken rad det händer på?

Medlem sedan mars 20011 880 inlägg
#3

Hej niko.
Låt mig först visa dig:

//här klickar jag på treeview
private void treeView1_AfterSelect(object sender,
 System.Windows.Forms.TreeViewEventArgs e)
		{
			UppdateraInfo();
		}
//**hör uppdatera inf (inte hela koden)
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();			
}
//här brukar han stanna
DataRow dr=ds.Tables["alltfrånKunder"].Rows[0]; 		
checkBox1.Checked=(bool)dr["EjLjud"];			
checkBox2.Checked=(bool)dr["Info"];			
checkBox3.Checked=(bool)dr["SkickCd"];

Nu finns det en massa underligheter:
om jag tar bort:

WHERE Firma  = '" + lkolumn + "'";

då är det inga problem,men så kan jag ju inte ha det...
Ändå mera lustigt, när jag tog bort min första post(för att testa),
DÅ FÖRSVANN ALLA MINA PROBLEM!!!
Så här ser tabellen ut i min databas:

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 lite osäker på om jag har valt rätt datatyp, men inte borde väll det fungera på det sättet om nogon datatyp är fel?
Då borde väll allting strula(som om det inte hade gjort det...)
Har du någon bra idé?
:l

Medlem sedan juni 20022 599 inlägg
#4

Ingen aning, faktiskt, men om du sätter en breakpoint på första raden i "UppdateraInfo" och sen stegar vidare exakt på vilken rad krashar den då?

Medlem sedan mars 20011 880 inlägg
#5

Här:
DataRow dr=ds.Tables["alltfrånKunder"].Rows[0];
Men nu när jag tog bort den posten så fasnar han inte alls.
Jag skall testa och lägga till den igen.

Medlem sedan juni 20022 599 inlägg
#6

Det är inte så enkelt som att ds ibland är tomt? Då får du just felet: "Object reference not set to an instance of an object."

"System.OutOfMemoryException: Error creating window handle." är nog bara följdfel pga att koden ligger i en eventhandler.

Medlem sedan mars 20011 880 inlägg
#7

Men kolla här 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???

Medlem sedan juni 20022 599 inlägg
#8

Well .. Hittade en till som verkar få "General Network Error .." när han fyller en dataadapter:
http://pub52.ezboard.com/finteractivepsybertechnologydevelopersgroupfrm73.showMessage?topicID=144.topic

Nån lösning eller förklaring till kopplingen till fältlängden har jag dock inte, tyvärr. Men en long-shot: Har du kört in någon av service packarna för Frameworken?

http://msdn.microsoft.com/netframework/downloads/updates/sp1/default.aspx
http://msdn.microsoft.com/netframework/downloads/updates/sp/default.aspx

.. kan ju tänkas att det finns en bugg i System.Data.SqlClient, även om det känns lite långsökt?

Medlem sedan mars 20011 880 inlägg
#9

Tack för hjälpen niko, men det ändrade ingenting.
Jag har hittat tre fält där han reagera om jag skriver ut odet 'Chrysalis', du får jag error. I övrigt så kan jag göra precis vad jag vill. Har fått det mesta att fungera helt perfekt, men det är ju endå en väldigt elak bug.
Tack i alla fall för all din hjälp.

260 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)