Laden...

Forenbeiträge von Telefisch Ingesamt 375 Beiträge

27.07.2018 - 09:49 Uhr

Ich bin mir schon recht sicher, dass es nicht geladen wird, da die zugehörige Action nie erreicht wird.

Mittlerweile glaube ich einen Ansatz gefunden zu haben.
Offensichtlich ist das (nach-)Laden eines Views seit Bootstrap 3.3 nicht mehr direkt supported:

It is important to note here that Bootstrap version 3.3 deprecated the auto fetch feature and some additional JavaScript will be needed once it is removed. In earlier versions, however, it handles everything for you. The reason version 3.3 removes the capability was that they determined it was out of scope for what is primarily a CSS framework. You can read more about the issue
>

Aber ich fürchte das ist noch viel zu hoch für mich.
Ich finde da überhaupt keinen Ansatz wie ich weiter kommen könnte 😦

26.07.2018 - 14:59 Uhr

Hallo Forum,
ich habe das Internet bisher erfolglos nach einer Lösung für mein Problem durchsucht und unzählige Beispiele ausprobiert.
Zuletzt dieses hier:
https://amlblog.net/programming/2016/04/25/bootstrap-modals-and-razor.html

Ich möchte einen Auswahldialog mittels ActionLink und zugehöriger Action starten.
Problem ist im Augenblick eigentlich, dass das partialView nicht geladen wird, sobald data-toggle = "modal" übergeben wird.

ActionLink:


@Html.ActionLink("kopieren", "CopyDialog", "Projects",
    new { Id = Model.Id },
    new
    {
        @class = "btn btn-secondary",
        data_target = "#modal-container",
        data_toggle = "modal"
    })

Action:

public ActionResult CopyDialog(int Id)
        {
            ViewBag.Id = Id;
            return PartialView("_CopyDialog");
        }

und das View:

<div id="modal-container" class="modal fade hidden-print" tabindex="-1" role="dialog">
    <div class="modal-dialog">

        <div class="modal-header">
            <h4>Funktionsgruppe aus Vorlage kopieren</h4>
            <a href="#" class="close" data-dismiss="modal">&times;</a>

        </div>

        <div class="modal-content">
            CONTENT
            @ViewBag.Id
        </div>

        <div class="modal-footer">
            <button type="button" class="btn btn-secondary" data-dismiss="modal">Abbruch</button>
            <button type="button" class="btn btn-default" data-dismiss="modal">OK</button>

        </div>
    </div>
</div>

Lasse ich beim ActionLink data_toggle = "modal" weg, wird das View (natürlich ohne Layout-View) geladen.
Was mache ich falsch?

Gruß Carsten

14.07.2018 - 08:18 Uhr

Hallo Taipi,
Genau die Struktur, die Du da aufzählst habe ich ja.
Es geht hier lediglich darum die erste Ebene in einem nem Treeview darzustellen.
Meine aktuelle Struktur sieht so aus:

Funktionsgruppen
—Eigenschaften
— Funktionen
——Eigenschaften
——Unterfunktionen
———Eigenschaften
———Makros
————Eigenschaften

Hier nochmal eine drei- oder vierstufige Schachtelung vor zu schalten führt eher zu mehr Fragen als zu Komfort.
Es handelt sich hier im übrigen um eine Engineering Datenbank die tatsächlich nur von sehr wenigen Bearbeitern verwendet wird.
Vielleicht baue ich später noch eine Art selbst erweiterndes Dropdown-Menü dazu damit bereits benutzte Phrasen vorgeschlagen werden.

Nun denn, in ein XML habe ich die Hierarchie mittlerweile übergeben können.
Jetzt bin ich grade beim Treeview.

Gruß Carsten

13.07.2018 - 08:38 Uhr

Hallo MrSparkle,
natürlich hast Du Recht, dass man das grade bei ASP.Net MVC Trennen kann.
Mein Problem liegt in der Gänze allerdings in allen drei Bereichen und als ich den Threat angefangen hatte wollte ich das ganze Problem lösen.
Ich habe mich dann kurzfristig dazu entschlossen erstmal das Aufbereiten der Daten zu erledigen.
However...

Zum Problem.
Ich habe im Augenblick eine Astreine, geschachtelte Datenstruktur, die sich eigentlich ideal für ein Treeview eignet.
Bei den ersten Versuchen mit Treeviews musste ich allerdings feststellen, dass der eigentlich identifizierende Begriff des ersten Knotens einfach zu lang werden wird.
Daher wollte ich ein zusätzliches Feld für diese Strukturbegriffe einfügen um auch die "Gruppierung" dieser teilweise sehr ähnlichen Datensätze zu ermöglichen. Das lässt die Datenstruktur flexibel und schlank.

Als Beispiel:
Es gibt vielleicht 40 Datensätze die wie folgt benannt sind:
Heizkreis, geregelt, Mischer, Pumpe Typ 25/1-12
Unterschiede lediglich beim Pumpentyp
Dann nochmal 10 Datensätze:
Heizkreis, ungeregelt, Mischer, Pumpe Typ 25/1-12
Unterschied beim Pumpentyp und statt geregelt, wie die ersten Datensätze, ungeregelt.

Dann gibt es 12 Datensätze nach folgendem Muster:
Mischer, 3-pkt, Typ ABC
auch hier, Unterscheidung nach Typ.

Und jetzt noch 18 Datensätze wie folgt:
Mischer, 2-pkt, Typ 123
und wieder Unterscheidung im Typ.
Und Unterschied zum vorigen Beispiel in der Ansteuerung.

Es gäbe im Idealfall hier also einen Knoten Heizkreis, darunter einen Knoten geregelt und einen ungeregelt, die jeweils einen Knoten Mischer enthalten...usw.

Alle diese Datensätze haben ihre (für den Bearbeiter) Bezeichnung im gleichen Feld (Name).
Stelle ich diese Datensätze (die nebenbei noch einige schachtelungsebenen beinhalten) im Tree untereinander dar habe ich gleich unter dem ersten Knoten 80 Datensätze.
Da die Bezeichnung dem Bearbeiter aber freigestellt werden muss, habe ich auch auf eventuelle Sortierebenen keinen Einfluss.
Klar kann ich jetzt hergehen und Felder (oder sogar Tabellen) für 4 oder 5 Ebenen in jedem Datensatz anlegen aber das M.E. beschissen zu handeln und obendrein auf diese vorgefertigten Ebenen beschränkt.
Was liegt also näher als die Tree-Struktur nach einem String zu erstellen, den der User frei definieren kann? So hat er seine eigene Ordnung und muss für sich den besten Weg finden.

Um nun Dein vorgeschlagenes Datenmodell zu füttern brauche ich eben diese hierarchischen Daten. Und genau das ist es um was es geht.
Eben diese Daten aus dem String zu extrahieren und zur weiteren Verwendung zwischen zu speichern.

Wie gesagt, ich bin schon für einen passenden Suchbegriff dankbar 😦

12.07.2018 - 17:55 Uhr

Nunja,
das ist nicht so sauber zu trennen.
Datenquelle sind die klassischen Models aus ASP.Net MVC, was im Moment aber eher nebensächlich ist. Ziel ist nachher ein, wie auch immer ausgeführtes Treeview auf der Website.
Auch da bin ich noch nicht ganz sicher.
Da einfaches Databinding mit meiner Datenquelle aber eher unmöglich ist habe ich mittlerweile den Ansatz alles „zu Fuß“ zu programmieren.
In welcher form dann das Treeview erstellt wird, wäre der nächste Schritt.

Wenn es da natürlich irgendwelche praktischen Wege gibt bin ich da sehr empfänglich für. ich hab den ganzen Tag mit den klassischen <ul><il> etc. rumgedaddelt, bin aber zuletzt gedanklich bei einer XML Struktur gelandet.
Aber wie gesagt, da bin ich noch völlig planlos 😦

Ich wollte jetzt erstmal die Daten aufbereiten und hätte diese dann halt manuell in eine Baumstruktur gepresst.
Somit ist es eigentlich wirklich momentan eher ein c# Thema.
Bin aber für jeden Hinweis dankbar...

12.07.2018 - 17:07 Uhr

Hallo Forum,
ich hab grade ne Denkblockade.
Ich möchte aus mehreren Strings eine Baumstruktur aufbauen und dann ein Treeview erstellen.
Aber eins nach dem Anderen.

Mein erstes Problem ist eigentlich die Daten dafür aufzubereiten.

Ich habe als Beispiel folgende Strings (einzelne Begriffe mit ',' getrennt:

Parent1, Child1, Child2, Child3
Parent2, Child1, Child2, Child3
Parent1, Child1, Child2, Child4
Parent1, Child1, Child2, Child4, Child5
Parent2, Child1, Child2, Child4
Parent1, Child2, Child3, Child4

Die Struktur ist immer der Reihenfolge nach, erster, zweiter, dritter, n-ter Knoten.
Die Anzahl der Knoten kann unterschiedlich sein. Es ist aber möglich, dass Knoten in verschiedenen Ebenen mehrfach vorkommen. -> keine Sortierung der Reihenfolge der Schachtelung.

Das Ergebnis sollte also so aussehen:

Parent1
>Child1
>>Child2
>>>Child3
>>>Child4
>>>>>Child5
>Child2
>>Child3
>>>Child4
Parent2
>Child1
>>Child2
>>>Child3
>>>Child4

Also mein erster Ansatz ist jetzt die Texte mit Split(',') in Arrays aufzuteilen und diese dann zusammen wieder in einem Array zu sammeln.
Das scheint mir aber alles etwas umständlich, zumal ich an jedem Knoten ja dann auch irgendwie wieder die zugehörigen Detail-Childs anfügen muss.

Gibt es für sowas irgend einen praktikablen Workaround?
Bin schon für die richtigen Suchbegriffe dankbar 🤔

Gruß Carsten

02.07.2018 - 15:32 Uhr

Ok, danke.
Werde mich da mal versuchen rein zu lesen...

02.07.2018 - 14:43 Uhr

Ah ok...
dann würdest Du auch das User.Name-Property nehmen um auf den angemeldeten User zu referenzieren?

02.07.2018 - 14:12 Uhr

Hallo Forum,
als ASP.Net MVC-Anfänger stehe ich vor einem, für mich komplexen Problem.

Ich habe ein Model zur Erfassung von Daten, in der auch der User erfasst werden soll, der zuletzt an einem Datensatz gearbeitet hat.
Da die Asp-Authetifizierung ja bereits von Haus aus implementiert ist, würde ich genau diese Daten dazu verwenden wollen.
Das Model enthält also ein Feld byUser vom Typ string. Hier soll die Id aus der AspNetUsers-Tabelle, des angemeldeten Users eingetragen werden.

Aber genau hier stehe ich schon vor dem ersten Problem.
Wie komme ich da ran?

Mit User.Identity habe ich ja nur Zugriff auf den Namen...

13.08.2015 - 11:40 Uhr

Hallo und danke für die Antworten...

Nach einigen Experimenten und Fehlversuchen hat es jetzt so geklappt:


            //XML bearbeiten
            XElement po = XElement.Load(tempFile);
            IEnumerable<XElement> childElements =
                from el in po.Elements()
                select el;
            foreach (XElement el in childElements)
            {
                //nur Elemente Namens O17 mit entsprechenden Attribut-Werten bearbeiten
                if(el.Name == "O17" 
                    && el.Attribute("P20121").Value == "1"
                    && el.Attribute("P20400").Value != "")
                {
                    string prfx = "";
                    if (el.Attribute("P20400").Value.Substring(0, 2) == "IW")
                        prfx = "ai";
                    else if (el.Attribute("P20400").Value.Substring(0, 2) == "QW")
                        prfx = "ao";
                    else if (el.Attribute("P20400").Value.Substring(0, 2) == "OW")
                        prfx = "ao";
                    else if (el.Attribute("P20400").Value.Substring(0, 1) == "I")
                        prfx = "di";
                    else if (el.Attribute("P20400").Value.Substring(0, 1) == "Q")
                        prfx = "do";
                    else if (el.Attribute("P20400").Value.Substring(0, 1) == "O")
                        prfx = "do";

                    el.Attribute("P20402").Value = prfx + el.Attribute("P20403").Value;


                    Console.Write("Name:" + el.Name + " ermittelt:" + el.Attribute("P20402").Value+ "\n");
                
                }
            }
            po.Save(tempFile2);
            Console.ReadKey();

Danke für Eure Tips 😉

12.08.2015 - 18:36 Uhr

Lies die XML-Datei ein, ändere den Wert und speicher sie wieder ab. Dann brauchst du dich um Header, Namespaces etc. gar nicht kümmern.

Das klingt ja sehr einfach aber mit was einlesen?
Wenn ich sie mit dem Reader lese kann ich sie doch damit nicht wieder schreiben oder hab ich da was verpeilt?

Schau dir mal LINQ to XML an

Bin ich auch eben drüber gestolpert.
Sieht etwas mehr nach Datenbank aus, das liegt mir besser. Mal sehen ob ich damit was anfangen kann.
Die XML-Datei ist ziemlich unordentlich / unorganisiert 😦

12.08.2015 - 18:08 Uhr

Hallo Ihr Wissenden.
nach langer Abstinenz komme ich mal wieder zum Programmieren und habe auch gleich ein Problem, bei dem Ihr mir hoffentlich helfen könnt.

Ich habe eine XML-Datei in der ein Attribut-Wert angepasst werden soll.
Ich finde aber immer nur Reader und Writer aber keine Möglichkeit zu editieren.
Jetzt bin ich soweit dass ich im Grunde mit einem Reader lesen will und mit einem Writer schreiben.
Aber wie kann ich am elegantesten den ganzen Krempel wie Header und Knoten mit deren Attributen, die mich nicht interessieren etc. rüber schaffen?
Gibt es da nichts praktischeres?

Danke schonmal

24.09.2010 - 13:21 Uhr

nice...
danke

23.09.2010 - 15:40 Uhr

verwendetes Datenbanksystem: Access97 / 2007

Hallo Forum,
ich möchte dem user meiner Applikation ermöglichen auch passwort-geschützte Access-Datanbanken zu öffnen.
Generell ist das mit dem Connection-String ja kein Thema aber da ich davon ausgehen muss, dass der User nicht genau weiß, ob seine DB mit Passwort geschützt ist (Erfahrungswerte) würde ich gerne vor einem Verbindungsaufbau mit entsprechendem Fehler testen ob ein Passwort und/oder User notwendig ist.
Geht das irgendwie?
Oder muss ich erst mit try catch testen ob es ein PW gibt?

danke Tele

23.07.2010 - 11:54 Uhr

Dank Dir MrSparkle,
das ist eh schon meine Standard-Lektüre.
Oft reicht ja der Hinweis in die richtige Richtung.

Also danke nochmal
Gruß Tele

23.07.2010 - 10:13 Uhr

Nach kurzer Unterbrechung konnte ich mich endlich wieder dem Thema widmen.
Die Schnittstelle war die einfachste Lösung.

Hätte ich selbst drauf kommen können aber um den hier nach Grundlagen schreienden mal etwas die Ursache für mein Unwissen mitzuteilen:

Ich habe das Thema Klassen und Schnittstellen bereits mehrfach durchgeackert aber konnte beim "lernen" nie einen Sinn in Schnittstellen sehen, da ich bisher nie vor der Problematik stand Diese verwenden zu müssen (bis jetzt).
Mir war es einfach nie einleuchtend warum ich eine Schnittstelle anbieten sollte, wenn ich doch die Klasse selbst verwenden kann.
Daher habe ich den Zusammenhang schlicht nicht gesehen und das Thema deswegen verpennt.
Und ja, dass ich für eine Foreach-Schleife eine Klasse brauche ist mir durchaus bekannt.
Es gibt dann halt "verzeifelte" Versuche selbst ans Ziel zu kommen, weil ich mich nicht auf dem Wissen anderer Ausruhen will.

Und ja, mag sein, dass ich hier wieder einmal den Deppen gemacht habe und die Grundlagen schon wieder nicht verstanden habe 😦
Ich entschuldige mich tausend mal dafür aber ich bin leider kein Vollzeitprogrammierer.
Da hier offensichtlich immer wieder die Diskussion aufkommt was Grundlagen sind und dass man diese Fragen hier nicht stellen darf haben ich mal ne ganz banale Grundlagenfrage:

Kennt jemand ein Grundlagen-Fähiges Forum?
Die hier anwesenden Vollprofis und Berufsprogrammierer haben doch auch mal klein angefangen...

Vielen Dank an alle helfenden Mitglieder.

16.07.2010 - 15:01 Uhr

Also, André...
ja, obj ist defniert.
Wenn Du mal schauen magst, ganz oben im Code (als Typ).
Und ja, da ist wieder die Frage wo fängt Grundlage an und wo hört sie auf.

Kao, danke für den Tipp.

16.07.2010 - 13:46 Uhr

Guter Hinweis, Danke
Schau ich mir an.

Weitere Tips willkommen 😉

16.07.2010 - 13:28 Uhr

Hallo Forum,
Ich stehe hier vor einem Problem mit einer foreach-Schleife.

Grund meiner "merkwürdigen" Schleife ist folgender:
Ich habe eine Datenbank, die mittels ORM bearbeitet wird.
Jetzt möchte ich einen Tree mit einigen Feldern aus einigen Tabellen aufbauen.
Diesen muss ich "manuell" erstellen, wobei jede Tabelle ihren eigenen Zweig bekommt.
Damit ich aber nicht für jede Tabelle die gleiche Methode schreiben muss, hatte ich mit vorgestellt einfach eine Methode zu verwenden und den Typ der Tabelle (quasi das Tabellenobject) in der Schleife auszutauschen.

Da ich jeden Zweig einzel aktualisieren möchte rufe ich die Methode für jede Tabelle einzeln auf und übergebe ihr im Grunde nur eine Kennung anhand derer ich das Tabellenobjekt ermittle (natürlich könnte ich Ihr gleich den typ übergeben, hätte aber M.E. auch keine Auswirkung auf das Problem/die Lösung):

 
private void PopulateStructuredNodes(TypeOfDevice type)
        {
            TreeListNode ParentNode = GetNodeWithTagString(treeView.FocusedNode, "database");
            // Typ des zu aktualisierenden Knotens ermitteln
            string NodeName;
            string Filter ="";
            Type obj = typeof(xpo.Device);   //der Versuch schonmal einen Default-Typ zu definieren
            XPCollection col = db.colDevices;
            switch (type)
            {
                case TypeOfDevice.DEVICE:
                    NodeName = "fieldDevices";
                    Filter = "TypeOfDevice = 0";
                    obj = typeof(xpo.Device);
                    col = db.colDevices;
                    break;
                case TypeOfDevice.CABLE:
                    NodeName = "cables";
                    Filter = "TypeOfDevice = 1";
                    obj = typeof(xpo.Cable);
                    col = db.colCables;
                    break;

.... usw.
         

in meiner Schleife greife ich nur auf Felder zu, die in jeder Tabelle vorhanden sind.
In meinem Leichtsinn habe ich folgendes verucht:


foreach (obj item in col)
            {
                strHigherLevelFunction = item.HigherLevelFunction;
                strFunction = item.Function;
                strInstallationSite = item.InstallationSite;
                strMountingLocation = item.MountingLocation;
                strFunctionNumber = item.FunctionNumber;
                strUserDefined = item.UserDefined;
                strBMK = item.BMK;

...usw

Das haut natürlich vorne und hinten nicht hin.
Zunächst bekomme ich die Meldung, dass Typ oder Namespace für obj nicht gefunden werden konnte und dann sind natürlich die ganzen Eigenschaften von item unbekannt.

Wie geht man an solch ein Werk heran?
Liege ich grundsätzlich falsch?

Danke im Voraus,
Tele

08.06.2010 - 14:29 Uhr

jaha und ich kann auch xslx mit oledb öffnen
Bei Deiner variante baue ich mir nur wieder Probleme ein, sobald vielleicht o2010 was anderes als Connectionstring braucht, da ich davon ausgehe, dass dort die Dateiendung ebenfalls xslx sein wird und es auch hier ein ZipStream sein wird.
Wenn ich aber von unten nach oben alle versionen durchprobiere weiss ich sicher, ob ich die Datei auf bekomme und habe so alle Fehler abgefangen, bis zum endgültigen "geht nicht".

Leider ist das aber im Augenblick alles wertlos, da ich offensichtlich die gelesenen Daten nicht wieder in Excel rein bekomme, nachdem ich sie geändert hab.
Oder fällt Dir dazu was ein?

Im Augenblick lade ich alles in ein Dataset und bearbeite die Daten da. Dann hatte ich angenommen ich kann das einfach wieder zurück schieben um die vorhandenen Werte zu aktualisieren.
Anscheinend hat Microsoft hier nciht fertig gemacht. Ich hab zumindest nix gefunden.

Gruß Carsten

08.06.2010 - 10:10 Uhr

verwendetes Datenbanksystem: DataTable / OleDb / Excel

Hallo Forum,
ich habe nun erfolgreich meine Excel Tabelle gelsen und im Datatable auch mächtig Daten bearbeitet.
Jetzt stehe ich aber vor dem Problem, dass ich keine Idee habe, wie ich die Daten jetzt nach Excel zurück schreiben kann.
Die Connection ist noch offen, sodass der Zugriff im Grunde zwischen öffnen und schließen komplett abgeschlossen sein könnte.
So hole ich mir die Daten:


            DataSet ExcelData = new DataSet();
            OleDbConnection con = new OleDbConnection();
            ExcelReader.OpenConnection(ref con, txtWorkbook.Text, false);  //hier steht eine static Klasse hinter, die automatisch das passende Format öffnet
            if (con == null) 
            { return ; }

            DataTable sheets = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
            foreach (DataRow sheet in sheets.Rows)
            {
                //gewünschtes Tabellenblatt auswählen
                string tableName = sheet["Table_Name"].ToString();
                if (tableName != cmbWorksheet.Text + "$")
                    continue;
                string sql = String.Format("SELECT * FROM [{0}]", tableName);   //alle Datensätze auswählen
                using (OleDbDataAdapter adap = new OleDbDataAdapter(sql, con))
                {
                    adap.Fill(ExcelData, tableName);  //Dataset füllen
                    break;
                }
                break;
            }

Dann wird etwas im DataSet.Table[0] gewerkelt und soll jetzt nach Excel zurück geschrieben werden.

ExcelData.AcceptChanges() bringt nix und mit allem was ich bisher gefunden habe kann ich nicht wirklich was anfangen.
Muss ich hier ein SQL-Command erzeugen und ausführen?
Wenn ja, wie sähe das aus?

Hilfee....
Danke und Gruß Carsten

08.06.2010 - 09:45 Uhr

Hallo Hobie,
vermutlich bin ich eh vieel zu spät und verstehe auch gar nicht, warum keine Antwort gekommen ist aber, so wie ich das sehe, passt Dein Connectionstring nicht.
Setze den Parameter HDR auf NO und Du solltest auch in die erste Zeile schreiben können.
HDR steht für Header. Wenn der auf Yes gestellt ist, liest du die erste Zeile als Spaltenüberschriften (ColumName) ein.

Gruss Tele

07.06.2010 - 13:51 Uhr

verwendetes Datenbanksystem: Dataset

Hallo Forum,
ich stehe grade völlig aufm Schlauch und weiß ehrlich gesagt nciht wonach ich suchen soll.

Folgendes Scenario:
Es gibt einen DataTable mit Informationen und u.a. einer Spalte mit einem Key.
Ein zweiter Table, ebenfalls mit mit Infos und Key.

Jetzt habe ich ein Fenster mit zwei Listen (eine enthält die Spaltenüberschriften des ersten Table und die andre entsprechend die Überschriften des Zweiten).
Nun kann der User in beiden Listen einen Eintrag anwählen und mit einer Taste "verbinden".
Diese "Verbindung" wird in der zweiten Liste so gespeichert, dass der Spaltenname der ersten Liste dorthin übertragen wird.
Diese Liste enthält dann folgende Info:
Spaltenname 2. Liste, Spaltennummer 2.Liste und Spaltenname erste Liste.
Da die zweite Liste aus Excel kommt und deren Spaltennamen in der zweiten Zeile stehen, kann ich sie nicht als Spaltenname verwenden. Deswegen habe ich die Spaltennummer ebenfalls mitgenommen.

So, nun habe ich also erstmal die Info, welche Spalte der ersten Liste auf welche Spalte der zweiten Liste übertragen werden soll.

Im nächsten Schirtt habe ich beide DataTables in ein Dataset geladen und eine Relation zwischen beiden erstellt.

Aufgabe ist es nun die Werte der "verbundenen" Spalten von der ersten auf die zweite Tabelle zu übertragen.
Da ich mittlerweile einen Knoten im Hirn habe, frage ich hier mal, ob mir jemand nen Tipp geben kann.

Vielen Dank
Gruss Carsten

31.05.2010 - 15:31 Uhr

Jetzt hab ich's:

ex.Errors[0].NativeError

Danke Jack

31.05.2010 - 15:19 Uhr

Zu früh gefreut...
da bekomme ich in beiden Fällen den gleichen Code.

Allerdings ist ex einmal: {"External table is not in the expected format."}
und einmal: {"The Microsoft Access database engine cannot open or write to the file ''. It is already opened exclusively by another user, or you need permission to view and write its data."}

Fehlercode ist beide Male -2147467259
Wasn nu?

31.05.2010 - 15:13 Uhr

Ja,
mann hab ich nen Brett vorm Kopf !

Danke, bin selbst grade drüber gestolpert.
Nicht mein Tag heute 😦

31.05.2010 - 15:00 Uhr

Hallo Forum,
trotz Suche bin ich immer noch nicht im Klaren darüber, wie ich eine Exception auswerten kann.
Nun, der erwartete Fehler müsste eine OleDbException sein aber hier können in meinem Falle zwei verschhiedene Fehler auftreten.

Mit:

catch(OleDbException ex)

fange ich alle OleDb-Fehler ein, möchte dann aber noch unterscheiden ob die zu öffnende Verbindung gescheitert ist, weil die Datei Exclusiv bereits geöffnet war oder das Dateiformat nicht stimm.
Irgendwie stehe ich grade völlig auf'm Schlauch.
Die Fehlernummern wie zu VB6 Zeiten gibt es ja M.E. nicht mehr oder?

Welches Property frage ich nun ab?

Danke und Gruß Carsten

23.05.2010 - 13:47 Uhr

...genau einfach 😄

Also im Augenblick löse ich es tatsächlich in einer geschachtelten try-catch-Orgie.
Die lässt sich am einfachsten erweitern für neue Office-Produkte.
Ich fang bei 97 an und arbeite mich dann nach oben.
Irgendein Connection.open wird schon klappen, sonst gibt's ne Messagebox.

Weill Signaturen prüfen wird wahrscheinlich bei Excel97 dann nicht mehr hinhauen oder?

21.05.2010 - 13:49 Uhr

Hmm...
komisch.
Ich habe die Dateierweiterung mal auf xslx geändert und siehe da, Excel öffnet es ohne zu maulen.
Also hab ich es auch mit dem 2007er Provider versucht und alles geht.

Da ergibt sich eine neue Frage...
Gibt es, außer der Dateiendung andere Möglichkeiten den Dateityp heraus zu finden?`

Falls nicht, könnte ich ja jeden Provider durchprobieren, bis es klappt.
Aber wie realisiert man sowas?
Kann man dafür try-catch-Blöcke ineinander verschachteln oder gibt's da was besseres?

Gruß Tele

BTW... im Editor stehen nur Hyroglyphen.

19.05.2010 - 15:09 Uhr

verwendetes Datenbanksystem: Excel 2010 / 2007

Hallo Forum,
ich habe etwas Schwierigkeiten mit dem Zugriff auf eine Excel Tabelle.
Eigentlich sind es zwei Probleme aber ich fang mal erst an.
Also ich hatte den Zugriff auf Excel 2007 mit folgendem Connectionstring bereits im Griff:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES";

Alles lief gut, bis ich versucht habe eine xls-Datei zu öffnen, aber dazu später.
Aufgrund dies aufgetretenen Problem mit der xls-Datei bin ich auf die Suche gegangen und über folgenden Artikel gestolpert:
von Microsoft

Laut diesem Beitrag sollte es möglich sein mit der Database-Engine 2010 sowohl 2010, als auch 2007 und kleiner (xls)- Excel-Dateien zu öffnen.
Ich habe also das Paket runter geladen und installiert aber bekomme einfach keinen funktionierenden Connectionstring hin.
Immer kommt irgendeine Fehlermeldung, zuletzt folgende:

Could not find installable ISAM.

Das wird beim Connection.Open gemeldet.
Daher meine erste Frage:
Wie muss der Connectionstring aussehen?
Das hier funktioniert nicht:


con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;";
con.ConnectionString += String.Format("Driver=Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb);DBQ={0};", excelFile);
con.ConnectionString += @"Extended Properties=""Excel 14.0 Xml;HDR=Yes;IMEX=1""";

ich finde allerdings auch nix aussagekräftiges über die möglichen Properties.

Zu meinem zweiten Problem:
Ich wollte besagte xml-Datei öffnen und bekam einen Fehler, dass das erwartete Dateiformat nicht passt.
Hier war der Connectionstring mit Provider=Microsoft.Jet.OLEDB.4.0 und Excel 8.0 als Extended Property.

Ich habe also die Tabelle mal mit meinem Excel2007 geöffnet und bekam gleich eine Fehlermeldung dass das Format von der angegebenen Dateierweiterung abweicht.
Naja mit Ok kann ich die Datei dennoch in Excel öffnen.
Da die Datei von einer anderen Software erzeugt wird, habe ich leider keinen Einfluss darauf. Aber wenn Excel sie öffnen kann, muss das doch auch mit OLEDB gehen.

Bin jetzt gespannt auf Eure Antworten und Erfahrungen
Gruß Tele.

28.01.2010 - 15:41 Uhr

Boah das ist doch immer das selbe...
Stundenlange Suche, dann ne Frage und schon fällt man drüber.

Also, für Die, die es interessiert:

HelpKeyword auf HelpProvider enthält die htm-Datei gefolgt von # und dem Bookmark (wie in Inet-Seiten auch.
Und HelpNavigator auf HelpProvider muss auf Topic stehen.

Tele

28.01.2010 - 15:28 Uhr

Sooo, da kram ich das nochmal raus.
Das mit der TopicID hat ja alles wunderbar geklappt.
Etwas Schwierigkeiten habe ich allerdings noch.

Wenn ich in einem Textfeld stehe möchte ich über die F1 Taste einen bestimmten Abschitt innerhalb eine Hilfeseite öffnen.
Dazu habe ich Bookmarks in meiner Hilfe angelegt.
Irgendwie bekomme ich es aber nicht hin, diese Bookmarks anzuspringen.

Kann mir da nochmal jemand einen Tip geben?

tnx Tele

14.01.2010 - 14:25 Uhr

Dankeee....

Da war ich wohl etwas blind.

13.01.2010 - 12:21 Uhr

Hallo Forum...
ich hab jetzt einiges hier und auch im www zu diesem Thema gelesen.
Mein Stand ist so weit, dass ich auf Tastendruck (Click-Event) meiner Hilfetaste die Hilfe aufrufen kann und auch gezielt ein Thema wählen kann.

Help.ShowHelp(this, Helpfile, HelpNavigator.TopicId, "1001");

Die chm-Datei habe ich also offensichtlich mit HTML-Workshop korrekt erstellt.
Was mir im Augenblick noch fehlt ist die Funktion aus jedem Control heraus mit der F1-Taste an das entsprechende Thema zu kommen.
Daher meine Fragen:
-Was muss wie beim Form und den Controls eingestellt werden (Keypreview, ID des Hilfethemas etc)
-Wo muss das entsprechende Event ausgelöst werden?

Irgendwie komme ich nicht weiter.
Danke, Tele

06.11.2009 - 12:18 Uhr

Hallo...
Jo, werde ich versuchen, sobald ich von der Autobahn runter bin 😃
danke für Eure Hilfe, ich melde mich dann noch mal mit dem Ergebnis

Tele

06.11.2009 - 11:24 Uhr

Hallo Ayke, ich will das wohl gerne versuchen aber da das Problem auch mit anderen Projekten besteht, tippe ich eher auf ein Problem mit VS.
Gibt's vielleicht irgendwo eine Einstellmöglichkeit zum Deaktivieren der Designer?

@Briefkasten...
Ich fürchte das wird dann wohl auch auf mich zu kommen 😦
Gruß , Tele

06.11.2009 - 10:09 Uhr

Hallo Forum,
ich musste mit der Programmierung einige Wochen aussetzen und habe gestern mal wieder VS gestartet.
Ich kann jetzt den Ressourcendesigner und die Projekteigenschaften nicht mehr öffnen.
Wenn ich doppelt auf Resources.resx klicke, wird diese als XML Datei geöffnet.
Wenn ich auf Properties doppelt klicke bekomme ich die Meldung, das keine Editor für ...csproj verfügbar ist.

Was kann hier passiert sein?
Der einzige Unterschied zu vorher ist die Natzwerkanbindung.
Im Augenblick bin ich unterwegs und nur über UMTS mit dem Inet verbunden, während ich zuletzt im lokalen Netwerk war.
Die Projekte liegen allerdings lokal auf meinem Rechner und der Fehler tritt auch unabhängig vom Projekt auf.

Danke, Tele

01.09.2009 - 10:16 Uhr

Hallo Norman-Timo...
danke für Deine Antwort.

Mit dem Schema läufts prima.
Und ich muss die XML nicht mal ändern 😁

Dankeee

31.08.2009 - 14:28 Uhr

verwendetes Datenbanksystem: <XML>

Hallo Forum,
für eine Combobox benötige ich Daten aus einem XML-File:

    <property name = "Benutzer" Id = "10181" type = "string"/>
    <property name = "Benutzer Zusatzfeld 1" Id = "40001" type = "string"/>
    <property name = "Benutzer Zusatzfeld 10" Id = "40010" type = "string"/>
    

Diese Daten lese ich mit folgendem Code in ein Dataset:

    dsProjectProperties = new DataSet();
    dsProjectProperties.ReadXml( file );
                    

Jetzt ist es natürlich so, dass die Id als string erkannt wird, ich aber für die Datenbindung einen Integer-Wert brauche.

Wie kann ich die gelesenen Daten beeinflussen?
Funktioniert das mit einem Schema?
Wenn ja, muss der XML-Code auch geändert werden?

besten Dank im Voraus
Tele

27.08.2009 - 08:51 Uhr

Ah ok, wir reden von zwei verschiedenen Dingen...

Ich hatte versucht ein VSTO-Addin zu schreiben und zu verteilen, was nach eineigen Probleme auch geklappert hat aber meine toll Drittanbieter-DLL funktioniert nur auf meinem Entwicklungscomputer (Was der Hersteller auf Excel schiebt).
Deswegen habe ich die ganze Geschichte in ein standalone-Programm gesteckt, von dem aus Excel dann bedient wird.
Also kein AddIn.

Active Directory gibt es nicht.
Also immer beim Setup prüfen und ggf. mit installieren.

27.08.2009 - 08:12 Uhr

Hi Rainbird...
ist schon klar.
Das erwarte ich ja auch nicht und eigentlich ists ausreichend, wenn's mit O2007 läuft.
Wenn ich die Interop austausche sollte es auch mit O2003 laufen (was noch zu testen wäre).
Ich hatte mich halt gefragt ob's ein großer Aufwand ist, dies beim Setup zu berücksichtigen, weil MSDN so prahlt, dass ein mit O2003 entwickeltes Programm mit O2007 läuft.
Nur steht halt nirgends ob's/wie's beim Setup beachtet werden muss.
Das hört sich bei denen immer so an als würde es reichen das Programm für O2003 zu schreiben und schon wird alles was höher ist laufen.

...um nochmal auf meine eigentliche Frage zurück zu kommen...
reicht es die entsprechenden PIAs mit zu geben und beim Setup mit zu installieren?
Und wie kann ich prüfen, ob bereits ein PIA installiert ist?
Gibts da nen Registry Key?

tnx Tele

25.08.2009 - 15:04 Uhr

Hallo Forum,
schlagt mich net gleich, wenn die Frage ähnlich schon mehrfach gestellt wurde (hab ich gelesen)...

Aber ich bin noch unsicher.

Ich habe einen Anschluss an Excel programmiert und dafür die Microsoft.Office.Interop.Excel eingebunden.

Was muss ich jetzt mitgeben, wenn ich das Programm verteilen will?
Reicht da die PIA-Setup von MS?

Zweite Frage, geschrieben ist es für Office 2007, aber nichts, was nicht auch in 2003 funktionieren sollte.
Kann ich für die 2003-User einfach die entsprechende PIA installieren oder muss ich im Programm was ändern, damit es die entsprechende Interop erkennt?

Dritte Frage,
Wie finde ich heraus, ob bereits eine PIA installiert ist und falls nicht, welches Office aufgesetzt ist?

Besten Dank
Tele

20.08.2009 - 15:48 Uhr

Boah...
manchmal ist man ja schlichtweg Blind.
Die using-direktrieve hatte das Form ohne zu murren angenommen 🤔

Danke !

20.08.2009 - 15:24 Uhr

Hallo Ihr Wissenden...
ich glaube ich habe einen Denkfehler aber...

in meinem Excel AddIn (.Net3.5) habe ich folgendes Statement:

System.Configuration.Configuration machineConfig = ConfigurationManager.OpenMachineConfiguration();

Warum bekomme ich das in meiner normalen Forms-Anwendung (auch 3.5) nicht angeboten?

Configuration gibt es da nicht 😦

20.08.2009 - 14:20 Uhr

Ne, ich habs gefunden....
In einem Codeteil den ich vor Urzeiten mal angefasst hab.

Danke

20.08.2009 - 13:14 Uhr

...ich kann mich zwar nicht erinnern, die Listener gelöscht zu haben, aber jetzt funktionierts.

Besten Dank, David

Gruss Carsten

20.08.2009 - 10:22 Uhr

Hallo David,
japp genau da und genau dann.
Also im Fenster "Ausgabe" vom VS, während ich debugge.

20.08.2009 - 09:57 Uhr

Hallo Forum,
ich hab keine Ahnung, was ich falsch mache aber ich bekomme keine Ausgabe im Ausgabefenster, wenn ich debug.writeline aufrufe 😦

Wie bekomme ich das hin?

danke Tele

19.08.2009 - 12:17 Uhr

Hallo...
ich habe heute noch einmal mit der Hotline des Herstellers gesprochen und wieder kam die Diskussion auf, dass Excel schuld sei.
Offensichtlich macht Excel beim Laden der DLLs eine lokale kopie hiervon und da fehlen dann die statischen Abhängigkeiten 😦

Ich habe also mal FUSLOGVW.exe bemüht und bin tatsächlich auf diesen Fehler hier gestoßen:

LOG: Explizite IJW-Bindung. Dateipfad:C:\Programme\EPLAN\Electric P8\1.9.10\BIN\Eplan.EplApi.AFu.dll.
LOG: Die IJW-Assemblybindung hat einen anderen Pfad zurückgegeben: C:\Dokumente und Einstellungen\Fischer\Lokale Einstellungen\Anwendungsdaten\assembly\dl3\9HVVD91E.RWZ\OCAMDONH.VM7\2b776793\0064222f_3199c901\Eplan.EplApi.AFu.dll. Verwenden Sie die gelieferte Datei.

Kennt vielleicht jemand eine Möglichkeit Excel dieses Verhalten ab zu gewöhnen?

Danke Tele

17.08.2009 - 12:11 Uhr

Hi Rainbird...
ich habe es nun mehrfach wieder versucht, kann den Fehler aber nicht erneut auf meinem Rechner erzeugen.
Also die gesuchte assembly ist in jedem Falle durch den Hersteller installiert (zumindest kann ich das in diesem Fall garantieren).

Als ich den Fehler hatte, konnte eine defakto vorhandene Datei nicht gefunden werden.
Hier ist noch ein Kommentar zu diesen Problemen vom Hersteller:

Die Problematik ist darin begründet, dass das P8 API managed C++ ist. Es bietet nach außen hin eine .Net-Schnittstelle und ist nach innen unmanaged C++. Sie laden also im Endeffekt die nativen dlls von P8 in Ihren Prozess und dazu müssen diese Im Pfad liegen.

Offensichtlich hat die Assembly Probleme mit Abhängigkeiten, wenn die dll's irgendwo doppelt vorkommen aber auch das kann ich in diesem Fall ausschließen 🙁
Wie gesagt, im Augenblick läuft es wieder mal bei mir 🙁