Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von King-Malkav
Thema: Problem mit MSSQL und C#...
Am im Forum: Datentechnologien

Ich brauche die ID um die gerade eingegebene Hardware einem Benutzer oder einem Arbeitsplatz zuzuordnen. Das ganze geschieht über eine Zuordnungstabelle.
Das einfachste währe ja das dirket in die Hardware Tabelle zu schreiben, dies ist aber nicht gewünscht.

das ganze läuft dann so:

Hardware ID 5 | Benuter ID 23
Hardware ID 5 | Software ID 669
.
.
.

Hoffe es ist klar wie es gemeint ist.

MFG

Thema: Problem mit MSSQL und C#...
Am im Forum: Datentechnologien

Zitat
Original von EvilTK
Die zeile wäre noch ganz praktisch.
Ich hab noch nicht verstanden wozu das SELECT (-> DataSet ect.) brauchst.
Ist nur fehleranfällig und macht nichts.

Weiß nicht genau was du meinst.
Zitat
Debugg mal den Code durch (ist 1zu1 übernommen + ein paar verbesserungen) und schau dir an welche werte die objekte haben. (eigentlich nur id)

Hab ich mal gemacht und hab das Ergebnis per MessageBox Ausgeben lassen. Funktioniert. Nur muss ich die "id" in eine andere Variable geben um damit zu arbeiten.


private void OnRowUpdated(object sender, SqlRowUpdatedEventArgs args)
			{                    
				string id2 = " ";
				
				if (args.StatementType == StatementType.Insert && args.Status == UpdateStatus.Continue )
				{
					SqlCommand idCMD = new SqlCommand("SELECT @@IDENTITY", sqlConnection1);
					object id = idCMD.ExecuteScalar();
					id2 = id.ToString();
					if( id != null )
					{
						System.Diagnostics.Debug.WriteLine( "ID: " + id.ToString() + " Type: " + id.GetType().ToString() );
						if( id is Int32 )
						{
							args.Row["Hardware ID"] = (int)id;
						
						}
					}
					else
					{
						System.Diagnostics.Debug.WriteLine( "id ist null" );
					}
				}
				MessageBox.Show(id2);	
		}

Aber ehrlich gesagt verstehe ich deinen Code nicht, dass ist noch zu hoch für mich.
Bin ja noch absoluter anfänger. Kannst das mal kurz Erklären?
Was mir auffählt. Wenn ich meinetwegen 2 neue Hardwareobjekte erfasse, wird die Messagebox einmal bei der ersten Hardware dargestellt und bei der 2. Hardware 2 mal. Der Wert von id stimmt aber.
MFG

Thema: Problem mit MSSQL und C#...
Am im Forum: Datentechnologien

Hi, stimmt, da ist mir wohl ein fehler unterlaufen *g* Bin noch nicht wirklich fit.
Hab jetzt alles Korrigiert, allerdings bekomm ich jetzt die Meldung "Die Angegebene Umwandlung ist ungültig". Das Programm bleibt weiter aktiv, allerdings schließt er nicht sie SQL Connection.

Hier mal mein abgeänderter Code. Die Messagebox ist zum testen und fliegt später wieder raus.

 
private void button4_Click(object sender, System.EventArgs e)
		{
			
			
			//Datenbank schreiben
			try
			{
				sqlConnection1.Open();
				sqlDAHardware.Fill(dsHardware1, "hardware");
				
				DataRow objZeile;
				objZeile = dsHardware1.hardware.NewRow();
				objZeile["Seriennummer"] = Seriennummer.Text;
				objZeile["Bemerkungen"] = textBox1.Text;
				objZeile["TypID"] = comboBox3.SelectedValue.ToString();
				objZeile["HerstellerID"] = comboBox1.SelectedValue.ToString();
				
				dsHardware1.Tables["hardware"].Rows.Add(objZeile);
				sqlDAHardware.RowUpdated += new SqlRowUpdatedEventHandler(OnRowUpdated);
				sqlDAHardware.Update(dsHardware1, "hardware");
				sqlConnection1.Close();
			}
			catch (Exception ex)
			{
				MessageBox.Show("Fehler " + ex.Message, "Fehler", MessageBoxButtons.OK,MessageBoxIcon.Error);
			}
		}
		
		private void OnRowUpdated(object sender, SqlRowUpdatedEventArgs args)
		{
			MessageBox.Show("Test");
			int ID = 0;
			SqlCommand idCMD = new SqlCommand("SELECT @@IDENTITY", sqlConnection1); 
					
			if (args.StatementType == StatementType.Insert && args.Status == UpdateStatus.Continue )
			{
				ID = (int)idCMD.ExecuteScalar();
				args.Row["Hardware ID"] = ID;
				sqlConnection1.Close();
			}
			SqlDataAdapter datest = new SqlDataAdapter("SELECT * FROM hardware WHERE ID = @HardwareID", sqlConnection1);
			datest.SelectCommand.Parameters.Add("@HardwareID", SqlDbType.Int,4).Value = ID;
			DataSet dstest = new DataSet();

			try
			{
				sqlConnection1.Open();
				datest.Fill(dstest, "hardware");
				sqlConnection1.Close();
			}
			catch (Exception ex)
			{
				MessageBox.Show("Fehler " + ex.Message, "Fehler", MessageBoxButtons.OK,MessageBoxIcon.Error);
			}	
			MessageBox.Show(ID.ToString());
			DataTable dttest = dstest.Tables["hardware"];
			DataRow aRowtest = dttest.Rows[0];
			string test = aRowtest["Hardware ID"].ToString();
			
			
		}


MFG und danke für die Hilfe bis jetzt.

Thema: Problem mit MSSQL und C#...
Am im Forum: Datentechnologien

Mkay, danke sollte mal ein Kaffee einwerfen

Anderes Problem...er machts nämlich immernoch nicht.

 
private void button4_Click(object sender, System.EventArgs e)
		{
			
			
			//Datenbank schreiben
			try
			{
				sqlConnection1.Open();
				DataRow objZeile;
				objZeile = dsHardware1.hardware.NewRow();
				objZeile["Seriennummer"] = Seriennummer.Text;
				objZeile["Bemerkungen"] = textBox1.Text;
				objZeile["TypID"] = comboBox3.SelectedValue.ToString();
				objZeile["HerstellerID"] = comboBox1.SelectedValue.ToString();
				dsHardware1.Tables["hardware"].Rows.Add(objZeile);
							
				sqlDAHardware.RowUpdated += new SqlRowUpdatedEventHandler(OnRowUpdated);
				sqlDAHardware.Update(dsHardware1, "hardware");
			}
		
		

			catch (Exception ex)
			{
				MessageBox.Show("Fehler " + ex.Message, "Fehler", MessageBoxButtons.OK,MessageBoxIcon.Error);
			}
		}
		
		private void  OnRowUpdated(object sender, SqlRowUpdatedEventArgs args)
		{
			int newID;	
			
			SqlCommand idCMD = new SqlCommand("SELECT @@IDENTITY", sqlConnection1); 
				
			if (args.StatementType == StatementType.Insert)
			{
				newID = (int)idCMD.ExecuteScalar();
				args.Row["Hardware ID"] = newID;
				sqlConnection1.Close();
			}
			
			SqlDataAdapter datest = new SqlDataAdapter("SELECT * FROM hardware WHERE ID = @HardwareID", sqlConnection1);
			datest.SelectCommand.Parameters.Add("@HardwareID", SqlDbType.Int,4).Value = newID;
			DataSet dstest = new DataSet();

			try
			{
				sqlConnection1.Open();
				datest.Fill(dstest, "hardware");
				sqlConnection1.Close();
			}
			catch (Exception ex)
			{
				MessageBox.Show("Fehler " + ex.Message, "Fehler", MessageBoxButtons.OK,MessageBoxIcon.Error);
			}	
			
			DataTable dttest = dstest.Tables["hardware"];
			DataRow aRowtest = dttest.Rows[0];
			string strtyp = aRowtest["Hardware ID"].ToString();
			textBox6.Text = strtyp;
		}

als Fehlermeldung bekomm ich
Verwendung von möglicherweise nicht zugewiesenen lokalen Variablen 'newID'

was mach ich falsch...

Thema: Problem mit MSSQL und C#...
Am im Forum: Datentechnologien

So hab ichs gemacht:

 
SqlCommand idCMD = new SqlCommand("SELECT @@IDENITY", sqlConnection1); 
				if (args.StatementType == StatementType.Insert)
				{
					newID = (int)idCMD.ExecuteScalar();
					args.Row["Hardware ID"] = newID;
					sqlConnection1.Close();
				}				
				
				MessageBox.Show(newID);


so funktioniert es aber nicht, was mach ich falsch?

Thema: Problem mit MSSQL und C#...
Am im Forum: Datentechnologien

Zitat
Original von LaTino
SELECT @@IDENITY liefert den Wert des zuletzt automatisch eingetragenen Schlüssels, dessen Spalte als IDENT gekennzeichnet ist. Einfach als SQL-Abfrage ausführen und das Ergebnis schnappen.

LaTino

Kann das sein, dass es nur bei Access Datenbanken funktioniert? Ich bekomme es bei meiner SQl Datenbank nicht hin - oder ich bin zu blöd.

MFG

Thema: Problem mit MSSQL und C#...
Am im Forum: Datentechnologien

Danke, werde es mal testen. MFG

Thema: Problem mit MSSQL und C#...
Am im Forum: Datentechnologien

Sorry wenn ich jetzt so blöd frag, wie genau funktionert deine lösung?

MFG

Thema: Problem mit MSSQL und C#...
Am im Forum: Datentechnologien

Ach ja, die Probleme gehen weiter (wer hätte das Gedacht )

Ich schreibe einen Datensatz in meine Tabele. In der Datenbank wird ein Autowert generiert, dieser Nennt sich Hardware ID. Nun brauch ich allerdings die Hardware ID um die Daten weiter zu verarbeiten.

Gibt es eine Möglichkeit, dass ich nach dem Update die Hardware ID des gerade erzeugten Datensatz bekomme und dieser in eine string variable geschrieben wird?

 
{
			//Datenbank schreiben
			try
			{
				sqlConnection1.Open();
				DataRow objZeile;
				objZeile = dsHardware1.hardware.NewRow();
				objZeile["Seriennummer"] = Seriennummer.Text;
				objZeile["Bemerkungen"] = textBox1.Text;
				objZeile["TypID"] = comboBox3.SelectedValue.ToString();
				objZeile["HerstellerID"] = comboBox1.SelectedValue.ToString();
				dsHardware1.Tables["hardware"].Rows.Add(objZeile);
				sqlDAHardware.Update(dsHardware1, "hardware");
				sqlConnection1.Close();
				
				



			}

			catch (Exception ex)
			{
			MessageBox.Show("Fehler " + ex.Message, "Fehler", MessageBoxButtons.OK,MessageBoxIcon.Error);
			}

Thema: Problem mit MSSQL und C#...
Am im Forum: Datentechnologien

Zitat
Original von EvilTK
Es funktioniert, was willst du mehr?

He He, stimmt. Aber es ist verdammt viel Tipparbeit. Da ich später von mehreren Tabellen lesen muss, wenn ich alles in Erinnerung habe, 7 Stück.

Das ganze soll eine "kleine" Inventur Anwendung werden.

Mein Problem:
Ich kann so gut wie kein SQL, hab noch nie mit .net gearbeitet, hab wenig bis keine Programmier Erfahrung (In der Ausbildung mal C++ gemacht).
Deshalb bin ich für jeden Tipp dankbar.
Zum Glück hab ich ein Konzept gezeichnet

Ich werde es nächste Woche mal ausstesten wenn ich wieder im Betrieb bin.

Thema: Problem mit MSSQL und C#...
Am im Forum: Datentechnologien

So hab mal ein wenig rumgetestet.
Das soll es können bzw. kann es:

  • Suche über Seriennummer
  • Auflistung aller gefunden Geräte
  • Durch anklicken der Seriennummer und klick auf Daten Laden werden Zusatzinfos aus 2 Tabellen geladen


Hier mal mein Code, es besteht keine Beziehungen in der Datenbank und sollen auch nicht (wahrscheinlich, damit man einfach die Datenbank wechseln kann - Ich weiß es nicht).

 
private void button6_Click(object sender, System.EventArgs e)
		{
			// Ausgewählte Hardware ID in Variable zähler laden
				
			string zähler = listBox1.SelectedValue.ToString();
			
			// HardwareID laden und die dazugehörigen TypID und HerstellerID holen
			SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM hardware WHERE [Hardware ID] = @ID", sqlConnection1);
			da.SelectCommand.Parameters.Add("@ID", SqlDbType.Int,4).Value = zähler;
			DataSet ds = new DataSet();
								
			try
			{				
				ds.Clear();
				sqlConnection1.Open();
				da.Fill(ds, "hardware");
				sqlConnection1.Close();
			}
			catch (Exception ex)
			{
				MessageBox.Show("Fehler " + ex.Message, "Fehler", MessageBoxButtons.OK,MessageBoxIcon.Error);
			}
			
			// Daten aus dem Dataset in die String Variablen laden
			DataTable dt = ds.Tables["hardware"];
			DataRow aRow = dt.Rows[0];
			string TypID = aRow["TypID"].ToString();
			string HerstellerID = aRow["HerstellerID"].ToString();
			
			// HerstellerID umwandeln in Hersteller Name
			
			SqlDataAdapter daHersteller = new SqlDataAdapter("SELECT Hersteller FROM hersteller WHERE ID = @HerstellerID", sqlConnection1);
			daHersteller.SelectCommand.Parameters.Add("@HerstellerID", SqlDbType.Int,4).Value = HerstellerID;
			DataSet dsHersteller = new DataSet();

			try
			{
				dsHersteller.Clear();
				sqlConnection1.Open();
				daHersteller.Fill(dsHersteller, "hersteller");
				sqlConnection1.Close();
			}
			catch (Exception ex)
			{
				MessageBox.Show("Fehler " + ex.Message, "Fehler", MessageBoxButtons.OK,MessageBoxIcon.Error);
			}
			DataTable dtHersteller = dsHersteller.Tables["hersteller"];
			DataRow aRowHersteller = dtHersteller.Rows[0];
			string strhersteller = aRowHersteller["Hersteller"].ToString();

			// TypID umwandeln in HardwareTyp
			
			SqlDataAdapter daHardwareID = new SqlDataAdapter("SELECT hardWareTyp FROM hardtyp WHERE HWID = @TypID", sqlConnection1);
			daHardwareID.SelectCommand.Parameters.Add("@TypID", SqlDbType.Int,4).Value = TypID;
			DataSet dsHardwareID = new DataSet();

			try
			{
				dsHardwareID.Clear();
				sqlConnection1.Open();
				daHardwareID.Fill(dsHardwareID, "hardtyp");
				sqlConnection1.Close();
			}
			catch (Exception ex)
			{
				MessageBox.Show("Fehler " + ex.Message, "Fehler", MessageBoxButtons.OK,MessageBoxIcon.Error);
			}
			DataTable dtHardwareID = dsHardwareID.Tables["hardtyp"];
			DataRow aRowHardwareID = dtHardwareID.Rows[0];
			string strtyp = aRowHardwareID["hardWareTyp"].ToString();
			
			// Füllen der Textfelder
			textBox3.Text = strhersteller;
			textBox4.Text = strtyp;

			
		
		}

Mir kommt es sehr aufwendig vor, hab ich viel Unnötiges Programmiert? Bin ja noch totaler anfänger *g*

Und zum Schluss, noch ein Bild wie das ganze aussieht

Thema: myCSharp-Such-Plugin für Mozilla Firefox
Am im Forum: Ankündigungen

Danke fürs testen, wollte es gestern Abend noch schnell auf meinem mini testen, war aber dann doch zu müde

MFG

Thema: Problem mit MSSQL und C#...
Am im Forum: Datentechnologien

Danke jetzt funktioniert es...eigentlich ganz einfach, aber irgendwie bin ich wohl zu blöd für die Onlinehilfe...

Thema: Problem mit MSSQL und C#...
Am im Forum: Datentechnologien

Funktioniert leider nicht. Bekomme folgende Fehlermeldung:
In der Try Catch:
Fehler Falscher Syntax in der nähe des LIKE Schlüsselwortes

In VB:
Eine nicht behandelte Ausnahme des Typs 'System.ArgumentException' ist in system.windows.forms.dll aufgetreten.

Zusätzliche Informationen: Untergeordnete Liste für das Feld 'mitarbeiter' konnte nicht erstellt werden.

MFG

Thema: myCSharp-Such-Plugin für Mozilla Firefox
Am im Forum: Ankündigungen

Funzt es auch mit Firefox auf dem Mac?

Thema: Problem mit MSSQL und C#...
Am im Forum: Datentechnologien

Hi ich hab folgendes Problem.

Ich hab eine SQL Tabelle mit Mitarbeitern, diese sollen in einem Datagrid ausgegeben werden, das Funktioniert auch so weit.
Allerdinsg möchte ich nur bestimmte Datensätze ausgeben. Dazu habe ich mir ein Textfeld gemacht wo man den Nachnamen angeben kann. Danach mache ich ein SQL Command und lade die daten in mein Dataset.
Wenn ich jetzt den ganzen Nachname angebe funktioniert das auch sehr gut, nur soll es auch funktionieren wenn ich nur den halben Namen angebe.
Leider bekomm ich das mit der Wildcard nicht auf die reihe.

Hier mal ein wenig Code

 
{
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM mitarbeiter WHERE Nachname = @Nachname", sqlConnection1);
			da.SelectCommand.Parameters.Add("@Nachname", SqlDbType.VarChar,30).Value = nachname.Text;
			DataSet ds = new DataSet();
			try
			{
				
				sqlConnection1.Open();
				da.Fill(ds, "mitarbeiter");
				da.Fill(dsmitarbeiter, "mitarbeiter");

				sqlConnection1.Close();
			
			
			
			}
			catch (Exception ex)
			{
				MessageBox.Show("Fehler " + ex.Message, "Fehler", MessageBoxButtons.OK,MessageBoxIcon.Error);
			}

			dataGrid1.SetDataBinding(ds, "mitarbeiter");
					
		}


Hoffe ihr könnt mir helfen.

MFG

Thema: UpdateCommand wird nicht ausgeführt?
Am im Forum: Datentechnologien

Am einfachsten ist es wenn du den DataAdapter per Assi machen lässt, der erzeugt dir dann die richtigen Commands.

Wie genau meiner Aussieht kann ich im Moment nicht sagen, da ich erst in 2 Wochen wieder an meiner Entwicklungsumgebung im Betrieb kann. Im Moment hab ich nämlich frei und bereite mich auf meine Microsoft Prüfung zum MCSA vor (70-290 falls es dir was sagt).

MFG

Thema: UpdateCommand wird nicht ausgeführt?
Am im Forum: Datentechnologien

@ Janos
Hi ich hatte das gleiche Problem, nur mit MSSQL und C#.

Ich habe mir eine SQLConnection geschrieben und hab über den Assi ein SQLDataAdapter erstellt, danach habe ich mir ein DataSet geschrieben. Ich konnte wunderbar Daten in die Datenbank schreiben, nur änderungen und löschanfragen wollte er nicht bearbeiten. Habe mit dem Comandbuilder gearbeitet, hat alles nix genutzt.

Mein Problem war das ich kein Primärschlüssel in der Tabelle die ich bearbeiten wollte gesetzt habe. Danach hat es ohne Probleme geklappt.

Hast du ein Primärschlüssel vergeben?

MFG

Thema: Daten im Dataset filtern
Am im Forum: Datentechnologien

Zitat
Original von blackcoin
kannste nicht einfach 'like' verwenden?

mfg

Nee funzt leider nicht, habe ich auch schon versucht. MFG

Thema: Daten im Dataset filtern
Am im Forum: Datentechnologien

Zitat
Original von blackcoin
hi

natürlich hättest du die methoden ausimplentieren müssen

mfg

Hab ich Versucht, aber entweder bin ich zu unerfahren...oder ich hab mich mal wieder vertippt. Passiert mir voll oft...

EDIT:

Eine Frage hätte ich noch, wie bau ich ne Wildcard in die Abfrage ein. Im moment muss man den korrekten und vollen Nachname Tippen, damit es zu einem Sucherfolg kommt. Das ist nicht gerade komfortabel.

MFG

Thema: Daten im Dataset filtern
Am im Forum: Datentechnologien

Sorry leute, hat sich erledigt. Ich hab mich nur beim Parameternamen vertippt. Jetzt geht es. MFG

Thema: Daten im Dataset filtern
Am im Forum: Datentechnologien

@ blackcoin
Leider klappt so gar nix...

Ich habs jetzt mal so versucht (so stand es in einem Buch)...


private void button1_Click(object sender, System.EventArgs e)
		{
			SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM mitarbeiter " +
				"WHERE Nachname = @Nachmame", sqlConnection1);
			da.SelectCommand.Parameters.Add("@Nachname", SqlDbType.Char).Value = nachname.Text;
			DataSet ds = new DataSet();
			try
			{
				
				sqlConnection1.Open();
				da.Fill(ds, "mitarbeiter");
				

				sqlConnection1.Close();
			}
			catch (Exception ex)
			{
				MessageBox.Show("Fehler " + ex.Message, "Fehler", MessageBoxButtons.OK,MessageBoxIcon.Error);
			}

			dataGrid1.SetDataBinding(ds, "mitarbeiter");
				
		}

Allerdings bekomm ich so ne Fehlermeldung das die Variable '@Nachname' deklariert werden muss.

Wie mach ich das? Leider steht das nämlich nicht im Buch oder ich bin zu blind.

MFG

Thema: Daten im Dataset filtern
Am im Forum: Datentechnologien

Zitat
Original von dArignac
Na du machst entsprechend deiner Parameter eine neue Anfrage an die DB.
Direkt im DS filtern geht nicht.

Und wie mach ich das? Sorry kenn mich noch nicht wirklich mit VS2003 und C# aus.

Thema: Daten im Dataset filtern
Am im Forum: Datentechnologien

Hi Leute ich bin neu und noch recht unerfahren und ich habe ein Problem - wer hätte das Gedacht

Ich habe eine MSSQL Datenbank (MSDE) und möchte von der Datenbank nur bestimmte Daten in ein Dataset holen.

Konkret habe ich eine Mitarbeiter Tabelle in der Ein Index (Primärschlüssel) und der Vor- und der Nachname drin stehen. Ich möchte nun eine Suchmöglichkeit Programmieren die nach dem Nachnamen sucht (den man in ein Textfeld eingibt.
Das ganze soll dann in einem Datgrid angezeigt werden (Databinding mit VS2003 auf dem Datagrid eingestellt)

Ich hoffe jemand kann mir helfen.

MFG