Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

Dictionary<int, string> miteinander verbinden und nach datum sperren
_Alp_Ay
myCSharp.de - Member



Dabei seit:
Beiträge: 4

Themenstarter:

Dictionary<int, string> miteinander verbinden und nach datum sperren

beantworten | zitieren | melden

Hallo zusammen,

das ist mein erster Beitrag und hoffe ich werde nicht sofort verbannt :-)

zu meiner Situation:

Also ich entwickel ein Programm, wo ich ca. 20 IDs habe und nach Datumauswahl soll diese ID für diesen Zeitraum geblockt sein. Die ID soll dann nach diesem Datum wieder freigegeben werden, damit man es erneut nutzen kann.

die IDs wollte ich in einer Dictionary auflisten und das Datum wird dann in ein Label übergeben, das kann man ja dann stringen.


 Dictionary<int, string> dir1 = new Dictionary<int, string>();
            dir1.Add(1111, _st.label6.Text.ToString()); // label6 ist das Datum
            dir1.Add(2222, _st.label6.Text.ToString());
            dir1.Add(3333, _st.label6.Text.ToString());
            dir1.Add(4444, _st.label6.Text.ToString());

Ich weiss aber nicht, wie ich das hinkriegen soll. Ich habe auch schon google durchsucht, aber irgendwie finde ich für meine Situation keine Lösung.
Oder ich kapier es nicht :-)

Hat jemand eine Idee, wie man sowas am besten anstellen kann?

Wäre über jede Hilfe dankbar.

Gruß
Alp
private Nachricht | Beiträge des Benutzers
Sclot
myCSharp.de - Member



Dabei seit:
Beiträge: 324
Herkunft: Bremen

beantworten | zitieren | melden

Ohje...
Kein Mensch weiss was du vor hast und was da am Ende bei raus kommen soll :-/
Kannst du das evtl. etwas besser erklären?

Und für C# Code gibt es die Code-Tags ;-)
private Nachricht | Beiträge des Benutzers
_Alp_Ay
myCSharp.de - Member



Dabei seit:
Beiträge: 4

Themenstarter:

beantworten | zitieren | melden

Hi Sclot,
ja ich bin immer sehr schlecht beim erklären.

Also, es ist im Grunde genommen nichts kompliziertes.
Der Nutzer legt ein Datum fest (Bsp. 20.07.2015).

[Da sind natürlich auch paar andere Daten mit dabei]

Sobald der Nutzer auf "weiter/speichern"-Button klickt, wird eine Xml-Datei erstellt (das klappt ja auch alles soweit so gut.)

Was mir aber fehlt ist, dass ich eine liste erstellen muss, mit ca. 20 IDs.
Ich weiss nicht, wie ich das anstellen soll, wenn ich die IDs in eine arraylist oder in eine dictionary eintrage und diese so mit dem o.g. Datum verknüpfe, sodass die ID 111 bis zum Datum x nicht mehr vergeben werden kann.
D.h.: ID 111 ist noch bis Datum 20.07.2015 in Nutzung, also gehe weiter auf ID 222 usw usw usw...

Ich hoffe, dass es so etwas deutlicher ist X(
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von _Alp_Ay am .
private Nachricht | Beiträge des Benutzers
Sclot
myCSharp.de - Member



Dabei seit:
Beiträge: 324
Herkunft: Bremen

beantworten | zitieren | melden

Also... Vereinfacht gesagt hast du 2 Werte: ID und ein "gültig_bis"-Datum?
Und du möchtest jetzt eine Liste mit ID´s pflegen, welche bis zu einem Bestimmten Datum benutzt werden können/düfen.

Grob dargestellt wäre das sowas:
ID | gueltig_bis
------------------
1  | 01.07.2015
2  | 05.07.2015
3  | 10.07.2015
4  | null
5  | null
...|...

Ich denke ich würd eine List<T> mit einem Objekt nutzen wo ein int und ein Datetime drin ist und diese Liste dann mit Linq bzw Lambda abfragen... alle Objekte raus suchen für die das datum abgelaufen ist und diese nach ID sortieren. Das erste Objekt sollte dann die nächste abgelaufene ID beinhalten.

Trotzdem hab ich den Sinn von dem ganzen Konstrukt noch nicht wirklich verstanden ;-)
Also.. welchen Sinn hat das ID´s mehrfach zu vergeben? der Name "ID" impliziert doch schon das es etwas ist um irgendetwas eindeutig identifizieren zu können.
private Nachricht | Beiträge des Benutzers
_Alp_Ay
myCSharp.de - Member



Dabei seit:
Beiträge: 4

Themenstarter:

beantworten | zitieren | melden

Danke für dein Tipp..

ich habe es einfach nur ID genannt. Es handelt sich zwar um INT aber nicht ID... Das war nur zur Verdeutlichung :-)

Ich versuche es mal und ansonsten nerv ich das Forum mit meinen Problemen :-)
private Nachricht | Beiträge des Benutzers
_Alp_Ay
myCSharp.de - Member



Dabei seit:
Beiträge: 4

Themenstarter:

beantworten | zitieren | melden

Servus,
ich habe mal bisschen daran gearbeitet und komme leider nicht mehr weiter.

Ich erläutere das mal bisschen detaillierter.

Das Programm soll eigentlich nicht viel machen.

Ich als User möchte gerne eine Aktion starten und diese Aktion soll so aussehen.

Kaufe 2 Flaschen Cola und erhalte 50 Cent Rabatt.
Startdatum 20.07.15 -- Enddatum 25.07.15, alles wird so angegeben, was auch ziemlich gut klappt.
Und diese Angaben werden in eine XML Datei geschrieben (XML_AKTION).

In der XML_AKTION stehen die Angaben drin.
Und für diese AKTION muss eine EAN zugestimmt werden.
Diese EAN soll bis Enddatum nicht mehr verwendbar sein.
Nach Enddatum kann ich wieder eine AKTION Starten und diese EAN kann dann wieder verwendet werden.
Wie eben geschrieben habe ich eine zusätzliche xml mit eans und aus dieser Liste soll er sich das ziehen und bis Enddatum blocken...

Nur ich komme nun nicht mehr weiter...
Das ist mein teil CODE

 form 1
List<string> used_ean_list =  new List<string>();

private int myID()
        {
           int oldXML = 0;
            try
            { 
                XmlDocument xml = new XmlDocument();
                xml.XmlResolver = null;
                xml.Load(@"C:\XML_AKTION.xml");
                XmlNodeList xlist = xml.SelectNodes("/CRS/CR");
                foreach(XmlNode xn in xlist)
                {
                    string currentID = xn["id"].InnerText;
                    oldXML = Convert.ToInt32(currentID); // bis hierhin funktioniert alles soweit.

                    used_ean_list.Add(xn["cr"].InnerText);
                }
            
            }
            catch (ArgumentNullException e)
            {
                MessageBox.Show("PROBLEM: " + e);
            }
            catch (Exception e)
            {
                MessageBox.Show("PROBLEM Exception: " + e);
            }

            Console.WriteLine("RETURN VALUE:" + oldXML);
            return oldXML;
        }

        private string ean()
        {
            string ean = "";
            string ean_in_use = "";
            int v = 1;
            try
            {
                XmlDocument xml = new XmlDocument();

                xml.XmlResolver = null;

                xml.Load(@"C:\ean_pool.xml");

                foreach (String xn in _st.used_ean_list)
                {
                    ean_in_use = xn;

                    XmlNodeList ean_node_list = xml.SelectNodes("/eanpool");
                    foreach (XmlNode ean_Node in ean_node_list)
                    {
                        ean = ean_Node["ean" + v].InnerText;
                        if (!string.Equals(ean, ean_in_use))
                        {
                            return ean;
                        }
                        else
                        {
                            v++;
                        }
                    }

                }
            }
            catch (ArgumentNullException e)
            {
                MessageBox.Show("PROBLEM: " + e);
            }
            catch (Exception e)
            {
                MessageBox.Show("PROBLEM Exception: " + e);
            }

            Console.WriteLine("RETURN VALUE:" + ean);
            return ean;
        }

......

        private void button2_Click(object sender, EventArgs e)
        {
		...
			 writer.WriteElementString("cr", ean()); // hier soll die EAN aus dem EAN_POOL
		...
	}


und hier noch die xml (ean_pool.xml

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE xxx SYSTEM "xxx.dtd">
<eanpool>
    <ean1>1111</ean1>
    <ean2>2222</ean2>
    <ean3>3333</ean3>
    <ean4>4444</ean4>
    <ean5>5555</ean5>
    <ean6>6666</ean6>
    <ean7>7777</ean7>
</eanpool>


ich weiss leider nicht, wie ich das nun mit Enddatum verknüpfe...

Hoffe, Ihr könnt mir weiterhelfen. Ich komm da nicht mehr weiter. ?(
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.752

beantworten | zitieren | melden

Ist das nicht eine potenzielle n:n Beziehung und muss auch so gehandhabt werden?
Wenn nicht reichen zwei Attribute für die Zeitspanne, wenn ich Deine Beschreibung richtig verstehe.
private Nachricht | Beiträge des Benutzers
Deaktiviertes Profil
myCSharp.de - Member



Dabei seit:
Beiträge: 985

beantworten | zitieren | melden

Da gibt es also eine Handvoll Nummern - EANs wären 8 oder 13-stellig und heissen seit 2009 GTIN - die an einer zeitlich begrenzten Aktion einmal teilnehmen können.

Somit prüft man die gültigen Aktionen (Zeitraum) und ob die Nummer teilnehmen darf und ob die schon teilgenommen hat.

Wenn die Nummer teilgenommen hat, dann trägt man die einfach für die Aktion in eine Liste der teilgenommenen Nummern ein. Fertig.
private Nachricht | Beiträge des Benutzers