Laden...

Forenbeiträge von Ahrimaan Ingesamt 350 Beiträge

04.01.2011 - 22:06 Uhr

zB mit einem OpenFileDialog

Dort kannst du mehrere Dateien auswählen.

Du musst diese dann nur noch in einer Schleife durchlaufen und den Connectionstring jeweils anpassen nzw. die Variable ersetzten.

Grüße

04.01.2011 - 22:03 Uhr

verwendetes Datenbanksystem: XML Excel 2007

Hallo zusammen,

ich lese zu Fuß die XML Daten in einem XLSX Dokument.
Klappt EIGTL. ganz gut bis auf folgendes Phänomen :

Ich kann nicht auf die Subelemente zugreifen weils einfach keine gibt Oo

Im Anhang seht ihr den Aufbau der jeweiligen Row bzw. Cell
Und den passenden Fehler.
Unten seht ihr meinen XMl Lesenden Code.

Jmd ne Idee ?

Grüße

var workbookname = GetWorkbookName(doc.Element("worksheet").Element("pageSetup").Attribute("r" + 0x3A + "id").Value);
            var rows = GetExcelRows(from i in doc.Element("worksheet").Element("sheetData").Elements("row") select i);
 private ExcelCell GetExcelCell(XElement xmlElement)
        {
            var column = GetColumnName(xmlElement.Attribute("r").Value);
            var value = xmlElement.Attribute("t") != null
                            ? _sharedStrings[int.Parse(xmlElement.Element("v").Value)]
                            : string.Empty;
            var formula = xmlElement.Attribute("f") != null
                            ? xmlElement.Attribute("f").Value
                            : string.Empty;
            return new ExcelCell(GetColumnIndex(xmlElement.Attribute("r").Value),column,value,formula);
        }
04.01.2011 - 18:22 Uhr

Hi Zero,

ich schlage mich mit WCF n tier sachen etc. rum aber DAS habe ich nicht drauf 😦
Danke für den Hinweis

Grüße

04.01.2011 - 15:32 Uhr

Danke für die Denkanstöße 😃

Grüße

04.01.2011 - 14:37 Uhr

Hallo zusammen,

stehe grad aufm dem Schlauch :

Für meine Excelwrapperklasse brauche ich eine Methode
die mir zB aus den Buchstaben AA = 27 ausgibt.

Also quasi das Alphabet hochzähl.

Nur wie gesagt fällt mir grad gar keine Idee ein 😦

Grüße

28.12.2010 - 12:09 Uhr

Hi m0rius,

das finde ich persl. nicht schlimm , wenn man weiß wie man gute Unit Tests schreibt kann man sich den erst auch herleiten.

Zumindest sollte man das meinen 😉

Grüße

28.12.2010 - 10:10 Uhr

Hi,

fixed ja meine TDD 😃

28.12.2010 - 09:41 Uhr

Hallo zusammen,

nun soll bei uns ENDLICH mal mit TDD ab Januar angefangen werden in der Firma.
Da es im Netz zwar viele Beispiele gibt aber mein Chef einfach zu faul ist die Links zu klicken, suchen wir ein gutes Buch um es Ihm mal zur Verfügung zu stellen.

Jmd ne gute Empfehlung ?

Grüße

EDIT : Fixed

27.12.2010 - 09:46 Uhr

Hi,

wenn du den Programmierer nicht mit dem DB System behelligen willst,

würde ich dir vorschlagen zusätzlich EF CodeFirst anzuschauen. Nützlich dazu auch der AutoMapper.

Grüße

23.12.2010 - 09:21 Uhr

Hi,

ich kann per Reflection ja DLLs usw. auslesen.
Was ich aber bisher nicht gefunden habe ist in einem laufendem Prozess eine Methode
auszulösen.

Nach meinem wissen war es tatsächlich nur für Metaprogrammierung aber nicht um fremde laufende Prozesse zu steuern oder ?

Grüße

22.12.2010 - 15:16 Uhr

Genau das habe ich gesucht , Danke !

22.12.2010 - 15:05 Uhr

Hallo zusammen,

ich muss (leider) in einem Projekt eine fremde .NET Anwendung steuern.
Nun meine Frage : Wie löse ich das am besten ?
Bei Sendkeys kriege ich bauschmerzen.

Komme ich evtl. per Reflection an die Methoden etc ran ? Per Reflector kann ich diese ja auch auslesen .
Hat jmd dafür Codesnippets oder Links ?

Danke für eure Hilfe

Grüße

16.12.2010 - 15:11 Uhr

Ok dann nehme ich lieber die Lösung

Dank dir !

grüße

16.12.2010 - 15:01 Uhr

Es gibt ja die möglichkeit über ein Kommandozeilentool eine 2003er Datei zu einer 2007er xlsx. zu machen.
Diese könnte ich ja per XML einlesen
Stehen denn da die Formeln drin ?

Grüße

16.12.2010 - 14:22 Uhr

Hallo zusammen,

neues Problem :

Wenn ich mir eine Exceldatei einlese kriege ich nur leere Felder, Formeln werden NICHT gelesen. Bedeutet das, das ich wirklich über das hässliche COM gehen muss ?

Grüße

15.12.2010 - 17:04 Uhr

Kann geclosed werden,

durch beschränken der Spalten auf max 256 wurde das Problem erledigt.
Das ist auch die Interne Grenze unserer Excelfiles 😃

Grüße

15.12.2010 - 16:52 Uhr

Hallo,

wenn ich weniger Selektiere klappt es.
Das Problem ist die Dateien können bis zu 130 Spalten haben und bis zu xxx Zeilen.
Es ist also recht dynamisch das ganze.

Grüße

15.12.2010 - 16:34 Uhr

Hallo zusammen,

ich lese über OleDb eine Exceldatei ein.
Leider wird beim ExecuteReader ein Fehler geworfen :
(Siehe Anhang)

So , wie umgehe ich nun dieses Problem ?
Kann der DataReader etwas nicht mit so vielen Felder umgehen ?

Grüße

16.11.2010 - 08:09 Uhr

Hi,

wir nutzen WF um in unserer Software :
Die Software ist eine ACD Anlage und da ist die WF prädestiniert dafür.

Grüße

11.11.2010 - 14:14 Uhr

DA ^^

 public class Mp3Header
    {
        // Public variablen
        public int intBitRate;
        public string strFileName;
        public long lngFileSize;
        public int intFrequency;
        public string strMode;
        public int intLength;
        public string strLengthFormatted;

        // Private Variablen
        private ulong bithdr;
        private bool boolVBitRate;
        private int intVFrames;

        public bool ReadMP3Information(string FileName)
        {
            FileStream fs = new FileStream(FileName, FileMode.Open, FileAccess.Read);
            // Setze Dateinamen ohne Pfad
            strFileName = @fs.Name;
            char[] chrSeparators = new char[] { '\\', '/' };
            string[] strSeparator = strFileName.Split(chrSeparators);
            int intUpper = strSeparator.GetUpperBound(0);
            strFileName = strSeparator[intUpper];

            strFileName = strFileName.Replace("'", "''");

            // Setze Dateilänge
            lngFileSize = fs.Length;

            byte[] bytHeader = new byte[4];
            byte[] bytVBitRate = new byte[12];
            int intPos = 0;

            // Lese die ersten 4 Bits um zu prüfen ob es eine MP3 ist
            do
            {
                fs.Position = intPos;
                fs.Read(bytHeader, 0, 4);
                intPos++;
                LoadMP3Header(bytHeader);
            }
            while (!IsValidHeader() && (fs.Position != fs.Length));

            //Wenn die Streamposition = der Länge ist ist es KEINE Gültige MP3
            if (fs.Position != fs.Length)
            {
                intPos += 3;

                if (getVersionIndex() == 3)    // MPEG Version 1
                {
                    if (getModeIndex() == 3)    // Single Channel
                    {
                        intPos += 17;
                    }
                    else
                    {
                        intPos += 32;
                    }
                }
                else                        // MPEG Version 2.0 or 2.5
                {
                    if (getModeIndex() == 3)    // Single Channel
                    {
                        intPos += 9;
                    }
                    else
                    {
                        intPos += 17;
                    }
                }

                // Pürfe ob die Datei eine Variable Bitrate hat
                fs.Position = intPos;
                fs.Read(bytVBitRate, 0, 12);
                boolVBitRate = LoadVBRHeader(bytVBitRate);

                // Wenn die Datei gelesen wurde übergib die daten an die Public Variablen
                intBitRate = getBitrate();
                intFrequency = getFrequency();
                strMode = getMode();
                intLength = getLengthInSeconds();
                strLengthFormatted = getFormattedLength();
                fs.Close();
                return true;
            }
            return false;
        }

        private void LoadMP3Header(byte[] c)
        {
            // c[0] = 00000011
            // c[1] = 00001100
            // c[2] = 00110000
            // c[3] = 11000000
            // Dieser Operator << bedeutet Das wir die Bits in diese Richtung schieben
            // 00000011 << 24 = 00000011000000000000000000000000
            // 00001100 << 16 =         000011000000000000000000
            // 00110000 << 24 =                 0011000000000000
            // 11000000       =                         11000000
            //                +_________________________________
            //                  00000011000011000011000011000000
            bithdr = (ulong)(((c[0] & 255) << 24) | ((c[1] & 255) << 16) | ((c[2] & 255) << 8) | ((c[3] & 255)));
        }

        private bool LoadVBRHeader(byte[] inputheader)
        {
            //Bei einer Variablen Bitrate wird XING ausgegeben
            if (inputheader[0] == 88 && inputheader[1] == 105 &&
                inputheader[2] == 110 && inputheader[3] == 103)
            {
                int flags = (int)(((inputheader[4] & 255) << 24) | ((inputheader[5] & 255) << 16) | ((inputheader[6] & 255) << 8) | ((inputheader[7] & 255)));
                if ((flags & 0x0001) == 1)
                {
                    intVFrames = (int)(((inputheader[8] & 255) << 24) | ((inputheader[9] & 255) << 16) | ((inputheader[10] & 255) << 8) | ((inputheader[11] & 255)));
                    return true;
                }
                else
                {
                    intVFrames = -1;
                    return true;
                }
            }
            return false;
        }

        private bool IsValidHeader()
        {
            return (((getFrameSync() & 2047) == 2047) &&
                    ((getVersionIndex() & 3) != 1) &&
                    ((getLayerIndex() & 3) != 0) &&
                    ((getBitrateIndex() & 15) != 0) &&
                    ((getBitrateIndex() & 15) != 15) &&
                    ((getFrequencyIndex() & 3) != 3) &&
                    ((getEmphasisIndex() & 3) != 2));
        }

        private int getFrameSync()
        {
            return (int)((bithdr >> 21) & 2047);
        }

        private int getVersionIndex()
        {
            return (int)((bithdr >> 19) & 3);
        }

        private int getLayerIndex()
        {
            return (int)((bithdr >> 17) & 3);
        }

        private int getProtectionBit()
        {
            return (int)((bithdr >> 16) & 1);
        }

        private int getBitrateIndex()
        {
            return (int)((bithdr >> 12) & 15);
        }

        private int getFrequencyIndex()
        {
            return (int)((bithdr >> 10) & 3);
        }

        private int getPaddingBit()
        {
            return (int)((bithdr >> 9) & 1);
        }

        private int getPrivateBit()
        {
            return (int)((bithdr >> 8) & 1);
        }

        private int getModeIndex()
        {
            return (int)((bithdr >> 6) & 3);
        }

        private int getModeExtIndex()
        {
            return (int)((bithdr >> 4) & 3);
        }

        private int getCoprightBit()
        {
            return (int)((bithdr >> 3) & 1);
        }

        private int getOrginalBit()
        {
            return (int)((bithdr >> 2) & 1);
        }

        private int getEmphasisIndex()
        {
            return (int)(bithdr & 3);
        }

        private double getVersion()
        {
            double[] table = { 2.5, 0.0, 2.0, 1.0 };
            return table[getVersionIndex()];
        }

        private int getLayer()
        {
            return (int)(4 - getLayerIndex());
        }

        private int getBitrate()
        {
            // Bei Variabler Bitrate wird ein Mittelwert gebildet
            if (boolVBitRate)
            {
                double medFrameSize = (double)lngFileSize / (double)getNumberOfFrames();
                return (int)((medFrameSize * (double)getFrequency()) / (1000.0 * ((getLayerIndex() == 3) ? 12.0 : 144.0)));
            }
            else
            {
                int[, ,] table =        {
                                { // MPEG 2 & 2.5
                                    {0,  8, 16, 24, 32, 40, 48, 56, 64, 80, 96,112,128,144,160,0}, // Layer III
                                    {0,  8, 16, 24, 32, 40, 48, 56, 64, 80, 96,112,128,144,160,0}, // Layer II
                                    {0, 32, 48, 56, 64, 80, 96,112,128,144,160,176,192,224,256,0}  // Layer I
                                },
                                { // MPEG 1
                                    {0, 32, 40, 48, 56, 64, 80, 96,112,128,160,192,224,256,320,0}, // Layer III
                                    {0, 32, 48, 56, 64, 80, 96,112,128,160,192,224,256,320,384,0}, // Layer II
                                    {0, 32, 64, 96,128,160,192,224,256,288,320,352,384,416,448,0}  // Layer I
                                }
                                };

                return table[getVersionIndex() & 1, getLayerIndex() - 1, getBitrateIndex()];
            }
        }

        private int getFrequency()
        {
            int[,] table =    {    
                            {32000, 16000,  8000}, // MPEG 2.5
                            {    0,     0,     0}, // reserved
                            {22050, 24000, 16000}, // MPEG 2
                            {44100, 48000, 32000}  // MPEG 1
                        };

            return table[getVersionIndex(), getFrequencyIndex()];
        }

        private string getMode()
        {
            switch (getModeIndex())
            {
                default:
                    return "Stereo";
                case 1:
                    return "Joint Stereo";
                case 2:
                    return "Dual Channel";
                case 3:
                    return "Single Channel";
            }
        }

        private int getLengthInSeconds()
        {
            // "intKilBitFileSize" geteilt durch 1000 damit die Formel stimmt "Kilobits/second"
            int intKiloBitFileSize = (int)((8 * lngFileSize) / 1000);
            return (int)(intKiloBitFileSize / getBitrate());
        }

        private string getFormattedLength()
        {
            // Komplette Sekunden
            int s = getLengthInSeconds();

            // Sekunden formatiert
            int ss = s % 60;

            // Komplette Minuten
            int m = (s - ss) / 60;

            // Formatierte Minuten
            int mm = m % 60;

            // Komplette Stunden
            int h = (m - mm) / 60;

            // mach "hh:mm:ss"
            return h.ToString("D2") + ":" + mm.ToString("D2") + ":" + ss.ToString("D2");
        }

        private int getNumberOfFrames()
        {
            // Die Anzahl der MPGFrames ist abhängig obs eine Variable Bitrate oder eine feste ist
            if (!boolVBitRate)
            {
                double medFrameSize = (double)(((getLayerIndex() == 3) ? 12 : 144) * ((1000.0 * (float)getBitrate()) / (float)getFrequency()));
                return (int)(lngFileSize / medFrameSize);
            }
            else
                return intVFrames;
        }
    }
10.11.2010 - 16:01 Uhr

Hi ,

teste mal bitte folgendes :

Füge einen Button ein

In den Eventhandler packste bitte folgendes:

foreach (DataGridViewRow row in dataGridView1.SelectedRows)
            {
                DataGridViewRow tempRow = row;
                int NextRow = dataGridView1.Rows.GetPreviousRow(row.Index, DataGridViewElementStates.None);
                dataGridView1.Rows.Remove(row);
                dataGridView1.Rows.Insert(NextRow-1,tempRow);
            }

Dann Zeile markieren und Knopp drücken

ACHTUNG ungetestet, da gerade keine brauchbare IDE in der nähe.
Wenns klappt super wenn nicht kriegste gegen 19 Uhr ne andere Variante ^^

09.11.2010 - 15:23 Uhr

Oh beim zweiten mal lesen hab ich es nun begriffen : Du willst quasi wie bei Drag and Drop eine Zeile hinter eine andere einreihen können ja ?

09.11.2010 - 15:10 Uhr

Hi,

hast du eine ID für jeden Datensatz ?
Wenn ja , kannst du im Datagrid eine Spalte definieren wo genau diese Nummer eingetragen wird(Evtl. unsichtbar für den User)

Und schon hättest du deine Zuordnung

Aber ne andere Frage : Wofür brauchst du das ? Durch das Binden kannst du auf dem Datagrid arbeiten welches nur auf deine DataTable verweist.
Effektiv musst du nichts weiter machen als nach möglichen Änderungen zu speichern

Siehe LINK

31.10.2010 - 20:01 Uhr

Hi Talla,

werde mir die Links mal anschauen , Danke

31.10.2010 - 19:42 Uhr

Hallo zusammen,

nachdem mit zero_x mit meinem MEF Problem geholfen hat (Siehe Hier) kam bei mir der Gedanken auf nun ein Problem mit Dependency Injection zu lösen.
Dabei hat zero_x nun etwas durchklingen lassen das MEF sich dafür evtl. gar nicht eignet ?
Frank Dzaebel ein MVP schwört auf MEF und lässt da nix an MEF rankommen.

Wie seht Ihr das ? Ist MEF ein brauchbares DI Framework ? Oder würdet Ihr zu etwas anderem raten?
Hat jmd schon mit MEF aktiv gearbeitet und kann evtl. sogar Beispiele posten ?

Grüße

31.10.2010 - 19:35 Uhr

Hi ,

danke für die Tipps.

Ich mache dann mal nen Thread auf 😉

31.10.2010 - 14:27 Uhr

Hi,

also wenn ich das richtig verstanden habe :

Interface IFileReader in eine DLL packen.

Alle FileReader wie HaymarketFileReader referenzieren diese DLL.

Und im Host lade ich dann alle vom Typ IFileReader rein .

Richtig ?

Das würde aber auch bedeuteten das jede FileReader irgendwie noch den FileSearcher kriegen muss.
Wobei : Ich kann den FileSearcher als Klasse in den Host mit reinknallen und den dann als Interface an die jeweiligen Klassen übergeben oder ?
Quasi als Dependency Injection ?
Oder macht es dann eher Sinn die "gesuchten" Dateien den jeweiligen Implementierungen von IFileReader zu übergeben ?

Grüße

31.10.2010 - 14:15 Uhr

Hi Ok Sorry also :

Program -> (siehe Anhang)

Das ist die GUI für das Programm
Dieses Programm soll universell, je nach Dateinhalt Daten verarbeiten und Daten versenden .

So sieht zB eiune dieser Klassen aus .

 class HaymarketFileReader:IFileReader
    {
        private readonly string _ExportFolder;

        public event EventHandler<LogEventArgs> OnLogEntry;
        public event EventHandler<ErrorEventArgs> OnError;
        public event EventHandler<FileSendEventArgs> OnFileSend;

public void StartSearch()
        {
            var fileSearcher = new FileSearcherFtp();
            fileSearcher.OnError += new EventHandler<ErrorEventArgs>(fileSearcher_OnError);
            fileSearcher.OnSearchComplete += new EventHandler<FileSearchEventArgs>(fileSearcher_OnSearchComplete);
        }
}

Und genau diese Klassen sollen als DLL ausgelagert werden Knackpunkt : Jede Klasse soll den FileSearcher nutzen.
Dieser liegt aber wiederrum in einer anderen DLL.

Und da liegt mein Problem wie binde ich das am günstigsten mit MEF ein ?

Hoffe du hast das jetzt ein wenig besser verstanden.

Grüße

31.10.2010 - 13:35 Uhr

Hallo zusammen,

ich ahbe ein kleines Problem :

Meine Anwendung soll nun per MEF Addons bekommen.
Besser gesagt mehrere neue Klassen.
Das Programm sucht an vorgegebenen Orten nach Dateien und verarbeitet die .

Ich habe nun für verschiedene Files mehrere Klassen
Diese Klassen rufen eine generische FileSearcherklasse auf.

So nun zum Problem : Wenn ich nun per MEF immer neue Klassen nachschiebe müssen die ja zwangsläufig jede diese Filesearcherklasse implementieren, also muss ich jeder DLL diese Klasse mitgeben.
Das würde aber gegen die Prinzipien sprechen wie DRY etc.

Wie Löse ich das ganze nun am klügsten ?

Grüße

27.10.2010 - 11:09 Uhr

Alle Formen von Heavy Metal MÜSSEN beim Programmieren sein.

26.10.2010 - 15:49 Uhr

Hi Erfinder des Rades,

genau das war der Knackpunkt bzw. das Property was ich übersehen habe 😃

Danke

26.10.2010 - 14:56 Uhr

Hi,

foreach (var a in ques.Answers)
{
CheckBox cb = new CheckBox();
cb.Text = a.Answer;
cb.TextAlign = ContentAlignment.MiddleLeft;
cb.CheckedChanged += new EventHandler(Checkbox_CheckedChanged);
pnlAnswer.Controls.Add(cb);
//pnlAnswer.Refresh();
}

In einer schleife, die benötigten Daten kommen aus einer Datenbank (also Labeltext)

Selbst wenn ich den Container auf 2000 px aufblähe kappt er die Sachen
mit dem WRAP habe ich auch rumgespielt

26.10.2010 - 14:31 Uhr

Hallo,

irgendwas scheine ich zu übersehen :

Wenn ich in ein FlowLayoutpanel programmatisch eine Checkbox hinzufüge kappt er ab xx Zeichen den Text ab.

Irgendwas übersehe ich oder ?

Grüße

26.10.2010 - 09:59 Uhr

Ok Werde mal schauen ,

denke auch das ein Dualcore mit 2-3 GB Ram ausreichend für Visual Studio sein sollte 😃

Grüße

26.10.2010 - 08:46 Uhr

Hallo zusammen,

da ich mir ein Laptop zum Programmieren holen will, es aber kein neues sein muss, habe ich mir den Laden Lapstore mal angeschaut. Das Angebot sieht echt gut aus.

Hat schon jmd Erfahrung mit diesem Laden gemacht ?

Grüße

22.10.2010 - 08:11 Uhr

Strategymuster und XML bzw. Textdateien klingt mir doch anch nem guten Lösungsansatz

Vielen Dank 😃

21.10.2010 - 15:37 Uhr

Hallo Comm,

ich finde zur Zeit keinen Anfang für folgendes Programm:

Ein Programm zum zerlegen von txt dateien.

Features :
Der User soll angeben welcher Trenner vorhanden ist ODER die Länge der ZErlegung angeben (Ähnlich Datenimport von Excel)
Zusätzlich soll jedes zerlegte Feld mit x Formeln belegt werden, welche aber vorgegeben sind (zB Wenn in Feld X der Wert "Mann" steht soll das Zielfeld eine "1" bekommen)

Wie ihr seht, die Idee ist da und die Featureliste nur eine Implementierung fehlt bzw. die zündende Initailidee.
Wie ich Dateien einlese und nach Trennern Splitte bzw. nach Feldlängen kriege ich hin.
Nur wie persistiere ich die Formeln und wende diese auf die Felder an ?`

Meine Idee wäre eine XML wo alle Formeln enthalten sind.

Also wer hat den Zündfunken für meinen Diesel 😉

Grüße

19.10.2010 - 08:27 Uhr

inflames Lösung ist schon vollkommen ok :

Du hast eine gewisse Anzahl an FileSysWatchern in einer Collection die x beliebig Groß ist.
Denkbar wäre das ganze auch in einem Dictionary wo du als Key den jeweiligen Pfad hast und und und

Aber Achtung ! Ab einer gewissen Zahl , je nach System , kann es vorkommen das die Dinger nicht richtig reagieren. Je nach einkommenden Daten ist es nötig den Puffer für den FSW nach oben zu setzten.

14.10.2010 - 09:28 Uhr

zB

var enc = System.Text.Encoding.GetEncoding(1252);
string s = "Das ist ein TEST";
byte[] b = enc.GetBytes(s);

08.10.2010 - 11:51 Uhr

Hi,

wieso das Rad neu erfinden wenn es in Pefektion mit Alufelgen vorhanden ist ?

Es gibt unzählige Scheduler etc.

08.10.2010 - 10:50 Uhr

Ich empfehle Quartz.net

Ist bei mir sehr erfolgreich im Einsatz
http://quartznet.sourceforge.net/

Grüße

19.09.2010 - 11:14 Uhr

Hi,

damals zu c++ Zeiten 😉 musste man noch sich das Debugrecht für den aktuellen User holen.

Habe auf die schnelle nur nen c++ Beispiel gefunden, kannst aber daraus den c# Code herleiten

Klick mich

Grüße

19.09.2010 - 00:45 Uhr

Hi,

erstmal .net und dll Injection oder besser gesagt dll injection Allgemein = BÖÖÖÖÖSE !

Zweitens : Es fehlt mir der Parameter [unsafe]

Nur so sind Zeigeroperationen möglich.

unsafe (C#-Referenz)

Den Rest musste dir selber herleiten , ich unterstütze keine Fremdeinspeisung 😉

19.09.2010 - 00:40 Uhr

Hallo,

welche Technik nutzt du denn ?

ASP.NET ?
ASP.NET MVC ?

Hier mal ein allgemeiner Ansatz aus dem MSDN LINK

Grüße

16.09.2010 - 09:42 Uhr

Hi Herbivore,

ok CodeDOM habe ich auch von gelesen, Danke

Ich habe Die Frage aufgemacht um vll. andere Lösungsansätze zu erfahren.

Vll geht das ganze auch anders.

16.09.2010 - 09:11 Uhr

Hallo zusammen,

für einen Kundenauftrag muss ich verschiedene Reports per Excel generieren.
Dieses mache ich mit dem CarlosExcelwriter.
Soweit so gut.

Ich würde aber gerne das ich die fertigen Codeteile aus einer Datenbank ziehe und just in time kompliere sodass ich quasi nur Parameter hinterlegen muss

Bsp.

Kunde klickt auf Export
-> csharp Datei wird aus DB geladen und erzeugt das Exceldokument

Welche anderen möglichkeiten stehen mir noch offen ?
Crystalreports ?
XML ?

Danke für eure Anregungen

10.08.2010 - 15:32 Uhr

Hi,

soetwas gibt es nicht.
Deinen bedürfnissen eher passend wäre eiN Dictionary.
Du kannst dir natürlich die Mühe machen und zB eine List<DeineKlasse> udn eine eigene Klasse definieren.
Dir steht es auch frei eine eigene Implementation zu machen, ich denke mit dem Dictionary kommst du weiter (Dictionary<string,object>)

Grüße

23.05.2010 - 20:49 Uhr

Ich finde es seeeeeehr ungünstig Arrays dieser Größe übers Netz zu jagen.

Denk mal lieber über Stückelung oder Streams nach bzw. Asynchrone Methoden.
Das was du vor hast ist eifnach zu viel für den Äther .

Grüße

23.05.2010 - 20:20 Uhr

Hi,

warum so kompliziert ?

Für einfaches handling und ohne jegliche inkompatibilitäten empfiehlt sich XML

mit LInq2XML sogar einfach zu lesen und zu schreiben.

Für kleine Projekte finde ich Access outdatet , XML bietet dir quasi felxibilität kann aber auch sowas wie Primary Keys abbilden.

Grüße