Laden...

Forenbeiträge von sra Ingesamt 230 Beiträge

02.04.2006 - 21:32 Uhr

Arbeitest du mit vs2003 oder 5? Bei mir (unter vs2005) geht es nicht. Auch nicht, wenn ich den Namen manuell ins Dateifeld eingebe (mit oder ohne .dll).

Oder kannst du mal den genauen Pfad posten? Geht es nach dem \GAC\ noch weiter?

02.04.2006 - 20:00 Uhr

hm... Was heisst das nun direkt für mich?
Wenn ich unter Add References -> Browse einen Eintrag von c:\Windows\assembly (oder auch \WINNT\ unter 2000) auswählen will, passiert gar nix und im Ordner selber habe ich keinen Unterordner (obwohl ich bei Google ab und zu einen Pfad c:\Windows\assembly\GAC\ ...usw... gefunden habe. Ich konnte jedoch nie darauf zugreifen auf meinem System.

02.04.2006 - 17:51 Uhr

Danke mal soweit Marcel

Die Sache ist die, dass bei C:\WINNT\assembly soweit ich weiss nur die Assemblies angezeigt werden, die auf dem System installiert sind (was aber schon mal ein enorm gutes Zeichen ist 🙂). Allerdings kann man sie von da nicht als Ressource in ein VS Projekt einfügen (Sie haben da auch nicht die Erweiterung .dll). Leider sehe ich in den Properties dieser Assemblies keinen Pfad wo die Datei wirklich liegt 😠

30.03.2006 - 21:03 Uhr

Hallo

Ich hab es jetzt nochmals mit allen Mitteln versucht, habe es jedoch nicht geschafft 🙁
Die Installation von den Assemblies scheint ok zu sein. Es kommt zwar keine Meldung am Schluss der Installation, dass alles gut ging, aber unter Systemsteuerung -> Software wird es angezeigt, und ich kann es wieder fehlerfrei entfernen.

Aber ich finde weder die DLLs auf meinem PC, noch find ich es bei den COM Verweisen (und in der Office 11.0 Library ist es nicht drin).

Kannst du das bei dir vielleicht mal versuchen? Vielleicht ist es was kleines, was ich einfach nicht weiss wie man speziell vorgehen müsste.

Wär verdammt nett - müsste eigentlich schon damit programmieren.

Gruss
sra

29.03.2006 - 23:36 Uhr

Gibt es denn einen Standartspeicherplatz für die? Ich konnte bei der Installation nichts angeben.

29.03.2006 - 22:22 Uhr

Das ist es ja gerade - ich find den Verweis nirgends.
Aber ich werd morgen ma vs2005 installieren (hat ich eh schon lange vor) und ma weiterschauen.

29.03.2006 - 21:58 Uhr

*push*

mal im ernst. Weiss es niemand, oder lasst ihr euch nicht auf das Niveau runter? 🙂
Wär wirklich froh, wenn mir jemand helfen könnte.

Gruss
sra

29.03.2006 - 13:08 Uhr

Hallo

http://support.microsoft.com/?scid=kb;de;897646&spid=2529&sid=7
Diese Ressource möchte ich in meinem Projekt nutzen. Sie ermöglicht mir Zugriff auf Excel und insbesondere auf das Eventhandling von Excel. Nun kann ich aber mit dem Download von Microsoft nichts anfangen 😠

Ich habe die Dateien extrahiert, habe danach die .msi Datei ausgeführt und es hat unter Systemsteuerung -> Software einen Eintrag für die Primary Interop Assemblies gegeben. Wie kann ich das nun in meinem VS nutzen?

Wenn ich einen Verweis einfüge, dann finde ich es weder bei den .net Komponenten, noch bei denen von COM. Auch sonst kann ich nicht auf die Microsoft.Office Namespaces zugreifen.

Weiss jemand was ich tun muss?

28.03.2006 - 14:58 Uhr

Das klingt schonmal recht gut!
Nur eine kleine, peinliche Frage hätt ich da noch. Wie kann ich das einsetzen?
Ich habe die Exe heruntergeladen, extrahiert und danach die Msi-Datei gestartet. Es macht mir zwar in Systemsteuerung -> Software einen Eintrag, aber ich kann im VS nicht darauf zugreifen, und ich finde es auch nicht in den COM Verweisen.

28.03.2006 - 10:54 Uhr

OK - Ich habe nun schon recht viel gemacht, aber vor dieser Interaktivität zwischen dem User und Excel hab ich mich bisher gedrückt.

Ich habe mir nun ein bisschen Gedanken darüber gemacht, und bin zum Schluss gekommen, dass es für den User am einfachsten (weil intuitivsten) ist, wenn er die Zellen im Excel markieren muss. Das heisst, der User hätte mein Tool geöffnet, das im Assistentenmodus läuft (Wizardmässig), und im Hintergrund ist die Datei sichtbar in Excel geöffnet, welche er konvertieren will. An einer bestimmten Stelle sagt dann der Wizard sowas wie "Markiere nun die Zeile/Spalte, in der die Daten liegen". Der User klickt auf weiter und der Assistent verschwindet, kommt aber wieder zum Vorschein, sobald der User eine Zeile/Spalte in Excel markiert hat.

Meine Frage. Inwiefern ist dies genau so möglich? Muss ich dafür zusätzlich eine Excel Toolbar erstellen, die dann merkt wann was markiert ist und meinen Assistenten (das eigentliche Tool) benachrichtigt?

Was ich jetzt mache ist eigentlich nur noch den Aufwand abschätzen (habe leider nur eine sehr begrenzte Zeit zur verfügung). Ist der Aufwand zu gross, dann werde ich das mit einem Datagrid realisieren, wie bereits weiter oben im Thread steht.

Wenn jemand eine Idee hat wäre ich sehr froh diese zu hören 🙂
Danke

24.03.2006 - 13:22 Uhr

Hallo

Ist es möglich Formelemente (Labels, Pictureboxen, Textboxen, etc) in ein Array zu stecken? Ich bin gerade an einem Tool, dass im Assistentenmodus ablaufen soll. Das heisst ich habe nur ein Formular und 2 Buttons (weiter, zurück) und all der Kontent ist in Panels, die ich ein und ausblende.

Nun dachte ich mir, es wäre wohl am elegantesten, hätte ich ein Array mit den Panels drin. Dann müsste ich bei den Buttons nur noch jeweils das nächste (oder vorhergehende) Arrayelement auf Visible = true machen und schon hätte ich das 🙂

Geht das? Wenn ja, dann wie? Kann ich einfach eine ArrayListe mit den Formelementen füllen? Antstatt this.pnlStart = new System.Windows.Forms.Panel(); hätte ich dann this.m_Controls.Add(new System.Windows.Forms.Panel()); So oder ähnlich stelle ich mir das vor.

Irgendwelche Vorschläge?

24.03.2006 - 13:14 Uhr

Das würde natürlich schon gehen. Das Problem dabei ist, dass schlussendlich nicht ich das Tool bedienen muss, sondern einige Angestellte der Firma. Das heisst dann einen zusätzlichen Aufwand für diese, indem sie die Exceldateien immer erst im ASCII Format abspeichern müssen (Es sei denn man könnte das automatisieren).

Ich werde mal in die Richtung suchen, ob Excel bereits von sich irgendwelche Möglichkeiten zur Interaktion bereitstellt.

24.03.2006 - 09:55 Uhr

Kennt denn jemand gerade eine Klasse die ich brauchen kann (muss nichts opensource mässiges sein - ich kann hier im Geschäft Excel voraussetzen), oder hat einen Ansatz für mich? Ich wär auch nur schon für ein paar Stichworte froh, nach denen ich dann gut forschen kann 🙂

23.03.2006 - 11:55 Uhr

Man kann also eine Excel Tabelle auch ohne Excel öffnen und darstellen?

23.03.2006 - 10:09 Uhr

Hallo

Ich bin gerade dabei für die Firma ein Tool zu schreiben, das spezifisch formatierte Excel Dateien in ein Einheitsformat umwandelt (CSV). Die Schwierigkeit besteht darin, dass die Excel Dateien immer ein bisschen anders aussehen. Einmal ist das Datum oben rechts, dann wieder unten und dann hat es in einem Excelfile auch mehrere Daten in einer Reihe. Das selbe gilt für Zählernamen, die dazugehörigen Einheiten (W, kW,...).

Alles in allem habe ich also ein Tool, das die Exceldatei ganz sicher nicht vollautomatisch konvertieren kann, weil man einfach praktisch nichts voraussetzen kann in den Exceldateien. Was ich nun machen will ist eine Art interaktion zwischen meinem Tool, dem User und Excel. Am liebsten hätte ich es, wenn der user im Excel die Zellen mit dem Datum markieren kann (mein Tool würde in dieser Zeit ausgeblendet), und dannach wieder in mein Tool zurück kommt (evt. automatisch nach dem markieren der Zelle, oder nach betätigen eines Buttons im Excel).

Meine Frage ist nun: Wie ist so etwas möglich (ist es überhaupt möglich?). Muss man evt. noch ein zweites Tool machen, das sich als Toolbar in Excel einklinkt und die Kommunikation zwischen meinem Tool und Excel übernimmt? Und insbesondere bezieht sich meine Frage auch darauf, ob und wenn wie man markierte Zellen in Excel auslesen kann.

Wäre wirklich froh um einige Inputs... habe in diese Richtung noch keine Erfahrung.

Danke

15.02.2006 - 10:29 Uhr

yeah - Vielen Dank 🙂
werds mir gleich anschauen!

14.02.2006 - 21:20 Uhr

Ich werd mir das mal überlegen Herbivore - danke... meld mich wohl morgen mit dem nächsten Problem 😁

Zu dem lernen-Ding kann ich sagen, dass ich leider im Geschäft bisher nur mit vb und asp zu tun hatte, und dass ich in der Schule speziell im objektorientierten Programmieren sehr gute Noten habe. Dazu kommt, dass wir noch ein Semester haben bis die Lehre fertig ist (3 Lektionen programmieren die Woche), und wir in ca. 2 Wochen mal mit Designpatterns anfangen werden. Von da her finde ich das schon schlecht.

14.02.2006 - 14:42 Uhr

Das muss so sein, weil ich eine Klasse habe, die den ganzen Gameloop managed. Das heisst in ihr ist der Timer, der die Objekte in seinem Event bewegt, in ihr wird der Level instantiert (und in diesem wiederum die Levelobjects...).

Ich denke es ist nur sauber getrennt, wenn ich den ganzen Code nicht im Code des Fensters habe. Oder was meint ihr?

14.02.2006 - 14:08 Uhr

Is schon traurig, was man als "Programmierlehrling" bis ins 4te Lehrjahr gelehrt bekommt 🙂

Ich werd mich mal an deinen Code wagen, obwohl er für mich wirklich eine Nummer zu gross aussieht (nur schon die Rekursion). Aber im Moment quält mich noch eine andere, mit Sicherheit recht einfache Frage.

Im onPaint des frmMain hab ich den Code zum Darstellen meiner Objekte (dieses mal alle und nicht nur die mit dem Interface 😄). Mein Problem ist, dass ich von einem anderen objekt aus dieses onPaint Ereignis auslösen muss. Ich dachte das geht ganz einfach, wenn ich dem Objekt eine Referenz auf die frmMain mitgebe, und dann vom Objekt aus .Refresh() auslöse. Leider ist dem nicht so (kein Kompilierfehler, keine Exception).

Wie kann ich das bewerkstelligen?

14.02.2006 - 13:46 Uhr

hm... dann habe ich foreach nicht richtig verstanden? 😠

Dann mach ich es mal ganz banal. Ich habe in einer ArrayList einige Objekte, die das Interface implementieren, und einige die dies nicht tun. Der Unterschied besteht in erster Linie darin, dass IMoveable Objekte eine Methode move() haben, welche ihre Koordinaten manipuliert. Nun hab ich einen Timer, welcher alle x ms bei allen beweglichen Objekten diese Methode aufrufen soll, damit diese ihre neue Position berechnen und danach darstellen.

Komischerweise geht es mit dem is Operator in der for schleife. Allerdings bin ich auch der Meinung, dass dies nicht wirklich eine schöne Lösung ist.

14.02.2006 - 13:34 Uhr

Danke - ich werds mal probieren. Allerdings denke ich nicht, dass es damit geht, da es ja in der foreach auch nicht geht. Hat jemand eine Idee, warum meine foreach nicht geht? Ihr könnt davon ausgehen, dass Objects gefüllt ist mit mehreren Objekten, wovon mindestens 3 das Interface IMoveable implementieren und vom Typ Turkey sind.

Ich hab echt keine Idee mehr

14.02.2006 - 13:06 Uhr

Wie kann ich denn rausfinden, ob ein Objekt von einem bestimmten Typen ist (ohne es mit einem anderen Objekt zu vergleichen)? Habe nur die Stringlösung gefunden 😠

Zum anderen: Die ArrayList ist nicht leer - es sind alle Objekte vorhanden. In die Schleife komme ich nur im ersten Codebeispiel nicht, da dort die Abfrage ja bereits in der Schleife drin ist (foreach). Im zweiten Beispiel mit der for Schleife komme ich rein, und mache ich direkt in der for-Schleife ein MessageBox.show(), der mir den Typen des jeweiligen Objektes ausgibt, dann kommt wie gesagt dieser Typ vom der Turkeyklasse. Durch die if Abfrage schafft es das Objekt trotzdem nicht.

btw. Ist es auch möglich abzufragen in einer if Anweisung, ob ein Objekt ein bestimmtes Interface implementiert?

14.02.2006 - 12:51 Uhr

Hallo

Ich bin gerade dabei ein kleines Spiel zu programmieren. Nun habe ich einen Timer gemacht, der bei jedem Tick für alle Objekte, die sich bewegen können (IMoveable) in einer ArrayList (Objects) die Methode move() aufzurufen, und danach die refresh() Methode des Fensters (ist bloss ein kleines Projekt und ich arbeite mit GDI+).

Mein Problem ist nun das Identifizieren von Objekten. Ich will eigentlich alle Objekte durchlaufen,welche das Interface IMoveable implementieren. Dazu habe ich folgenden Code:

foreach(IMoveable Object in this.m_Level.Objects)
			{
				Object.move();
			}

Aber irgendwie kommt er nie in zu dem Object.move(), da er gar nie in die Schleife fällt.

Dann hab ich mit der Klasse direkt (Turkey) und einer for Schleife probiert versucht:

for(int i = 0; i < this.m_Level.Objects.Count; i++)
			{
				if(this.m_Level.Objects[i].GetType().ToString() == "demGrenyBattle.Game.Objects.Turkey")
				{
					((Turkey)this.m_Level.Objects[i]).move();
				}

				this.m_Window.Refresh();
			}

Auch das funktioniert nicht, weil er kein einziges mal in die if Anweisung springt. Gebe ich aber über eine MessageBox in der for Schleife den Typen des jeweiligen Objektes aus, dann gibt er mir durchaus auch "demGrenyBattle.Game.Objects.Turkey" aus.

Hat jemand eine Idee? Bin wirklich seit ner halben Stunde am probieren.

01.02.2006 - 10:47 Uhr

Dann ist also das new-statement quasi wie ein Methodenaufruf, der einen Rückgabetypen gibt (ein Objekt der jeweiligen Klasse), welchen man aber nicht zwingend aufgreifen muss?

01.02.2006 - 09:55 Uhr

Hallo

Ich befasse mich gerade mit Threading. Nun gibt es ja die Möglichkeit einen ThreadStarter zu initiieren, und diesen dann dem eigentlichen Thread zu übergeben:

foobar myFoo = new foobar();
ThreadStart myTS = new ThreadStart(myFoo.doSomething);
Thread myThread = new Thread(myTS);

Auf einer anderen Page habe ich dafür den Syntax gefunden:

new Thread(new ThreadStarter(myFoo.doSomething)).start();

Das funktioniert tiptop - die Frage ist nur: Warum?

Ich dachte, dass jede Variable einen Namen haben muss. wie soll man denn nachträglich auf den Thread zugreifen können? Wieso geht das?

23.01.2006 - 14:38 Uhr

Danke - hattest recht.

Ich hab mich einfach so auf das Workerobjekt fokusiert, dass ich das gar nicht sah

23.01.2006 - 12:59 Uhr

Das ist ja beinahe schon erschreckend einfach - Danke 😁

Einen Fehler habe ich jedoch noch, den ich im Moment nicht nachvollziehen kann. Und zwar bring er mir eine NullReferenceException, sobald ich versuche einen Worker einem Boss zuzuweisen (Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt).

Ich hatte solche Fehler auch schon, und die kommen mir jeweils, wenn ich auf ein Objekt zugreifen will, das es gar nicht gibt. In diesem Fall bin ich mir jedoch fast sicher, dass es das Objekt gibt.

Mainmethode:

CBoss myBoss = new CBoss("Unternährer", "Florian", DateTime.Today);

// Worker definieren
CWorker myWorker1 = new CWorker("Portmann", "Natalie", DateTime.Today);
CWorker myWorker2 = new CWorker("Johansson", "Scarlett", DateTime.Today);

// Worker zu Boss
myBoss.RegisterWorker(myWorker1);
myBoss.RegisterWorker(myWorker2);

und die Methode RegisterWorker ist wie oben:

private ArrayList m_Worker;

public void RegisterWorker(CWorker Worker)
{
	this.m_Worker.Add(Worker); // hier ist der Fehler
	Worker.ReportProgress += new ReportProgressEventhandler(this.OnWorkerReportsProgress);
}

Meinst du, du kannst mir nochmal nen Tipp geben? 🙂

23.01.2006 - 12:30 Uhr

Ok - ich denke ich habe verstanden, was du meinst cmpxchg. Ich brauche in meiner CWorkerklasse eine Methode, die dann der Boss aufruft, und in welcher ich das Event definiere (bzw. die Methode, welche es auslösen soll).

Nun habe ich es aber so geändert, dass ich in der CBossklasse die Methode habe, um dem Boss einen Arbeiter zuzuweisen (siehe dazu auch Friedels Kommentar).

Würded ihr nun noch ein zusätzliches Event machen, das eintritt, sobald der Boss einen Worker hinzugefügt hat, und das im Worker dann ein neues Event macht? (Klingt recht kompliziert 😄)

public class CBoss : CPerson
{
	public CBoss(string Name, string Vorname, DateTime Geburtsdatum) : base(Name, Vorname, Geburtsdatum)
	{
	}

    private ArrayList m_Worker;

	public void RegisterWorker(CWorker Worker)
	{
		this.m_Worker.Add(Worker);
	}
}

public class CWorker : CPerson
{
	public CWorker(string Name, string Vorname, DateTime Geburtsdatum) : base(Name, Vorname, Geburtsdatum)
	{
		this.m_Timer = new Timer(3000);
		this.m_Timer.Elapsed += new System.Timers.ElapsedEventHandler(this.OnTimerElapsed);
	}

	public event ReportProgressEventhandler ReportProgress;
	public event ReportStatusChangeEventhandler ReportStatusChange;

	//private ArrayList m_Bosses;
	private System.Timers.Timer m_Timer;
	private EStatus m_Status;
	private byte m_WorkProgress;

	public void StartWork()
	{
		this.m_Timer.Start();
	}

	public void StopWork()
	{
		this.m_Timer.Stop();
	}

	private void OnTimerElapsed(object sender, ElapsedEventArgs e)
	{
		this.m_WorkProgress += 10;
		ReportProgressEventArgs m_e = new ReportProgressEventArgs(this.m_WorkProgress);
		ReportProgress(this, m_e);
	}
}
23.01.2006 - 12:12 Uhr

@Friedel - das habe ich inzwischen auch so programmiert. Es ist nun der Boss, der eine ArrayList seiner Worker hat (und nicht wie bisher umgekehrt). Im UML Klassendiagramm ist es zwar genau anders drin, aber es ist eh nur für die Schule, also was solls 😁

zu cmpxchg - ich werd das mal so probieren. Meld mich dann wieder.

23.01.2006 - 11:30 Uhr

Hallo

Ich habe gerade folgendes Problem. Ich habe eine Klasse CPerson und zwei daraus abgeleitete Klassen CBoss und CWorker. CWorker hat ein ArrayList, in dem alle ihm zugewiesenen Bosse aufgelistet sind. Ausserdem hat CWorker einen Timer, der alle 3 Sekunden (aber erst nach aufruf der Methode startWork() - wo ich den Timer starte) ein Event wirft.

In diesem Event setze ich die private Variable namens WorkProgress += 10. Gleichzeitig werfe ich einen anderen Event namens ReportProgress. Darin sollte ich alle Bosse (die ja in der ArrayList stehen) benachrichtigen, dass der Arbeiter gearbeitet hat.

Das Event ist soweit kreirt, und wird auch geworfen. Ich habe im Moment jedoch ein Blackout, was das Registrieren dieses Events beim Bossobjekt betrifft. Wie mache ich das???

Vielen Dank und guten Mittag 😁
sra

13.01.2006 - 16:33 Uhr

Hallo

Ich habe noch ne Frage bezüglich dem löschen von Objekten. Es sieht so aus, dass ich von einer Klasse einige Objekte in der Mainklasse instanziere. Diese werden in eine ArrayList gespeichert. Nun möchte ich eine Möglichkeit haben die Objekte zu löschen und zwar über das Objekt selbst.

Das heisst ich habe zb ein Objekt der Klasse Person welches ich myPerson nenne. Nun möchte ich also über myPerson.delete(); das Objekt loswerden.

Theoretisch müsste man ja nur den Verweis aus der ArrayList löschen (Da nur da eine Referenz auf das Objekt existiert). Wie kann ich das nun elegant (es muss ja immer elegant sein 😄) lösen? Kann ich mit Parent aus dem Personenobjekt irgendwie zu der mainklasse kommen?

Gruss
sra

13.01.2006 - 14:27 Uhr

Danke für eure Antworten. Ich arbeite leider (noch) unter vs2k3 (1.1), womit layoutpanels wegfallen. Ich werds nun mit den Anchors versuchen - das ist eine recht einfache Lösung wie ich finde.

13.01.2006 - 12:01 Uhr

Das Problem ist einfach, dass ich nachher mitten in meinem Formular quasi ein Loch habe, wenn ich das Ding einfach ausblende (unten und oben kommen noch weitere Elemente).

13.01.2006 - 11:21 Uhr

Hallo zusammen

Ich stehe gerade vor einem Problem, das einige von euch sicherlich auch schon hatten. Und zwar habe ich eine Klasse Person und eine davon abgeleitete Klasse Employee. Der einzige Unterschied besteht darin, dass Employee eine zusätzliche Property (Abteilung) hat.

Ich liste alle Objekte dieser zwei Klassen in einer Listbox auf dem Hauptfenster auf. Wenn man auf einen Eintrag doppelklickt, erscheint das dazugehörige Detailfenster.

Genau hier ist mein Problem. Klicke ich auf ein Employee-objekt brauche ich eine Textbox mehr als bei einer "normalen" Person. Gibt es eine elegante Möglichkeit eine solche Textbox beim Aufruf des Forms noch hineinzubasteln?

Vielen Dank für die Antworten
sra

20.12.2005 - 13:41 Uhr

Wieso sollen denn diese IDs in den Minusbereich hinauslaufen? Klar - so könnte man evt. Konflikte mit der "echten" ID des Primary Keys umgehen, aber ich will das Dataset ja irgendwann wieder in die DB zurücklesen.

Die eigentliche Frage ist also: wieso gibt er mir eine falsche Zahl (23), die bereits vorhanden ist. Wenn ich direkt an einen MSSQL Server ein INPUT mache und die ID einfach weglasse, so geht das ja auch und er generiert mir eine gültige ID.

btw. Chino ist mein Unterstift (Unterazubi für alle deutschen 😄)

13.12.2005 - 11:24 Uhr

kannst du mir verraten, wie der user sich anmelden soll, ohne die tastatur zu gebrauchen? 😁

12.12.2005 - 18:41 Uhr

ICH LIEBE SOLCHE FEHLER!!!!
danke vielmal - funktioniert perfekt

12.12.2005 - 17:20 Uhr

Wie kann ich den Insertstring am besten ausgeben (mit dem @IDs durch den jeweiligen Wert ersetzt)?

Wenn ich das sehen könnte, so könnte ich doch schon besser sagen was los ist.

12.12.2005 - 17:13 Uhr

ja - es sind alles ZAHLen (in Access), und als LongInteger definiert.

12.12.2005 - 16:57 Uhr

Also... Ich habe nun für jede Spalte in meiner DB meinem OleDbCommand ein Parameter hinzugefügt. Als Grösse habe ich jeweils 8 genommen, was meiner Meinung nach der Länge eines Long in Byte entspricht. Das Ganze sieht nun folgendermassen aus:

//SelectCommand für den DataAdapter definieren:
OleDbCommand cmd1 = new OleDbCommand("SELECT * FROM Fragenbogen", this.connUmfrage);
this.myDA.SelectCommand = cmd1;

//InsertCommand für den DataAdapter definieren:
OleDbCommand cmd = new OleDbCommand("INSERT INTO Fragebogen (ID, Alter, Geschlecht, Frage3, Frage4, Frage5A1, Frage5A2, Frage5A3, Frage5A4, Frage5A5, Frage5A6, Frage6, Frage7, Frage8, Frage9, Frage10, Frage11, Frage12)"
	+ " VALUES (@ID, @Alter, @Geschlecht, @Frage3, @Frage4, @Frage5A1, @Frage5A2, @Frage5A3, @Frage5A4, @Frage5A5, @Frage5A6, @Frage6, @Frage7, @Frage8, @Frage9, @Frage10, @Frage11, @Frage12)", this.connUmfrage);

cmd.Parameters.Add("@ID", OleDbType.Integer, 8, "ID");
cmd.Parameters.Add("@Alter", OleDbType.Integer, 8, "Alter");
cmd.Parameters.Add("@Geschlecht", OleDbType.Integer, 8, "Geschlecht");
cmd.Parameters.Add("@Frage3", OleDbType.Integer, 8, "Frage3");
/* [...] */
cmd.Parameters.Add("@Frage12", OleDbType.Integer, 8, "Frage12");

this.myDA.InsertCommand = cmd;

Leider habe ich immernoch die genau selbe Exception, die mir sagt "Syntax Error in INSERT INTO Statement".

Hat jemand noch eine Idee? Muss das heute noch fertig kriegen 😠

12.12.2005 - 16:32 Uhr
  cmd = new OleDbCommand("INSERT INTO Customers (CustomerID, CompanyName) " +
                       "VALUES (@CustomerID, @CompanyName)", conn);

  cmd.Parameters.Add("@CustomerID", OleDbType.Char, 5, "CustomerID");

muss ich nun für jeden meiner 18 Spalten einen solchen Parameter Adden?
Und dann habe ich noch ein Problem mit der Grösse (5 in diesem Beispiel). Ich sehe zwar ein, wie die Grösse bei varchars und so gemacht wird, aber bei Zahlen (meine DB besteht nur aus Zahlen), habe ich keine Ahnung wie gross die sind (long Integer).

12.12.2005 - 16:18 Uhr

dann stimmt also etwas mit meinem CommandBuilder nicht?

12.12.2005 - 16:11 Uhr

Ich hab das jetzt so nach dem Beispiel gemacht: http://www.csharp-station.com/Tutorials/AdoDotNet/Lesson05.aspx

bekomme aber immer eine Exception "Syntax Error in Insert Into Statement".

Selber habe ich nirgends ein Insert Into Statement definiert, was mich ein bisschen verunsichert. Oder macht das ADO.NET von selbst?

mein Code:

private void Form1_Load(object sender, System.EventArgs e)
{
	this.dsUmfrage = new DataSet();
	this.connUmfrage = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Umfrage.mdb");

	try
	{
		this.connUmfrage.Open();
		this.myDA = new OleDbDataAdapter("SELECT * FROM Fragenbogen", connUmfrage);
		OleDbCommandBuilder myCom = new OleDbCommandBuilder(this.myDA);
		this.myDA.Fill(this.dsUmfrage, "Umfrage");
	}
}

und

private void btnExit_Click(object sender, System.EventArgs e)
{
	try
	{
		this.connUmfrage.Open();
		this.myDA.Update(this.dsUmfrage, "Umfrage");
	}
}

Wie gesagt habe ich irgendwie das Gefühl, ich müsste das Insert Into Statement selber generieren - nur... wie mache ich das?

28.11.2005 - 15:39 Uhr

hehe - merci vellmol 🙂

28.11.2005 - 15:14 Uhr

Hallo zusammen

Ich habe ein mittelschwer peinliches Problem. Und zwar habe ich ein Dataset, das ich mittels dsUmfrage.Tables["Umfrage"].Rows.Add(iAllData); fülle.

Leider finde ich nicht heraus, wie ich die Daten, welche nun in meinem DataSet sind wieder in die DB kriege!!!

Kann mir jemand helfen?

Gruss
sra

22.11.2005 - 11:57 Uhr

wie mache ich denn das am besten?

22.11.2005 - 10:38 Uhr

Hallo zusammen

Ich habe das Problem, dass ich eine Combobox mittels einer Datasource direkt von der Datenbank (bzw. vom DataSet) fülle. Ich stelle somit alle Kategorien dar, nach welchen getrennt angezeigt werden kann.

Nun muss ich aber auch noch einen Eintrag "Alle" haben, um alle Einträge anzuzeigen. Leider kann ich der Combobox keine Items mit Item.Add() übergeben, da das nicht geht wenn es über ein Datasource gefüllt ist.

Gibt es eine Möglichkeit das trotzdem zu tun?

21.11.2005 - 13:36 Uhr

lol - und ich dachte HiddenColumn sei ein allgemeiner Begriff für versteckte Spalten o_O

Vielen Dank 😁

21.11.2005 - 13:17 Uhr

diese Zeile ergibt bei mir eine ArgumentException "HiddenColumn ist keine DataColumn oder DataRelation für die Tabelle Hardware."

((int)this.myDS.Tables["Hardware"].DefaultView[this.myDatagrid.CurrentRowIndex]["HiddenColumn"]))

Mache ich etwas falsch?

btw. ich könnte mir vorstellen, dass das so nur geht, wenn ich mittels DefaultView.sort oder so arbeite. Ich meine mit dem Sortieren eigentlich das sortieren, welches vom Datagrid bereitgestellt wird, wenn man auf den Header klickt.