Laden...

Forenbeiträge von HottiWF Ingesamt 33 Beiträge

23.12.2015 - 23:04 Uhr

Schau dir mal Linq an:
>

Auch Dir Danke! For allem für die LINQ for Beginners. Werde mich da jetzt richtig reinfuchsen. Das mit der Diskussion der ungarischen Notationen schau ich mir gern mal an 😃

23.12.2015 - 23:03 Uhr


>

...

var carCount = vehicles.OfType<Car>().Count();  

1000 DANK! Super DU retest mir das Weihnachtsfest! 😃 Werde mich noch weiter reinfuchsen -Danke für den Link!

23.12.2015 - 22:13 Uhr

Hi Leute,
ich hoffe Ihr habt eine schöne Weihnachtszeit. Ich sehe hier den Wald vor lauter (Tannen)Bäumen nicht.
Ich habe eine eigene Klasse erstellt.

Diese Klasse soll eine Liste sein, die verschiedene FahrzeugObjekte verwaltet:


class VehicleList<T> : List<T>

Dafür vererbe ich von List. Nun habe ich (erst einmal) 3 weitere Klassen:


abstract class Vehicle
{
}
class Car : Vehicle
{
}
class Bike : Vehicle
{
}

Ich erstelle nun verschiedene Autos und Motorraeder und fuege sie der Liste hinzu:


VehicleList<Vehicle> theList = new VehicleList<Vehicle>();

Car theCar = new Car();
Bike theBike = new Bike();
  
theList .Add(theCar);
theList .Add(theBike);


Nun moechte ich mir die Anzahl der enthaltenden Element zurueckgeben lassen:


int iNum = theList .Count;

funktioniert noch ohne Probleme

Aber ich würde jetzt gern Count<T> benutzen um mir die Anzahl der bestimmten Typen von Fahrzeugen zurueckgeben zu lassen. Ich dachte es wuerde so einfach funktionieren indem ich:


int iNum = theList .Count<Bike>();

aufrufe. Da kriege ich aber gleich Aerger mit dem Compiler der mir Folgendes bemaengelt:> Fehlermeldung:

Error 2 Instance argument: cannot convert from 'ConsoleApplication2.VehicleList<ConsoleApplication2.Vehicle>' to 'System.Linq.ParallelQuery<ConsoleApplication2.Bike>'

Error 1
'ConsoleApplication2.VehicleList<ConsoleApplication2.Vehicle>' does not contain a definition for 'Count' and the best extension method overload 'System.Linq.ParallelEnumerable.Count<TSource>(System.Linq.ParallelQuery<TSource>)' has some invalid arguments

Kann mir Jemand einen Tritt in die richtige Richtung geben? Muss ich irgend ein Interface noch implementieren? Muss ich die Count Funktion ueberschreiben? Ich hab jetzt wirklich schon lange gesucht und bin mit meinem Latein am Ende. Oder geht das ich Count<T>() einfach so aufrufen will gar nicht?

03.11.2015 - 13:46 Uhr

Meiner Meinung passt das nicht in dieses Forum.
Wäre es nicht sinnvoller direkt bei Doxygen anzufragen bzw. ein einsprechenden Forum dafür zu suchen?

T-Virus

Das hab ich auch schon getan. Sogar direkt ins Doxygen Forum gepostet worauf ich nur den Hinweis bekommen habe, dass man ein Standard RTF File sich erstellen lassen kann. Weiterhin hab ich schon mir die Finger blutig "gegoogelt" nach Vorgabe RTF Styles etc. Aber entweder ich bin wirklich zu blöd oder es gibt einfach Nix.

Außerdem hab ich auch hier vorher gesucht und mehrere Einträge zu Doxygen gefunden, genau unter dieser Kategorie. Deshlab hab ich es auch hier gepostet! Weiß nicht genau wieso.

@T-Virus Sorry -aber solche Posts, wie Deiner, bringen ein Forum auch nicht unbedingt weiter.

03.11.2015 - 10:54 Uhr

Hi Leute,
ich nutze seit geraumer Zeit schon doxygen.
Habe auch schon meine projekte damit beschrieben und lasse mir als Ausgabe ein RTF File ausgeben.

Funktioniert so weit alles super. Aaaaaaaaaber womit ich absolut nicht zufrieden bin, sind so manche "Styles" also das Aussehen würde ich gerne anpassen.

Dazu hab ich auch rausgefunden das man die rtf stylesheets benutzen kann. Auch das man mit -rtf usw. sich dann das Standard Stylesheet erstellen lassen kann -hab ich noch hinbekommen. ABER ich finde weder eine Beschreibung zu diesem File noch become ich damit irgendwas Brauchbares hin. Hat dazu irgendwer mal eine vernünftige Beschreibung oder einen Tipp wie ich damit umgehen muss?

11.06.2013 - 11:21 Uhr

Leider immer noch die gleiche Exception @vbprogger

Exception: fehlender Operator in Abfrageausdruck 'ROW_NUMBER() over (ORDER BY Element)

Leerzeichen vor dem Klammer weglassen!

mit OVER(ORDER BY Element) sollte es funktionieren

Grüße

Mhhh geht auch nicht......

oleDbCmd.CommandText = "SELECT ROW_NUMBER() FROM ["Tabelle1"$];";
Hab jetzt das mal ganz simpel ausprobiert, selbst da kommt schon, diese Exception:

Undefinierte Funktion 'ROW_NUMBER' in Ausdruck

Denke mal, dass ich das wie so manch Anderes bei dem oleDb Zeug hier wahrscheinlich gar nicht verwenden kann!?

Mensch mensch....es muss doch einen einfachen Weg geben, die ersten 10 Zeilen zu überlesen.....ein Limit funktioniert hier ja auch nicht -bzw "heißt" hier TOP? ist das richtig? Aber ein Top so anzugeben, dass er von Zeile 11 bis Ende selektieren soll geht auch nicht oder?

11.06.2013 - 10:45 Uhr

Du kannst auch

select ... from ... where ... NOT IN (select top 10 ... from ... order by ...)

aber es könnte langsamer sein.

Grüße

Moment 😃
Probier ich gleich als Nächstes

So habe jetzt:

oleDbCmd.CommandText = "SELECT Element, Richtung, Typ FROM ["Tabelle1$] WHERE NOT IN (SELECT TOP 10 * FROM ["Tabelle1$"]);";

Wieder Exception:
Syntaxfehler (fehlender Operator) in Abfrageausdruck 'NOT IN (SELECT TOP 10 * FROM [Tabelle1$])

11.06.2013 - 10:44 Uhr

Leider immer noch die gleiche Exception @vbprogger

Exception: fehlender Operator in Abfrageausdruck 'ROW_NUMBER() over (ORDER BY Element)

11.06.2013 - 10:40 Uhr

Vielleicht gibt es eine komfortable Möglichkeit ein Argument in der WHERE Klausel mit anzugeben?

ROW_NUM > 10

oder irgend einen Variablenwert den man abfragen kann???

11.06.2013 - 10:27 Uhr

Hi,
ich benutzte das oleDBCmd:


SELECT Element, Richtung, Typ FROM ["Tabelle1"$];

um Datensaetze aus einer ExcelDatei auszulesen.
Das funktioniert ohne Probleme!

Nun haben Sie mir einen Kopf in mein Excel File oben reingepackt und mein Einlesen soll ab Zeile 11 beginnen. Ich habe dazu gesucht und die Funktion:
ROW_NUMBER() gefunden und wie folgt benutzt:


SELECT Element, Richtung, Typ, ROW_NUMBER() over (ORDER BY Element) AS 'RowNumber' FROM ["Tabelle1"$] WHERE RowNumber > 10;

Dann bekomme ich eine Exception:
fehlender Operator in Abfrageausdruck 'ROW_NUMBER() over (ORDER BY Element)


oleDbCmd.CommandText = "SELECT ROW_NUMBER() AS 'RowNumber', Element, Richtung, Typ FROM ["Tabelle1"$] WHERE RowNumber > 10;";

Dann bekomme ich die Exception:
Undefinierte Funktion 'ROW_NUMBER' in Ausdruck

Nun meine Frage, was mache ich falsch? Benutzte ich die Funktion falsch? Gibt es diese Funktion unter OleDB gar nicht? Gibt es eine Alternative die ich benutzen könnte?´

Ich möchte mein klassischen Select behalten und einfach eine bestimmte Anzahl Zeilen vom Anfang ueberlesen.

28.03.2013 - 12:45 Uhr

Ah nach nun längerer NOCHMALIGER Suche habe ich es nun doch per Suche gefunden!

[erledigt] Erstellen eines Query-Objectes in einer Access-Datanbank

Auch hier im Forum. Habe es wie dort beschreiben gelöst.

Beitrag kann zu

28.03.2013 - 12:29 Uhr

@BerndFfm

Hi,
danke für Deine Antwort, aber nein ich möchte kein SQL Kommando ausführen. Ich möchte ein SQL Kommando bzw eine Query der MDB Datei hinzufügen, dass wenn ich diese per Doppelklick öffne und dann auf Abfragen gehe, ich dort meine SQL Abfrage wieder finde.

28.03.2013 - 10:34 Uhr

Hi Leute,
ich habe schon wie wild gesucht aber ich finde einfach nichts dazu (hoffe ich habe nicht einfach falsch gesucht)...

Also was habe ich:
1.Ich erstelle per C# (ADOX) eine Microsoft Access DB.
2.Erstelle in dieser Tabellen
3.Ich fülle diese Tabellen

so nun habe ich 3 Tabellen:

Klassen, Methoden, Meldungen

So in Klassen und Methoden steht jeweils nur der String drin und eine ID. Das ich halt 10000 mal nur einen small int speichere als jedesmal den kompletten String etc.

So nun habe ich die MDB geöffnet und unter Abfragen eine Abfrage erstellt:

SELECT SET_GET.TIME, SET_GET.MESSAGE, CLASSES.CLASS, FUNCTIONS.FUNCTION
FROM CLASSES INNER JOIN (FUNCTIONS INNER JOIN SET_GET ON FUNCTIONS.ID = SET_GET.FUNCTION) ON CLASSES.ID = SET_GET.CLASS;

Funktioniert super!

NUN MEINE FRAGE:

ich möchte diese Abfrage und noch weitere (ist ja nur der Anfang) autoamtisch per C# in die MDB einfügen und nicht die MDB öffnen und händisch die Abfrage erstellen.

Natürlich kann ich die Abfrage auch per DatenTabelle mir im Code und im Programm halten und Abfragen, dass ist nicht die Frage aber die MDB Datei bekommen später Leute die nur auf die Abfragen klicken möchten und entsprechen die Daten präsentiert bekommen haben möchten.

Hoffe man versteht meine wirren Beschreibungen hier 😃

ich möchte eigentlich nur wissen:

WIE ERSTELLE ICH PER CODE EINE ABFRAGE IN DER MDB-DATEI.

23.05.2012 - 11:10 Uhr

Moin!

Ich komme mit meinem Problem einfach nicht zu Rande.
Also ich hatte ein Projekt mit einer mySQLDB mit PHP und HTML. Nun versuche ich Teile davon umzusetzen auf Datenquelle: Excel Abfrage per C# und OleDB Zugriff auf Excel. Ausgabe bleib HTML.

So nun zu meinem Problem oder meiner Frage:

Ich habe eine Funktion, der ich meinen SQL Select String uebergebe:


  // --------------------------------------------------------
    // ExcelSelect
    // --------------------------------------------------------
    // Excel Daten auslesen
    static public System.Data.DataTable ExcelSelect(string filepath, string filename, string select)
    {
      // DatenbankZugriff zu Excel herstellen
      OleDbConnection oleDbCon = new OleDbConnection();
      OleDbDataAdapter oleDbAdapt = new OleDbDataAdapter();
      OleDbCommand oleDbCmd = new OleDbCommand();

      // DatenTabelle in die, die Daten per SQL-Befehl eingelesen werden.
      System.Data.DataTable xlsTabelle = new DataTable();

      oleDbCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                                      "Data Source=" + filepath + filename + ";" +
                                      "Extended Properties=\"Excel 8.0;IMEX=1\"";

      // Vesuchen die Daten aus dem ExcelFile per DB Methode zu lesen
      try
      {
        // Öffnen des Datenbanktreibers
        oleDbCon.Open();
        oleDbCmd.Connection = oleDbCon;
        oleDbCmd.CommandText = select;
        oleDbAdapt.SelectCommand = oleDbCmd;

        //Füllt die c# Tabelle mit Inhalt Excel Tabellenblatt (Nachbarschaft)
        oleDbAdapt.Fill(xlsTabelle);
      }
      catch
      {
        return null;
      }
      //Schließt die Datenbankverbindung (sauberer Abschluss)
      finally
      {
        oleDbCon.Close();
      }

      return xlsTabelle;
    }

Diese funktioniert auch ohne Probleme.
Nun hatte ich in php folgende Abfrage (die auch funktioniert):

$result=MYSQL_QUERY("SELECT pid, bier, weizen, biermix, sum(bier)+sum(weizen*0.5)+sum(biermix*0.5) FROM `xbox_abschluss_$jahr` WHERE points > 0 group by pid ORDER BY 5 DESC");  

Dies habe ich einfach nicht in ein SQL Befehl in C# umgesetzt bekommen.
Nach sehr vielem Hin und Her probieren hab ich das ganze nun in mehrere SQL Befehle zerhackt.

 string sqlBefehl = "";
      sqlBefehl = "SELECT pid, SUM(bier)+SUM(weizen*0.5)+SUM(biermix*0.5) AS bierwertung FROM [abschluss" + year.ToString() + "$] ";
      sqlBefehl = sqlBefehl + "WHERE points > 0 ";
      sqlBefehl = sqlBefehl + "GROUP BY pid ";
      sqlBefehl = sqlBefehl + "ORDER BY 2 DESC;";


// Biere, Weizen, Biermix zum Spieler ermitteln
        sqlBefehl = "SELECT bier, weizen, biermix FROM [abschluss" + year.ToString() + "$] ";
        sqlBefehl = sqlBefehl + "WHERE pid = " + pid.ToString() + ";";

so funktioniert es auch. Was nicht funktioniert:

 string sqlBefehl = "";
      sqlBefehl = "SELECT pid, bier, weizen, biermix, SUM(bier)+SUM(weizen*0.5)+SUM(biermix*0.5) AS bierwertung FROM [abschluss" + year.ToString() + "$] ";
      sqlBefehl = sqlBefehl + "WHERE points > 0 ";
      sqlBefehl = sqlBefehl + "GROUP BY pid ";
      sqlBefehl = sqlBefehl + "ORDER BY 5 DESC;";

Laut Exception ist 'bier' kein gültiges Feld. Hat jemand vielleicht einen Tip für mich?

14.05.2012 - 13:33 Uhr

Was ist so schwer daran zu verstehen den Code und die Assembly aus dem Link herunterzuladen und zu referenzieren???

Kannn an meiner Entwicklungsumgebung leider nichts hinzufügen. Hab eben grad erst gepeilt, dass ich dafür die zusätzliche assembly runterladen muss. Das kann ich eh knicken. Ausserdem hab ich eben grad gelesen, dass diese Assembly nur XLSX Formate unterstützt -also hätte ich damit auch verloren....Mist!

14.05.2012 - 11:28 Uhr

Excel Version: Excel2003 SP3
Microsoft Visual Studio 2010pro

Hi,
erstmal danke für den CodeSchnipsel. Aber welche Reference muss ich dafür includen bzw in meine Entwicklungsumgebung einbinden? Welchen namespace muss ich dann nutzen? Könntest das eventuell noch dazu ergänzen?

07.05.2012 - 11:14 Uhr

Hi @ll,
nach num langem Suchen und Rumprobieren, muss ich auch mal wieder "belästigen". Ich habe mehrere Excel Dateien und habe nun die tolle Aufgabe INI-Steuerdateien zu füllen. Dafür benötige ich unter anderem die Datenblattnummer die das Sheet/dasBlatt in Excel unten als Position hat.

Ich ermitteln mir alle Datenblätter mit:
DataTable dt = oleDbCon.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

LEIDER gibt mir diese Funktion die Tabllen/Sheets in sortierter Reihenfolge zurück. Gibt es eine Möglichkeit einen weiteren Patameter zu übergeben oder eventuell eine Dataview zu implementieren was mit die wieder in die ursprungliche Reihenfolge zurück sortiert?

02.03.2012 - 10:34 Uhr

Thema/Problem erledigt. Kann geschlossen werden!

02.03.2012 - 10:34 Uhr

Ah sehr gut es funktioniert!

Habe in den Konsturktor der Oberfläche die


public Form1()
{      
  this.DragEnter += new
                 System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
      this.DragDrop += new
                 System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);

      InitializeComponent();
}

EventHandler erstellt und danach die beiden Funktionen hier ergänz:


private void Form1_DragEnter(object sender, DragEventArgs e)
    {
      // Überprüfen, ob Dateien oder Ordner gezogen werden
      if (e.Data.GetDataPresent(DataFormats.FileDrop))
      {
        e.Effect = DragDropEffects.All;
      }
      else
      {
        e.Effect = DragDropEffects.None;
      }      
    }

    private void Form1_DragDrop(object sender, DragEventArgs e)
    {
      // Dateien aus den gezogenen Daten auslesen
      string[] filesNames = (string[])e.Data.GetData(DataFormats.FileDrop, false);
      string fileName = filesNames[0];
      // FileInfo-Objekt erzeugen
      FileInfo fi = new FileInfo(fileName);
      if (fi.Exists)
      {
        IniFile iniParser = new IniFile(fileName);
        textBoxPathBAI.Text = iniParser.IniReadValue("input", "bai");
        textBoxPathEVP.Text = iniParser.IniReadValue("input", "evp");
        textBoxPathRT.Text = iniParser.IniReadValue("input", "route_table");
        textBoxPathSULogic.Text = iniParser.IniReadValue("input", "sulogic");        
      }      
    }

und siehe da, nachdem man in der Form noch DropAllowed gesetzt hat, funktioniert es! thnx

02.03.2012 - 10:00 Uhr

ah cool! Schau ich mir gleich mal an.

DANKE

02.03.2012 - 09:18 Uhr

Moin Leute,
ich habe folgendes Problem. Ich habe ein Programm geschrieben was bisher feste Pfade und Dateinamen benutzt. Habe das jetzt umgestellt, dass man auf der Oberfläche des Programms nun alle Pfade und Dateien(namen) eintragen und sogar per Dialog aussuchen kann. Das ist schon recht konfortabel. Bin sogar noch einen Schritt weiter gegangen und hab eine INI Datei erstellt mit allen Pfaden usw da selbst das manuelle auswählen/eingeben recht müsig geworden ist. Diese übergebe ich momentan per CommandoZeile und einem Link, funktioniert auch super....jetzt haben jedoch die Anweder nicht die Fähigkeit (oder die Lust <- das ist es wohl eher) 😉 sich Links zu erstellen und das INI File auf die EXE zu ziehen finden Sie auch doof. Sie wollen, das Programm starten, man sieht die Oberfläche und dann wollen Sie die INI Datei per Drag&Drop auf die ProgrammOberfläche ziehen und dann soll die INI Datei ausgelesen werden und alle Inhalte eingetragen werden.

So nun meine Frage, wie bekomme ich es hin, dass wenn ich per Drag&Drop eine INI Datei auf mein Form ziehe, dass ich das auslesen kann. Bzw dann weiß welche INI Datei auf mein Programm gezogen wurde. Gibt es dafür irgend einen Handle oder Control oder was weiß ich was!?!? Kann mir da jemand vielleicht einen kurzen Tip oder gar ein Snippet geben???

mfg hotti

16.06.2011 - 11:34 Uhr

Hallo!

Man kann sich die Namen der einzelnen Sheets auslesen:

oleDbCon.GetOleDbSchemaTable(OleDb.OleDbSchemaGuid.Tables, Nothing)  
  

Da nimmt man dann den ersten und verwendet diesen für die folgende Abfrage.

Ich will das jetzt mal probieren aber die Zeichen die da drinn stehen sind chinesische Schriftzeichen also Sonderzeichen und wenn ich die irgendwo anders hinkopiere kommen nur "???" bei raus....bin mal gespannt ob das funktioniert!

16.06.2011 - 11:24 Uhr

Wenn alle Sheets immer Data + X enthalten, sollte sich das doch lösen lassen.

mhhh.....bisher ist es immer so...aber will ich mich darauf verlassen....ich weiß nich

16.06.2011 - 10:19 Uhr

verwendetes Datenbanksystem: EXCEL-File

Moin!
Ich habe ein (kleines -so hoffe ich) Problem.
Vorgeschichte, mein Tool soll bestimmte Werte aus einer Excel Datei ermitteln.
Was ich bisher so realisiert habe:


// Steuerzeile versuchen einzulesen

// DatenbankZugriff zu Excel herstellen
OleDbConnection oleDbCon = new OleDbConnection();
OleDbDataAdapter oleDbAdapt = new OleDbDataAdapter();
OleDbCommand oleDbCmd = new OleDbCommand();

oleDbCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                                            "Data Source=" + Globale_Variablen.route_table_xls_file_path + Globale_Variablen.route_table_xls_filename + ";" +
                                          "Extended Properties=\"Excel 8.0;IMEX=1;HDR=NO\"";

// Vesuchen die Daten aus dem ExcelFile per DB Methode zu lesen
try
{
  // Öffnen des Datenbanktreibers
  oleDbCon.Open();
  oleDbCmd.Connection = oleDbCon;
  oleDbCmd.CommandText = "SELECT TOP 1 * FROM [Data$]";

  oleDbAdapt.SelectCommand = oleDbCmd;

  //Füllt die c# Tabelle mit Inhalt Excel Tabellenblatt (Nachbarschaft)
  oleDbAdapt.Fill(xlsSheetRouteTable);
}

Dies funktioniert auch und alles war super. Ich wußte immer, dass es in meinem Excel File ein Sheet mit Namen: "Data" gibt und alles war klasse.
Jetzt hab ich aber Files aus anderen Ländern bekommen China, Helsinki etc. Dort heißt dass Sheet auch noch Data, blos mit einem Zusatz von Sonderzeichen.....chinesischen Schriftzeichen etc. und ich kann nicht mehr über den Namen gehen.

Kann ich irgendwie mein Select umbaun, dass ich statt dem Namen den Index angeben kann? Ist zwar auch nicht elegant weil ich dann jedes Sheet auf der Suche nach meinen Daten durchklappern muss, aber daran führt leider kein Weg vorbei 😃

16.06.2011 - 09:58 Uhr

-doch komme von Java 😃 Merkt man das ??? lach
nein mal im Ernst hab mir einen Ratschlag hier zu Herzen genommen und weiter geforscht und bin nun bei dem "Tool" Doxygen + Graphviz gelandet. Nach einiger Einstellerei, funktioniert dass jetzt recht gut und ich hab eine schöne Dokumentation direkt aus dem Quellcode generiert.

@FZelle
Danke für den Hinweis! Immer suboptimal wenn man denkt vom Gleichen zu reden und noch fataler wenn man dann glaubt irgendwas richtig verstanden zu haben und ist dann komplett auf dem Holzweg. Werde aber wie gesagt aufgrund anderem Lösungsweg da in die Richtung gerade (aufgrund von Zeitmangel) eh nicht weiter maschieren. Aber trotzdem danke!

Thema -closed!

18.04.2011 - 10:38 Uhr

dann hast du wohl keine öffentlichen Felder in deinen Klassen

Man bin ich doof! Natürlich hab ich nur PRIVATE Felder in meinen Klassen! Das ist auch so gewollt und auch richtig so. Man soll nämlich nicht von aussen einfach irgendwie auf die Attribute zugreifen sondern wie es sich gehört über die entsprechenden get/set Methoden etc. Mhhh eben hab ich es mal getestet und ein Attribut public gemacht und schwups ja klar....das geht....

also auf private Felder kann man nicht irgendwie abfragen???

15.04.2011 - 13:45 Uhr

Analog zu MethodInfo gibts doch FieldInfo das sollte doch das sein was du suchst?!

Ja das hatte ich schon versucht. Bei mir ist aber dass Array was mit den Feldern gefüllt sein sollte bei JEDER Klasse leer (null)!?!

Meine CodeZeile


FieldInfo[] Field = alleKlassen[i].GetFields();

15.04.2011 - 13:43 Uhr

Bevor du etwas baust, was es schon gibt, schau dir doch einfach mal
>
an.

Das scheint wirklich ein lohnender Tipp zu sein. Habe mir das grad mal installiert um zu schaun ob ich damit klar komme. Stürzt allerdings beim generieren immer mit:

Fehlermeldung:
An error occured while trying to build the documentation.

Exception: System.BadImageFormatException
Version 2.0 is not a compatible version.

Exception: System.BadImageFormatException

Server stack trace:
at System.Reflection.AssemblyName.nGetFileInformation(String s)
at System.Reflection.AssemblyName.GetAssemblyName(String assemblyFile)
at NDoc.Core.Reflection.AssemblyLoader.LoadAssembly(String fileName)
at NDoc.Core.Reflection.ReflectionEngine.BuildXrefs()
at NDoc.Core.Reflection.ReflectionEngine.PreReflectionProcess()
at NDoc.Core.Reflection.ReflectionEngine.BuildXml(XmlWriter writer)
at NDoc.Core.Reflection.ReflectionEngine.MakeXmlFile(ReflectionEngineParameters rep, String xmlFile)
at System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(MethodBase mb, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)

Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at NDoc.Core.Reflection.ReflectionEngine.MakeXmlFile(ReflectionEngineParameters rep, String xmlFile)
at NDoc.Core.Reflection.BaseReflectionDocumenter.MakeXmlFile(Project project, String fileName)
at NDoc.Documenter.Xml.XmlDocumenter.Build(Project project)
at NDoc.Gui.BuildWorker.ThreadProc()

ab. Spontan weißt Du auch nicht woran das liegt oder? Denke mal an der framenetwork version oder so was...aber da muss ich nochmals genauer nachlesen.
Erstmal danke für den heissen Tipp!

15.04.2011 - 12:33 Uhr

Guten Tag,
ich habe Folgendes vor. Ich habe eine DLL geschrieben die anderen Benutzer eine fülle von allgemeinen Methoden und Konstanten/Variablen zur Verfügung stellt.

Ich möchte nun zu dieser DLL ein Handbuch in HTML erstellen, welches aber sich selbst aus der DLL generiert. Also mein Gedanke ist der, dass ich mit Hilfe von "assembly" die DLL lade und mir alle Methoden und Variablen ermitteln und mir dann selbst den HTML Code generieren lasse. Dies funktioniert schon bereits ganz gut:


// Laden der DLL
Assembly assembly = Assembly.LoadFile(theDLLFile);

// Alle Klassen der DLL in ein Typen Array laden
Type[] alleKlassen = assembly.GetTypes();     

// Alle Klassen durchgehen
for (int i = 0; i < alleKlassen.Length; i++)
{
  string KlassenName = alleKlassen[i].Name;
  MethodInfo[] Method = alleKlassen[i].GetMethods();
  // ALLE Methoden der Klassen durchgehen
  for (int x = 0; x < Method.Length; x++)
  {
    ParameterInfo[] parameter = Method[x].GetParameters();
    ...
  }
  ...
}

Das war mal ein Code Ausschnitt von mir.
Mir fehlt nämmlich noch, dass ermitteln der Variablen der Klassen. Bekomme das einfach nicht raus wie ich an die Variablen der Klassen komme. Hat da jemand einen Tip für mich?

25.03.2011 - 09:28 Uhr

Ich habe zu erst versucht beim SELECT ein "LIMIT 1" oder "LIMIT 0,1" hinzuzufuegen, bekomme aber dann nur Exceptions geworfen, dass die Syntax falsch wäre etc.
So: SELECT TOP 1 * FROM [Tabelle]

DANKE! Ich wußte doch es lag nur an einer Kleinigkeit 😃..hätte ich mal früher hier gefragt...bin gestern fast wahnsinnig geworden!

25.03.2011 - 09:07 Uhr

Moin moin!
Ich habe folgendes Problem bei eigentlich sehr simpler Sache. Ich habe eine Excel Datei und möchte die erste Zeile auslesen um diese quasi als Steuerzeile benutzen zu können. Mein Bisheriger Code sieht wie folgt aus:


// Steuerzeile versuchen einzulesen
            // DatenbankZugriff zu Excel herstellen
            OleDbConnection oleDbCon = new OleDbConnection();
            OleDbDataAdapter oleDbAdapt = new OleDbDataAdapter();
            OleDbCommand oleDbCmd = new OleDbCommand();

            // DatenTabelle in die, die Daten per SQL-Befehl eingelesen werden.
            System.Data.DataTable xlsTabelle = new DataTable();

            oleDbCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                                            "Data Source=" + Globale_Variablen.route_table_xls_file_path + Globale_Variablen.route_table_xls_filename + ";" +
                                            "Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";

            // Vesuchen die Daten aus dem ExcelFile per DB Methode zu lesen
            try
            {
              // Öffnen des Datenbanktreibers
              oleDbCon.Open();
              oleDbCmd.Connection = oleDbCon;              
              oleDbCmd.CommandText = "SELECT * FROM [Filme$]";

              oleDbAdapt.SelectCommand = oleDbCmd;

              //Füllt die c# Tabelle mit Inhalt Excel Tabellenblatt (Nachbarschaft)
              oleDbAdapt.Fill(xlsTabelle);
            }
            catch (OleDbException OleE)
            {
              string errorMessages = "";

              for (int i = 0; i < OleE.Errors.Count; i++)
              {

                errorMessages += "Index #" + i + "\n" +
                            "Message: " + OleE.Errors[i].Message + "\n" +
                            "NativeError: " + OleE.Errors[i].NativeError + "\n" +
                            "Source: " + OleE.Errors[i].Source + "\n" +
                            "SQLState: " + OleE.Errors[i].SQLState + "\n";

                Console.Error.WriteLine(errorMessages);
              }
            }
            //Schließt die Datenbankverbindung (sauberer Abschluss)
            finally
            {
              oleDbCon.Close();
            }

Ich habe zu erst versucht beim SELECT ein "LIMIT 1" oder "LIMIT 0,1" hinzuzufuegen, bekomme aber dann nur Exceptions geworfen, dass die Syntax falsch wäre etc. Kann mir jemand die korrekte Syntax für ein Select mit LIMIT posten -FÜR MEIN BEISPIEL!?

Oder weiß jemand wie ich die erste Zeile simpel einlesen kann???

Mein Code funktioniert liest blos das gesamte Excel Dokument in meine DatenTabelle, aus Performance Gründen usw. möchte ich aber generell nur die erste Zeile einlesen.

Hoffe es kann mir Jemand helfen.

mfg Hotti

20.01.2011 - 12:55 Uhr

Sehr cool! Vielen Dank aufgrund Deines Beitrages bin ich weiter gekommen.

Meine Lösung sieht nun wie folgt aus:

Habe nun folgendes, was funktioniert:


Excel.Range cell = oExcelApplication.get_Range(sCellAdr, sCellAdr);
cell.Comment.Shape.TextFrame.Characters(0, 3).Font.ColorIndex = 38;

TextFrame.Characters gibt das Object auf den Text zurueck auf dem man nun schoen arbeiten kann. Ich habe testweise erstmal Stell 0 bis 3 genutzt. Sofern man den ganzen Kommentar bearbeiten, muss man sich natürlich vorher noch die Textlänge auslesen/ermitteln. Man sollte auch gucken dass es überhaupt einen Kommentar gibt weil man sonst eine Exception bekommt etc.

Aber danke erstmal dafür...hat mich echt weitergebracht.

19.01.2011 - 14:38 Uhr

Guten Tag,
ich habe folgendes Problem, ich möchte mit Hilfe von C# einen Excel Kommentar formatieren. Sprich die Textgröße, Schriftart etc. ändern.

Bisher hab ich folgendes:

cell.Comment.Shape.TextEffect.FontName = "Times New Roman";

Bekomme dann eine Exception: ArgumentException was unhandeld.
Auf dieses Mitglied kann nur für ein WordArt-Objekt zugegriffen werden.

Hab jetzt schon gesucht wie ein Irrer. Man kann brauch wohl ein WordArt Objekt. Hab auch schon versucht mir eins zu erstellen und zu benutztem, bin aber anscheinend zu blöde.

Vielleicht kann mir hier Jemand helfen???

Hat jemand ein Beispiel für eine ExcelKommentar Formatierung 😃 ???