Zum Inhalt springen

oxygen

Mitglieder
  • Gesamte Inhalte

    112
  • Benutzer seit

  • Letzter Besuch

Beiträge von oxygen

  1. Hab auch das Diamond von O2, benutze auch das Standard-Rom, ich mein aber, dass auf den Szene-Seiten wie XDA-Developers und Pocketpc.ch Roms mit WinMob 6.5 verfügbar sind, bin mir aber nicht 100% sicher, weil ich mich noch nicht mit beschäftigt hab, hatte darüber aber schon mehrere Unterhaltungen mit nem Bekannten, der das Pro hatte. Es sollte dir aber bewusst sein, dass du dann Garantie und ähnliches verlierst, falls es nicht eh schon abgelaufen ist (wie bei mir).

  2. @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.

  3. 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ß

  4. 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.

  5. 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

  6. Also ein Gig ist mit dem Handy ist erstmal ne ordentliche Menge. Wenn du alle 10min E-mail abrufst und alle par Stunden mal News kommst du da nicht drauf. Ich hab selbst auch mit dem HTC Touch Diamond ein Internetfähiges Handy mit Windows Mobile und die "kleine" Flatrate von O2, die nach 200mb auf GPRS-Geschwindigkeit drosselt. Bei mir trennt sich das Internet nach einer gewissen Zeit und stellt bei Bedarf automatisch wieder eine Verbindung her (bei WinMob kannst du das am Empfangsbalken erkennen, wenn eine Antenne drin ist, hast du kein I-net, wenn ein Buchstabe drin ist, ist die Verbindung hergestellt).

    Wenn du nach dem Gigabyte wieder pro Volumen oder Zeit zahlen musst, würde ich dir ein Überwachungsprogramm empfehlen, damit du dir das Gig besser einteilen kannst, ansonsten bekommst halt nur n par Nachteile, da ist dann so ein Programm ein netter Zusatz. Wenn du keine automatische Verbindung möchtest, gibts normalerweise auch irgentwo ne Einstellmöglichkeit, um nur über WLan verbinden zu können.

    Sag uns auf jeden Fall mal dein Betriebssystem bzw. das Modell, das du verwendest, dann können wir dir genaueres sagen.

  7. 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.

  8. 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.

  9. 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.

  10. 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:

    Wenn der Benutzer einen oder mehrere Buchstaben eingibt, bekommt Dein int den Wert 0.

    Wenn Null keine gültige Eingabe ist, dann prüf einfach den Wert nach der Eingabe und brich gegebenenfalls ab.

    Wenn Null ein erlaubter Wert sein soll, dann liegt der Fehler an einer anderen Stelle in Deinem Programm. Was machst Du mit der eingegebenen Zahl?

  11. 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.

  12. 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.

  13. Also kann deinen Erfahrungen zustimmen, Guybrush. Hab zwar nicht das HD2, aber das Diamond (1). Spiele zur Zeit aber mit dem Gedanken, mir im nächsten Jahr oder so was in Richtung HD2 zu holen. Die Akkulaufzeit bei den HTC-Smartphones oder generell unter WinMob ist halt nicht so berauschend (bei mir allerhöchstens 2 Tage), aber von der Flexibilität her sind sie super. Du kannst jedes Programm, das für die entsprechende oder eine ältere Version compilliert wurde, installieren und zwar ohne dass du irgentwelche Hacks, Jailbrakes oder sonst was durchführen musst. Selbst entwickeln ist auch kein Problem, sofern man .net kann bzw. gewillt ist, es zu lernen, da das Dateisystem von Haus aus nutzbar ist.

    Man muss eben lernen mit Windows Mobile zu arbeiten, aber bei was muss man das nicht? Mit Wlans hatte ich bis jetzt sehr selten Probleme, werden automatisch erkannt und wenn sie gesichert sind, muss man halt noch den Schlüssel eingeben, wie beim Rechner/Laptop halt auch.

    Allein die Standardbedienoberfläche von Windows Mobile ist ein großer Nachteil für mich, weil sie eine Fingerbedienung durch kleine Symbole und Eingabefelder sehr erschwert, aber da leistet HTC meiner Meinung nach sehr gute Abhilfe mit Touch Flo 3D unter WinMob 6.1 und Sense unter 6.5. Mein Vater had den Ipaq von HP, der mit dem Standard-UI läuft und ist überhaupt nicht zufrieden, weil alles auf Stiftbedienung ausgelegt ist.

    Wenn du nicht also unbedingt so ein User bist der alles am liebsten vorgekaut haben möchte und bereit bist, auch mal nach nem Programm zu googeln oder nen Treiber oder ne dll ode sowas nachzuinstallieren würd ich dir nicht davon abraten. Hab das HD2 selber bis jetzt nur kurz in der hand gehabt, bin aber mit HTC generell sehr zufrieden.

  14. 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.

  15. 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.

  16. 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 B) 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.

  17. 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.

  18. 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.

  19. @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.

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...