Hallo Stefan,
auf klassische Access-Datenbanken (Dateierweiterung .mdb) kannst du nur aus 32-Bit-Applikationen zugreifen, da der JET-Treiber, der dazu verwendet wird, nur in 32 Bit vorliegt.
EDIT:
Verwendest du die Jet-MDB-Datenbank, oder das neue .ACCDB-Format?
Wenn du ACCDB-Verwendest - vergiss meine Antwort 😉
Office 365 wird vermutlich auf der Maschine jedoch als 64 Bit installiert sein, wodurch sich dein 2. Problem ergibt (vermute ich jetzt mal) - die 32 Bit-Anwendung, die zwar jetzt die Datenbank lesen kann, kann mit den 64-Bit Komponenten vom Office nicht mehr kommunizieren.
Problem 1 lässt sich somit nur umgehen, wenn du eine Datenbank verwendest, die auch mit 64 Bit läuft (SQLite, SQL Server). Dann kannst du eine 64-Bit-Applikation bauen, die dann auch mit dem (vermutlich) 64-Bit-Office läuft.
Daniel
Servus,
Deine Main-Funktion sowie Console.WriteLine sind beides Methoden, das ist soweit korrekt. Ich würde es in deinem Fall jedoch so spezifizieren:
Deine "Main"-Methode ist eine Methodendeklaration, d.h. du definierst bzw. erstellst selbst eine Methode, die bestimmte Anweisungen ausführt
Das Console.WriteLine ist ein Methodenaufruf, d.h. du rufst eine bestehende Methode des .NET Frameworks, oder auch eine selbst von dir deklarierte Methode auf.
Mit diesen Begriffen gilt dann folgendes: Du kannst keine Methode innerhalb einer anderen Methode deklarieren (Ausnahme sind anonyme Methoden), allerdings kannst du beliebige Methoden aus einer anderen Methode aufrufen. Und dies sowohl mehrfach, als in Schleifen und auch verschiedenen Ebenen.
Hoffe das machts etwas klarer 😃
Daniel
Ist eventuell die 32Bit-Version von Excel oder der Runtime installiert?
Wenn ja - muss deine Applikation auch als x86 in 32 Bit kompiliert werden, da ansonsten der 64-Bit Prozess nicht auf den Treiber zugreifen kann. Das ist auch eine kleine Stolperfalle, gleiches z.B. wenn du per OleDB den JET-Treiber verwenden willst.
Bei mir war's auch der Arbeitsspeicher (Notebook), bei einem im Kurs die Grafikkarte, beim nächsten die Festplatte - eigentlich haben alle relativ einfache, nicht komplexe Themen gehabt - eben um Sie in den 15 Minuten durchzubringen (4-Stufen-Methode).
Ein unrühmliche Ausnahme bilden hier aber tatsächlich die Zertifikate von StartSSL mit denen das TimeStamping nicht funktioniert. Diese Zertifikate sind also für das Codesigning nicht wirklich zu empfehlen.
Das kann ich so nicht bestätigen - ich habe jetzt die StartSSL-Zertifikate seit ein paar Jahren in Verwendung, nachdem die von K-Software vor ein paar Jahren immer sehr "kompliziert" waren was Einzelunternehmen angeht, da hier immer die Unterlagen nicht passten.
Und meine StartSSL-Zertifikate kann ich genauso über den Verisign-Timestamp-Server timestampen lassen, das geht ohne Fehler oder Probleme. Am Ende ist in der signierten EXE-Datei dann auch der Zeitstempel drin.
Daniel
Hallo,
die Fehlermeldung sagt doch eigentlich bereits alles 😉
Es wurde kein Argument angegeben, das dem formalen Parameter "Label_Wort" von "Form1.WordMethode(Label)" entspricht.
Dem Methodenaufruf fehlt also ein Argument. Deine Funktion in Form1 erfordert ein Argument, da du das bei der Funktion so definiert hast (das in den Klammern, "Label_Wort"):
public static void WordMethode(System.Windows.Forms.Label Label_Wort)
{
Label_Wort.Text = Convert.ToString(wort);
}
Daher musst du beim Aufruf auf dieses Argument natürlich mit angeben, also dein Label_Wort:
Form1.WordMethode(Label_Wort);
Ansonsten weiß die Funktion ja nicht, welches Label es verwenden sollte.
Daniel
Andere Möglichkeit: Hast du eventuell keine Schreibrechte auf die Datenbank auf Windows-Ebene? Also Datenbank Schreibgeschützt oder Benutzer ohne Berechtigung?
Hallo,
Du kannst dem Tool ILMerge mehrere DLLs in deine EXE mergen, damit hättest du am Ende nur noch eine Datei die du weitergeben musst. Das klappt aber nur mit .NET Assemblys soviel ich weiß, aber das sollte ja in Ordnung sein.
Daniel
Hallo chribl,
Ich behaupte jetzt einfach mal dass das nichts mit dem Programmieren zu tun hat. Kann es sein, dass die Access-Datenbank, also das MDB File zu deinem C# Projekt gehört, also im Visual Studio im Projekt eingebunden ist? Und sich die MDB auf diedu im Programm zugreifst im gleichen Ordner befindet wie deine EXE Datei?
Falls ja, ist in den Eigenschaften der Datei im Visual Studio eventuell eingestellt dass die Datei beim erstellen des Projektes neu in das Ausgabeverzeichnis kopiert wird - und damit deine Änderungen wieder überschreibt.
Prüf das auch mal - hört sich für mich sehr stark danach an.
Daniel