Laden...

Forenbeiträge von i06001 Ingesamt 24 Beiträge

21.08.2012 - 15:36 Uhr

Klappt prinzipiell, jedoch nicht bei den Zellen, die einen Verweis auf ein anderes Tabellenblatt enthalten...
Die restlichen Zellen werden kalkuliert...

Habe mittels

 worksheet.Calculate(); 

die Berechnung eingeleitet.

Denke also, dass es wirklich direkt mit dem Verweis auf das andere Tabellenblatt zusammenhängt.

Noch eine Idee was ich machen könnte?

Grüße

27.07.2012 - 09:42 Uhr

Hallo zusammen,

komme gerade nicht so recht weiter - vielleicht könnt ihr mir da helfen.


{=SUMMEWENN(ZEITUEB_Gesamt!$A$3:$F$727;$A$3:$A$56;ZEITUEB_Gesamt!$Q$3:$Q$727)}

Ich schreibe automatisiert mit C# diese Formel in ein Excel-Datenblatt ein, aber der Wert, der angezeigt wird, ist 0.
Erst nachdem ich auf die Zelle klicke und F2 drücke aktualisiert sich der Wert und wird korrekt angezeigt.

Die Berechnungsoptionen von Excel passen - die sind auf "automatisch" eingestellt.

Hat jemand eine Idee, was ich tun könnte?

Edit: Sorry, arbeite mit Excel 2010...

Vielen Dank im Voraus!

Grüße

10.08.2011 - 16:20 Uhr

Genau, im Prinzip möchte ich innerhalb einer Liste eine Liste herausgreifen.
customers ist in meinem Fall eine Liste (List<Customer>).
Innerhalb dieser Liste gibt es wiederum eine Liste, nämlich c.Visits (List<Visit>) im Codebeispiel.

Lg

10.08.2011 - 15:23 Uhr

Habs jetzt folgendermaßen hinbekommen - vielleicht brauchts jemand ja auch mal:


var customerVisits = from c in customers
                               from v in c.Visits
                               where c.Name ==name
                                            && c.Prename == prename
                                            && c.Birthday == birthday
                                         select v;     

Lg

04.08.2011 - 15:55 Uhr

Hallo zusammen,

ich schaffe es nicht mittels LinQ auf bestimmte Daten eines Objektes zuzugreifen.
Vorab zum besseren Verständnis was ich überhaupt machen möchte:

Ich habe eine Kundenliste "List<Kunde>", welche aus vielen einzelnen Kunden des Typs "Kunde" besteht.
Jeder Kunde enthält wiederum eine Besuchsliste List<Besuch>, die die einzelnen Besuche des Kunden enthält.

Wie kann ich nun mittels LinQ die Besuchsliste bzw. Teile dieser Liste eines einzelnen Kunden in einer DataGridView ausgeben?

Mein geplantes Vorgehen war bis jetzt folgendes:


var customerVisits = from c in customers
                               where c.Name == name
                                    && c.Prename == prename
                                    && c.Birthday == birthday
                                         select from v in c.Visits
                                                select new 
                                                { 
                                                    v.Date,
                                                    v.Offer,
                                                    v.Detail,
                                                    v.Receipt
                                                };
                                                                                                      
this.SuspendLayout();
dataGridViewVisit.SuspendLayout();
bindingSourceVisit.DataSource = customerVisits;
dataGridViewVisit.DataSource = bindingSourceVisit;

Leider ist das einzige, was ich in der Tabelle dann sehe eine Spalte mit dem Titel "Current" und keinem Eintrag...

Wäre super wenn ihr mir helfen könntet - steht gerade auf dem Schlauch und benötige eine Anregung.
Vielen Dank im Voraus!!!

Lg

13.03.2011 - 19:05 Uhr

Hallo zusammen,

ich stehe momentan ein wenig auf dem Schlauch und denke ihr könnt mir evtl. ein wenig Hilfestellung zu meinem Problem geben.

Und zwar habe ich eine Klasse "Kunde" erstellt, die eben die typischen Merkmale eines Kunden darstellen soll. (Name, Vorname, Adresse usw.).

Nun möchte ich bei Programmstart die Kundendaten aus einer Datenbank holen und ein Array meiner Klasse Kunde erstellen.
Mein Vorhaben hakt jedoch an der dynamischen Befüllung meines Arrays....

Wenn ich manuell einen Kunden zu diesem Array hinzufüge funktioniert es natürlich wunderbar


customers = new Customer[]{
   new Customer("Max", "Mustermann", "Stuttgart"),
};

Wie stelle ich das jedoch dynamisch an?
eine For- oder Foreach-Schleife innerhalb der geschweiften Klammern ist ja nicht möglich.... zB.


customers = new Customer[]{
   foreach (DataRow dr in dsCustomers.Tables[0].Rows)
   {
      new Customer(dr.ItemArray[0].toString(), drItemArray[1].toString(),dr.ItemArray[2].toString())
    }
};

Wie könnte ich das schön und sauber lösen?

Vielen Dank im Voraus für eure Hilfe!!!

Grüße

28.12.2010 - 10:50 Uhr

Hallo,

vielen Dank für eure Antworten!

Also mit dem BackgroundWorker funktioniert es super.
Habe mich bis jetzt immer von dem BackgroundWorker ferngehalten - wie ich bemerke vollkommen grundlos....
Na ja, komme vom Land - und was der Bauer nicht kennt .... 😃

MfG
i06001

27.12.2010 - 15:28 Uhr

Hallo zusammen,

ich habe folgendes Problem:

Ich habe 3 Klassen -

  • eine Klasse Form1, auf der ein DataGridView, eine Textbox in der ein Suchwort eingetragen werden kann und ein Button, der die Suche startet, platziert sind
  • eine Klasse Mittelung, die nichts weiter ist als ein Fenster mit "Abbrechen" Button
  • eine Klasse Suche, die mir die Suche auf dem DataGridView durchführt

Die Suche funktioniert ohne Probleme - ich möchte jedoch mit der Klasse Mitteilung die Suche jederzeit abbrechen können, falls dem User die Suche zu lange dauert.

Die Klasse Form1 ruft zuerst die Klasse Mittelung in einem eigenen Thread auf und führt dann die Suche durch


                MitteilungBox mitteilungBox = new MitteilungBox();
                mitteilungBox.FormClosing += new FormClosingEventHandler(mitteilungBox_FormClosing);

                ThreadStart starter = null;
                starter = delegate { mitteilungBox.ShowDialog(); };
                thread = new Thread(starter);
                thread.Start();
                
                search = new Search(dataGridViewTable);
                search.Find(comboBoxSearchFor.SelectedItem.ToString(), textBoxSearchtext.Text);

Wie teile ich jedoch nun meiner aktiven Suche mit, dass in dem Fenster der Klasse Mitteilung der "Abbrechen" Button gedrückt wurde?
Hier ein Ausschnitt der Suchklasse:


                for (int i = startIndex; i < dgv.Rows.Count; i++)
                {
                    if (AbortSearch)
                    {
                        AbortSearch = false;
                        dgv.BindingContext[dgv.DataSource, dgv.DataMember].Position = i;
                        break;
                    }
                    DataGridViewRow row = dgv.Rows[i];
                    string val = row.Cells[column].Value as string;
                    if (val.Contains(key))
                    {
                        dgv.ClearSelection(); row.Selected = true;
                        dgv.BindingContext[dgv.DataSource, dgv.DataMember].Position = i;
                        return;
                    }
                }

Ich stehe momentan ein wenig aufm Schlauch - ich hoffe ich konnte es einigermaßen verständlich machen was ich will 😃

Wäre super wenn man mir helfen könnte - im Voraus vielen Dank!

MfG
i06001

20.12.2010 - 11:46 Uhr

verwendetes Datenbanksystem: MS SQL Server 2008 Express

Hallo zusammen,

ich habe eine Form mit DataGridView und möchte dazu eine Suchklasse erstellen.
Die Suchklasse soll so aussehen, dass ich die BindingSource, Index der Spalte in der ich Suche und Suchwert übergebe und dann als Rückgabewert die BindingSource.Position zurück erhalte.

Mittels der Find()-Methode der BindingSource funktioniert es auch wunderbar, wenn der gesuchte Wert nur einmal in der Grid auftaucht.

Wünschenswert wäre, wenn mehrere Einträge des Suchwerts vorhanden sind (bspw. ein Datum das mehrmals vorkommt), dass ich immer die Position des als NÄCHSTEN GEFUNDENEN Wert zurückerhalte und mich somit auf dem Grid sozusagen bewege.

D.h. ich drücke auf den Button 'Suchen' und, wenn sich der Suchwert nicht ändert, springe dadurch immer auf die nächste gefundene Position des Grids.

Hat jemand eine Idee wie ich das umsetzen könnte?

Vielen Dank im Voraus für eure Antworten!

Grüße
i06001

28.07.2010 - 16:48 Uhr

Hallo zusammen,

kennt sich zufällig jemand mit DevCon aus!?

Ich habe folgendes Problem:
Bei einem PC funktionieren die USB-Ports nicht immer korrekt.
Wird während des Betriebs des PC´s ein neues USB-Gerät eingesteckt, so wird es nicht erkannt - erst nach einem Reboot des PC´s während das USB-Gerät eingesteckt ist.

Da das Problem NUR die Geräte betrifft, die nach dem Booten eingesteckt wurden, möchte ich nicht alle Ports neu starten sondern nur jene Ports, die "frei" sind bzw. wo eben kein Gerät erkannt wird.

Jetzt muss ich natürlich erstmal herausfinden welcher Port besetzt ist und welcher nicht etc.
Leider weiß ich gerade nicht wie ich das mit DevCon anstelle.

Wär super wenn mir da jemand weiterhelfen könnte.

Im Dateianhang ist ein Bild der Konsole.
Vielen Dank im Voraus!

Grüße

20.05.2010 - 13:27 Uhr

Vielen Dank für eure Antworten - haben mir einwandfrei weitergeholfen 😉

19.05.2010 - 17:08 Uhr

Hallo zusammen,

ich möchte einen Barcodescanner mit einer C#-Applikation über TCP/IP ansprechen.
Im Grunde muss ich dem Scanner lediglich ein Zeichen senden und bekomme dann die Antwort von dem Scanner in Form einer Zeichenkette.
Sowohl IP-Adresse als auch Socket sind bekannt.

Leider habe ich noch nie mit TCP/IP in C# gearbeitet und hoffe, dass ihr mir ein wenig helfen könnt um schnell eine Lösung zu finden, weil die Zeit eilt...

Vielen Dank im Voraus!

Grüße
Markus

25.03.2010 - 13:35 Uhr

Hervorragend - genau das was ich suche...
Vielen Dank.

25.03.2010 - 13:28 Uhr

verwendetes Datenbanksystem: MS SQL-Server 2008

Hallo zusammen,

ich habe zwei Applikationen, die auf eine gemeinsame Datenbank zugreifen.
Nun möchte ich, wenn eine Applikation einen Datenbankeintrag oder eine Datensatzaktualisierung durchführt, dass dies die andere Applikation mitbekommt.

Gibt es also eine Art Trigger, mit dem ich solch ein Ereignis in C# abfangen kann?
Also im Endeffekt sowas wie ein Trigger in der Datenbank nur eben nicht in der Datenbank- sondern Applikationsebene?

Vielen Dank im Voraus für eure Antworten!

Grüße

17.09.2009 - 08:58 Uhr

Hallo zusammen,

ich habe eine Suche auf einem DataGridView bereits implementiert.
Die bisherige Suche nutzt die BindingSource, um die aktuelle Position des gesuchten Begriffes zu bestimmen.


sichtBindingSource.Position = sichtBindingSource.Find(Spaltenname, Zelleninhalt);

Tritt nun aber der gesuchte Begriff mehrmals in der Tabellenspalte auf, so finde ich auf diese Art natürlich immer denselben Begriff auf derselben Position.

Muss ich also, wenn der gesuchte Begriff mehrmals in der Tabellenspalte vorhanden ist und ich jeweils den nächsten finden möchte, die Spalte manuell mittels MOVENEXT durchlaufen und entsprechend eine Gleichheitsüberprüfung durchführen, oder gibt es noch andere Möglichkeiten, die mir C# von Haus aus mitbringt?

Grüße
Markus

21.08.2009 - 10:41 Uhr

Hmmm... okay... das habe ich befürchtet.

Ich danke euch für die Antworten.

Grüße
Markus

21.08.2009 - 10:06 Uhr

Hallo zusammen,

ich arbeite mich momentan ein wenig in die Komponententests von VS 2008 ein.
Dabei habe ich gleich mal folgendes Problem:

Ich füttere zwei ArrayLists mit Daten.
Wenn man beide ArrayLists anschaut, so sind auch die Inhalte der beiden gleich...
Jedoch bekomme ich immer einen Fehler als Ergebnis:

Fehler bei "Assert.AreEqual". Erwartet:<System.Collections.ArrayList>. Tatsächlich:<System.Collections.ArrayList>.

Der Code dazu sieht wie folgt aus:


        [TestMethod()]
        [DeploymentItem("ProduktionsumgebungWAMS.exe")]
        public void getChildNodesTest()
        {
            Sprache_Accessor target = new Sprache_Accessor();
            string xmlDateiPfad = "D:\\Visual Studio 2008\\Projects\\ProduktionsumgebungWAMS\\ProduktionsumgebungWAMS";
            string xmlPfadErweiterung = "\\Sprachumschaltung\\Deutsch.xml";
            string strNode = "Betriebsdaten";

            ArrayList alExpected = new ArrayList(); ;
                alExpected.Add("fenstertitel");
                alExpected.Add("menuitem");
                alExpected.Add("gruppentext");
                alExpected.Add("button");
                alExpected.Add("combobox");
                alExpected.Add("textbox");            
            
            ArrayList actual = new ArrayList();
            actual = target.getChildNodes(xmlDateiPfad, xmlPfadErweiterung, strNode);
            Assert.AreEqual(alExpected, actual);
            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
        }

Kann mir jemand erklären, warum ich diesen Fehler hier bekomme?
Selbst wenn ich alExpected gleich wie actual fülle


alExpected = target.getChildNodes(xmlDateiPfad, xmlPfadErweiterung, strNode);

bekomme ich denselben Fehler...

Grüße
Markus

04.08.2009 - 10:10 Uhr

verwendetes Datenbanksystem: MS SQL Server 2005

Hallo zusammen,

ich habe eine Stored Procedure, die ich gerne mit dynamischen Spaltennamen füttern möchte.
Leider funktioniert es nicht so wie ich gerne will - habe es schon mit zig Varianten versucht (mit ' und + usw....)

Vielleicht kann mir ja einer von euch direkt sagen, wie ich den Spaltennamen genau formatieren muss, ohne noch stundenlang im Netz zu suchen...

Hier die Stored Procedure :



ALTER PROCEDURE Betriebsdaten
   @Auftrag varchar(50),
   @Spalte varchar(MAX),
   @Betriebszeit smallint
AS
BEGIN
   UPDATE Zeiten
   SET @Spalte = @Betriebszeit
   WHERE Zeiten = usw....

@Spalte beinhaltet also immer jene Spalte, die ich aktualisieren möchte.

Danke schonmal im Voraus für eure Antworten!

Grüße
Markus

17.07.2009 - 11:00 Uhr

Hallo,

zuerst einmal ein Danke an euch für eure Hilfe.

Das eigentliche Problem war im Endeffekt nun nur, dass ich vor lauter Wald keinen Baum mehr gesehen habe...

Ich habe in meiner Form nur noch das richtige Event abfangen müssen und schon funktioniert die Sache...

Grüße

17.07.2009 - 10:19 Uhr

Das mit INotifyPropertyChanged funktioniert vom Prinzip her einwandfrei. Nur gestaltet sich die Lösung meines Problems (für mich) nun doch schwieriger als erwartet...

Folgendes ist der Fall:

Ich habe einen OPC-Server, der mir ständig Daten aus der SPS ausließt. Sobald sich ein Wert in der SPS ändert, schmeißt mir der OPC-Server ein Event, dass sich eben der Wert der Variablen (bzw. einer ganzen Gruppe von Variablen) verändert hat.
Dieses Event fange ich ab und übergebe die kompletten Daten in Form einer ArrayList an mein Property.

Und diese Veränderung des Propertys soll nun dazu führen, dass sich die auf einer Form befindlichen DataGridView-Zelle updated und eben den Wert annimmt, den ich ihr über das Property geb...

Wie gesagt, die Veränderung des Propertys bekomme ich mit - habe eine neue Base-Klasse erstellt (NotifyPropertyChangedBase <- hier wurde auch die Schnittstelle INotifyPropertyChanged implementiert) die dann von meiner OPC-Klasse geerbt wird (OPC : NotifyPropertyChanged). Aber die Veränderung in meiner Form bekomm ich momentan einfach net hin - steh da aufm Schlauch... Kann ja net in meiner Form die Schnittstelle einrichten weil ja meine Form "MyForm" schon von Form erbt...

Grüße Markus

16.07.2009 - 16:40 Uhr

Hallo zusammen,

ich würde gerne eine Variable (ganz normal als string deklariert) überwachen.
Sobald sich die Variable ändert, möchte ich eine Aktion ausführen.

Leider habe ich bis jetzt kein passendes Event gefunden...

Gibt es kein Event, das mir eine Variablenänderung abfängt?
(zB ValueChanged oder so)

Grüße
Markus

13.07.2009 - 12:07 Uhr

okay, sehr gut.

Danke für die Antworten!

Grüße
Markus

13.07.2009 - 11:56 Uhr

wenn ich jedoch den WinForms Timer nutze, belegt der dann nicht meinen GUI-Thread? Laut MSDN ist dieser ja Singlethreaded... Deswegen war meine Überlegung eine extra von mir erstellte Timerklasse, die ich dann in die GUI-Klasse einbinde.

Wenn ich jetzt falsch liege, bitte ich dies zu entschuldigen 😃

EDIT: der zweite von mir gepostete C# Code mit dem OK_Click Ereignis soll die GUI-Klasse darstellen...

Grüße
Markus

13.07.2009 - 10:46 Uhr

Hallo zusammen,

ich habe ein Problem und komme momentan nicht mehr sonderlich viel weiter.
Ich hoffe ihr könnt es mir evtl. erklären, damit ich schnell an dieser Hürde vorbeiziehe.

Habe eine Timer-Klasse erstellt (Systems.Timers), in der ich den Ablauf des Timers implementiere.

Des Weiteren habe ich eine GUI. Diese möchte ich nach Ablauf des Timers aktualisieren (es geht hierbei um eine Benutzeranmeldung, die nach wenigen Minuten abläuft. Der Timer soll mir sozusagen bescheid geben, wann die Anmeldezeit um ist und entsprechend den Benutzer "abmelden")

Nun weiß ich ehrlich gesagt nicht genau, wie ich das mit der Erstellung eines Threads und der Anwendung des delegaten anstellen soll...

Hier ein paar Teile des Codes:


class TimerAblauf{

        Timer t = new Timer();
      
        public void timerStarten()
        {
            t.Interval = 3000;
            t.AutoReset = false;

            t.Enabled = true;
            t.Start();
        }

        public ElapsedEventHandler event_TimerElapsed;

        public void timerStoppen(){ // tu was}
}
delegate void ElapsedEventHandler();

Im GUI-Thread möchte ich also nun timerStoppen() abfangen, wenn der Timer abgelaufen ist und bspw. im ersten Schritt lediglich ne textbox löschen oder so...
Später soll parallel zum Timer-Ablauf ne ProgressBar ablaufen.


private void buttonOK_Click(object sender, EventArgs e)
{
                        timerAblauf = new TimerAblauf();
                        timerAblauf.event_TimerElapsed += new ElapsedEventHandler(timer_Elapsed);

                        ThreadStart starter = null;
                        starter = delegate { timerAblauf.timerStarten(); };
                        benutzerTimer = new Thread(starter);
                        benutzerTimer.Start();
}

private void timer_Elapsed()
{
     timerAblauf.timerStoppen();
}

Bis jetzt funktioniert das noch nicht so, wie ich das implementiert habe.
Schätze, das ich noch irgendwo mit .Invoke() arbeiten muss, aber leider komm ich momentan trotzdem nicht weiter.
Hoffe ihr könnt mir helfen, wäre echt dankbar.

Schonmal danke im Voraus!

Grüße