Zum Inhalt springen

oxygen

Mitglieder
  • Gesamte Inhalte

    112
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von oxygen

  1. @Iceman346: könntest du mir da mal ein Codesegment als Beispiel, wie man direkt das DataSet verändert, posten? Hab ein Fehlerhandling eingebaut, es wird aber keine Exception ausgelöst. Ich glaube so langsam, dass ich das gleiche Problem habe, das Iceman346 beschrieben hat. Ansonsten hab ich mir auch schon überlegt, testweise die DB mal auf einen MSSQL-Server aufzusetzten und zu kucken, wie sich das ganze da verhält. Allerdings hängt da ein ziemlicher Rattenschwanz dran und nach 8h Informatik auf der Arbeit ist die Motivation nicht mehr so groß, deshalb wolle ich das erst als letzte Möglichkeit machen.
  2. Wie oben schon gesagt funktioniert das Auslesen komplett -> die Select geht. Edit: und Werte sind auch Vorhanden, sie ist also nicht leer.
  3. Also so wie ich das gelesen hab, gibt die Funktion die Anzahl der veränderten Zeilen zurück. Ausserdem hat sich auch nichts geändert, wenn ich die Datenbank anschau.
  4. Damit ihr wenigstens noch Infos bekommt, damit ihr mir vielleicht was sagen könnt: Hier der komplette Code der Form, in der ich in die DB schreiben will. Auf dem Form sind eingabe Felder (Textboxen, ComboBoxen, CheckBoxen, DateTimePicker), die über die Eigenschaften an die DataBindingSource angeknüpfts sind. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace FWVerwaltung { public partial class Form10 : Form { public Form10() { InitializeComponent(); } private void Form10_Load(object sender, EventArgs e) { // TODO: Diese Codezeile lädt Daten in die Tabelle "feuerwehrverwaltungaccess2000DataSet.persönlich". Sie können sie bei Bedarf verschieben oder entfernen. this.persönlichTableAdapter.Fill(this.feuerwehrverwaltungaccess2000DataSet.persönlich); // TODO: Diese Codezeile lädt Daten in die Tabelle "feuerwehrverwaltungaccess2000DataSet.dienstlich". Sie können sie bei Bedarf verschieben oder entfernen. this.dienstlichTableAdapter.Fill(this.feuerwehrverwaltungaccess2000DataSet.dienstlich); } private void button1_Click(object sender, EventArgs e) { int anzahlp,anzahld = 0; persönlichBindingSource.EndEdit(); dienstlichBindingSource.EndEdit(); anzahlp = persönlichTableAdapter.Update(feuerwehrverwaltungaccess2000DataSet.persönlich); MessageBox.Show(anzahlp.ToString()); anzahld=dienstlichTableAdapter.Update(feuerwehrverwaltungaccess2000DataSet.dienstlich); MessageBox.Show(Convert.ToString(anzahld)); } } } Ich bin noch nicht dazu gekommen, irgendwas zu überprüfen oder zu überarbeiten, da ich gestern ein Dualstudium angefangen habe und daher schon im Betrieb genügend mit Informatik zu tun hab. Muss mich da erst mal n bisschen dran gewöhnen. Vielleicht kann ich ja am Wochenende mal eure Tips anwenden. Trotzdem vielen Dank und Gruß
  5. Bewusst nutze ich kein ODBC. Ich habe die Datei über eine DataSource eingebunden, diese generiert mir dann ja Table Adapter und das ganze drum herum, höchsten die macht standardmäßig ODBC. Code kann ich mehr Posten, allerdings sitze ich grade an einem anderen Rechner, mach ich aber ASAP, genau so, wie die Debugger-Meldungen nochmal anzuschauen, ist mir bis jetzt noch nichts aufgefallen. Auf jeden Fall schonmal Danke für den Tip, wo ich noch schauen sollte.
  6. ich verwende dafür immer gern die Funktion convert.toDatentyp(Variable). Funktionierte bis jetzt immer einwandfrei mit vielen Datentypen.
  7. Hallo, wie schon des Öfteren hab ich mal wieder Probleme mit dem Thema C# und Access. Diesmal ist es folgendes: Ich sitze (noch immer) an meinem Projekt "Feuerwehrverwaltung", was eine kleine Anwendung zum Verarbeiten von Personaldaten einer freiwilligen Feuerwehr werden soll. Nachdem ich festgestellt habe, dass ich lange Zeit die Access-Datenbank, die ich als Datenhaltung nutze, nicht lesen konnte, weil ich das Projekt in 64Bit kompiliert habe, habe ich nun das Problem in die andere Richtung: Ich kann Daten, die ich verändert habe, nicht in die DB zurück schreiben, sie werden einfach nicht angenommen. Hier der relevante Code dazu: private void button1_Click(object sender, EventArgs e) { int anzahlp,anzahld = 0; persönlichBindingSource.EndEdit(); dienstlichBindingSource.EndEdit(); anzahlp = persönlichTableAdapter.Update(feuerwehrverwaltungaccess2000DataSet.persönlich); MessageBox.Show(anzahlp.ToString()); anzahld=dienstlichTableAdapter.Update(feuerwehrverwaltungaccess2000DataSet.dienstlich); MessageBox.Show(Convert.ToString(anzahld)); } Die Datenbank besteht aus 2 Tabellen: persönlich und dienstlich. Wie zu sehen ist, habe ich jeweils einen Table Adapter. anzahlp und anzahld dienen lediglich dazu, schnell überprüfen zu können, ob die Daten geschrieben wurden. Nun zu den Rahmenbedingungen: Ich entwickle unter Visual Studio 2008 auf einem Rechner mit Windows 7 64Bit Home Premium, die Access-DB ist im Format 2000, aber unter 2007 geschrieben. Dies ist so, damit andere die DB selbst auch öffnen können, wenn nötig. Woran könnte das liegen, hab schon die Berechtigungen der Access-Datei überprüft, aber eigentlich hat jeder Schreibrechte. Habe vor Kurzem den Tipp bekommen, mal die Eigenschaften in Access zu überprüfen, hab da aber nix gefunden, was mich weiter gebracht hat. Ich hoffe, ihr könnt mir einen Tip geben, damit das Projekt endlich mal fertig wird, es fehlen wirklich nur noch die Funktionen einen Eintrag zu ändern und einen neuen Hinzuzufügen. Gruß und schonmal danke
  8. ich denke mal, dass du ein Programm hast, bei dem du keine Eingabe machst, oder? Wenn du vor den return 0 - Befehl in deiner Main-Funktion ein Getch() (benötigt conio.h, mein ich) anhängst, bleibt das Fenster so lange offen, bis du eine Taste drückst. Ich hoffe, ich hab dein Problem richtig eingeschätzt und das mit der Bibliothek noch richtig im Kopf.
  9. oxygen

    Aus C# Xml Serialisieren

    Das ist normales Verhalten der Serialisier-Funktion. Ich hab das in nem Projekt so gelöst: Beim Start alles in ein Array des Objekts deserialisiert, dabei den Index des Arrays mitgezählt. Beim Speichern das neue Objekt in den nächsten freien Index gesteckt und dann das komplette Array serialisiert. Ist zwar etwas ressourcenaufwengiger als nur das neue Objekt irgentwie zu serialisieren, aber für meine Zwecke hat's gereicht.
  10. Da bei mir eine Milcheiweis-Allergie festgestellt wurde, trinke ich meinen Kaffee nur mit etwas Zucker/Süßstoff. Irisch (mit Whiskey) mag ich ihn auch sehr, aber das ist die Ausnahme, also wirklich nur dann, wenn ich sowohl Koffein brauch als auch Alkohol will zum Beispiel auf Abifahrt war das sehr wilkommen. Da ich ja wie oben schon gesagt keine Milch rein tun kann, hat sich meine Vorliebe für Espresso noch gesteigert, schmeckt einfach nicht so verwässert, ansonsten eben schwarz gesüsst oder, aber nur ganz selten, mit Sojamilch.
  11. genau deshalb haben wir uns ja dagegen und für david.fx entschieden, der pop3 von haus aus kann und nicht so Wartungsintensiv ist. Nen Verteiler brauchen wir halt und mit Hamster bzw. mittlerweile Public Share Folder, wie wir momentan fahren hat das so langsam einfach keinen Wert mehr.
  12. Zerreist mich jetzt nicht in der Luft, wenn es doch nicht stimmen sollte, aber meines Wissens nach funktioniert es nicht, dass du mit Exchange mails vom Server des Providers abholst, weil Exchange kein POP3 unterstützt. Sind grade im Planungsbüro meines Vaters (6 Arbeitsplätze) dabei, das Neztwerk und den Mailverteiler neu aufzuziehen und haben uns genau deshalb gegen Exchange entschieden, da wir einen eigenen Mailserver laufen lassen müssten, was Exchange zwar kann, aber dafür eine statische Internet IP und einiges an Wartungszeit benötigt. Haben uns deshalb für David.fx von ToBit entschieden. Wenn dieses Wissen veraltet ist, lassts mich wissen, aber von dem Untenehmen, das die Einrichtung vornimmt hab ich das so gesagt bekommen.
  13. Da du eine variable mit dem Typ int verwendest, sind Buchstaben nicht erlaubte Werte, deshalb steigt auch das Programm dann aus. Wenn ich jetzt nicht zu kompliziert denke, musst du den Fehler, der abgefeuert wird, wenn deine Eingabe einen ungültigen Wert hat, abfangen und entsprechend in deine Schleife springen. Schau mal Diesen Thread zum Thema an. Hab ihn nicht ganz durchgelesen, aber Klotzkopp hat da auch was interessantes Geschrieben:
  14. Hab da nen Fehler entdeckt: else if ( rechenart >= 4) { cout<< "Fehler,es sind nur Zahlen von 1-4 zulaessig!"<<endl; cout<<endl; continue; } Du nimmst hier die 4 auch mit wegen >=, allerdings willst du sie ja in deiner Auswahl mit drin haben, das = muss also weg. Ausserdem brauchst du die elseif nicht unbedingt, ne normale else reicht auch, da du ja vorher 1-4 Aussortierst und alle anderen Werte ungültig sind. Anders wär das jetzt, wenn du beispielsweise sagen willst, ob ein zu niedriger oder zu hoher Wert eingegeben worden ist. Um weiter zu Rechnen musst du vor der Eingabe der Zahlen verzweigen und überprüfen, ob du im ersten durchlauf bist oder nicht (wie von Klotzkopp beschrieben) und je nachdem entweder deinen bestehenden Ablauf verwenden oder nur eine Zahl einlesen und diese mit deinem vorigen Ergebnis verrechnen, also entweder mit der Variable ergebnis direkt rechnen, was aber unübersichtlich werden kann oder dein Ergebnis in eine der "zahl"-Variablen schreiben.
  15. Cool, danke für den Tip! Hört sich interessant an, vor allem, weil ichs im Moment nicht gebacken bekomm, aus dem Projekt in die DB zu schreiben, vielleicht hilft mir das ja weiter.
  16. Ja, habe ich, es war eine Lücke in meiner Denkweise beim Programmieren. Ich hab nämlich den Compilermodus auf Auto gestellt, der dadurch immer 64Bit compiliert hat. Leider kann Access aber nur 32Bit und deshalb war mein Programm inkompatibel zur Datenbank. Wenns daran liegt, solltest du in den Eigenschaften des Projektes einfach den Compiler auf 32Bit-CPU stellen müssen und es funktioniert.
  17. ich versteh c zwar nur aus meinen C++- und C#-Kenntnissen, aber das dürfte auch hier so sein: In ueberpruefeundsetze() analysierst du zwar die Eingabe, ob sie im erlaubten Bereich ist, verwendest sie dann aber nicht, um die Spalte auszuwählen, da hast du die Variable X. Ich denke mal, dass du deshalb immer den Stein in der ersten Spalte bekommst. Warum du allerdings nicht den Stein, sondern deine Eingabe ins Feld bekommst, hab ich auf die Schnelle nicht gefunden, wahrscheinlich schreibst du irgentwo ausversehen deine Eingabe in Spielstein, das hab ich dann aber auch übersehen.
  18. Das scheint ein bisschen komisch beschrieben zu sein in dem Buch, bzw. du hast was überlesen. Die erste hälfte des Code kommt in die Headerdatei deines Programms, also beispielsweise "Unit1.h". Die zweite hälfte ist deine eigentliche Funktion, die in die .cpp-Datei geschrieben und bei Funktionsaufruf ausgeführt wird. Der Zweck der ganzen Sache ist, dass man bei größeren Projekten gerne mit mehreren Units arbeitet, um eine bessere Strukturierung zu bekommen. Da die Units, würden sie nur aus .cpp's bestehen, nicht aufeinander zugreifen könnten, benötigt man die Header-Dateien. Diese werden in den anderen Units eingebunden und liefern damit dem Rest des Programms die Information, welche Funktion wie aufgerufen werden kann. Dafür benötigst du den Funktionstyp (int, void, float...), den Funktionsnamen und Parameter, sprich den Teil //Funktions-Prototyp.
  19. oxygen

    Datenmodellierung

    Mit deinem letzten Beitrag kann ich jetzt grade nicht so viel anfangen. Du musst auf jeden Fall irgentwo den direkten Vorgesetzten des betrachteten Wolfes speichern. Zur Aufgabe hab ich folgenden Tip: Ich würde Orte in einer Tabelle anlegen und in einer anderen die Wanderungen, die sich mit Start und Ziel auf die Tabelle mit den Orten beziehen. Dadurch vermeidest du redundante Eingaben.
  20. oxygen

    Datenmodellierung

    Wenn dus in der Aufgabe noch brauchst, nicht direkt ersetzen, aber sonst hast du das richtig verstanden. Ich würde eine Integer-Variable, beispielsweise wolfID, als Primärschlüssel verwenden. Du vergibst den Wölfen fortlaufende IDs und kannst dadurch jeden Wolf einfach und klar identifizieren.
  21. oxygen

    Datenmodellierung

    Wenn das in ner späteren Aufgabe verlangt ist, brauchst du spätestens da eine Variable für die Namen. Allerdings würde ich eher mit einer numerischen ID als Primärschlüssel arbeiten, da du unter anderen Nachteilen wie einer unübersichtlicheren Struktur auch unpraktische Sachen im späteren Arbeiten mit der DB hast. Zu nennen wäre hier, dass wenn du Namen als Primärschlüssel hast, du ständig Strings miteinander vergleichen musst, was mehr Schreibarbeit ist. Du hast ja schließlich in dem Fall mindestens 2 Tabellen (eine fürs Rudel, eine für die einzelnen Wölfe), die du verknüpfen musst.
  22. @de_lau0r: stimmt schon, es wird immer mehr, hab jetzt leider keine Statistiken oder so parat. Allerdings ist zumindest mir (leider) noch kein 64-Bit-Compilliertes Spiel untergekommen. Und mit dem von dir zitierten Satz wollte ich sagen, dass es daran liegt, dass 64Bit jetzt erst "in Mode" kommt, weil die Consumer-Prozessoren immer häufiger 64Bit können. Allerdings ist noch nicht die Masse da, dass es für Studios interessant wird, auch 64Bit-Versionen anzubieten/mit zu liefern. Vielleicht macht diese Erklärung besser meine Sicht der Sache deutlich.
  23. kann meinen Vorrednern zustimmen. Ich benutze Win 7 Home Premium 64Bit. Im alltäglichen Betrieb merkt man eigentlich keinen Unterschied. Allerdings können mehr als 4GB genutzt werden (bei 64Bit warens meines Wissens nach nur irgentwie 3,8GB rum, die Adressiert werden können). Wenn du Programme nutzt, die für 64 Bit compiliert wurden, bekommst du Leistungsvorteile. 64Bit-Versionen haben die Hauptsächlich professionell genutzte, leistungsintensiven Programme wie Cinema 4d oder Photoshop, bei den Spielen hat sichs noch nicht durchgesetzt, nicht zuletzt, weil die Dichte an 64Bit-Betriebssystemen im Consumer-Bereich noch nicht sehr hoch ist. Nachteile konnte ich bis jetzt fast keine feststellen, höchstens mal, dass ein Treiber Probleme gemacht hat, konnt bis jetzt aber alles beheben. Und da es nicht teurer ist und eben auch 32Bit-Software genutzt werden kann, tendiere ich immer eher zu 64Bit, wenns der Prozessor kann.
  24. oxygen

    2 Forms zusammenhängen C#

    OOP: objektorientierte Programmierung Bei 20 Variablen, die du an mehreren Stellen verarbeitest würde ich schon fast drüber nachdenken, eine richtige Datenhaltung anzulegen, die unabhängig von Klassen wie deinen Forms läuft, beispielsweise als Datenbank oder als Objekt einer eigenständige Klasse; dazu verwirrt mich jetzt aber gerade der Beitrag von Gateway_man. Hatte in letzter Zeit nicht viel Zeit, mich mit C# zu beschäftigen und noch nie probleme damit; ist es nur möglich, aus einem Objekt der gleichen klasse auf variablen eines Objekts zuzugreifen oder geht das bei einer Public-Variable eines Public-Objekt auch aus anderen Objekten, also beispielsweise vom Form in ein Objekt einer klasse public Eintrag? Allerdings wird das wahrscheinlich recht schnell zu kompliziert und verzweigt, wenn du gerade erst anfängst, dich mit c# zu beschäftigen.
  25. oxygen

    Urlaubstage

    Bei mir ab september im BA-Studium: 40h/woche an 5 Tagen und 30 Tage Urlaub und ja, Industrie.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...