Laden...

Forenbeiträge von Manda Ingesamt 5 Beiträge

25.07.2012 - 12:20 Uhr

Hallo,

ich möchte aus einem DataTable die Elemente auslesen und in eine CSV speichern.


 public static void writeCSV(DataTable _dt, String _sFilePath)
        {
            StreamWriter sw = new StreamWriter(_sFilePath, false);
            int iCol = _dt.Columns.Count;
                        
            for (int i = 0; i < iCol; i++)
            {
                sw.Write(_dt.Columns[i]);

                if (i < iCol - 1)
                {
                    sw.Write(","); //HIER MUSS WOHL WAS VERÄNDERT WERDEN
                }                
            }
            
            sw.Write(sw.NewLine);
....

Er liest es auch ein, aber packt alles in eine Spalte. Ich möchte es gerne Spaltenweise auslesen.
Bsp.:
Im DataTable: ID Name Desc Sonstiges
Beim einlesen: ID,Name,Desc,Sonstiges

Ich versuche die Einträge pro Spalte einzulesen. Hoffe ich konnte das Problem erklären.
Danke schön.

Lg
manda

21.03.2010 - 11:25 Uhr

Wenn jemand noch mal kurz drüber schauen würde, damit ich mir sicher bin, dass ich ds jetzt doch richtig mache 😃


protected void BuildRelation()
        {
            PrintMsg(null, "...Create new Relation");

            if (m_TheDataSet == null) return;
                      
            /*
            // --- get relations
            string sWhere = string.Format("{0}={1}", m_DataTableTask.Columns[_sColID], m_DataTablePerson.Columns[_sColID]);            
            DataRow[] aDrRelation = m_DataTableRelation.Select(sWhere);

            if (aDrRelation == null || aDrRelation.Length == 0)
                return;
            */
            
            // --- Create DataRelation
            m_DataRelation = new DataRelation("Person-Task",
                                          m_TheDataSet.Tables[m_sTableTask].Columns[_sColID],
                                          m_TheDataSet.Tables[m_sTablePerson].Columns[_sColID]
                                          );
            m_TheDataSet.Relations.Add(m_DataRelation);
            
            PrintMsg(null, "Person-Task");
            PrintMsg(null, "New Relation created");
        }

Frage: Was mache ich wenn ich sagen will, dass ein 'Task' einen weiteren 'Untertask' hat? Da ich das später als Baumstruktur ausgeben will.
Wie: Person -> Task_1 und Gleiche Person -> Task_2
Und: Task_1 hat Task_1_1

Darum dachte ich, dass meiner Ansatz (auskommentiert) vielleicht sowas erzeugen könnte. Bitte korrigieren, wenn ich falsch liege.

Danke.

Gruß
Manda

21.03.2010 - 10:57 Uhr

Hallo Lars,

Danke für das Bsp! Ich hatte wohl ein Verständnis Problem. Dachte das ich eine neue Tabelle erstellen muss.

Danke auch an Jürgen! Ist nun klarer geworden. Ich mach mich da mal ran, falls ich noch Fragen haben sollte, würde ich mich wieder melden.

Gruß
Manda

21.03.2010 - 10:45 Uhr

Hallo Jürgen,

mit dieser Zeile:

m_DataTableRelation = new DataTable(m_sTableRelation);

gebe ich der Tabelle Relation einfach nur einen Namen.

Ich habe ein DataSet wo ich dann 3 Tabellen hätte (Task, Person und Relation). Wo ich unsicher bin ist die Relation-Tabelle. Ich weiß nicht ob ich diese überhaupt anlegen muss?

Ich dachte vielleicht an soetwas: in der Funktion BuildRelation()


// --- get relations
            string sWhere = string.Format("{0}={1}", m_DataTableTask.Columns[_sColID], m_DataTablePerson.Columns[_sColID]);            
            DataRow[] aDrRelation = m_DataTableRelation.Select(sWhere);

            if (aDrRelation == null || aDrRelation.Length == 0)
                return; 

21.03.2010 - 10:07 Uhr

Hallo zusammen,
kurz vor weg: bin ein Anfänger in C# und hoffe das ich im richtigen Bereich bin.
Problem:
Ich habe eine Tabelle Person(Id,Name,Vorname)
und eine Tabelle Task(Id, Start, Ende, Dauer). Diese möchte ich nun mit einer Tabelle 'Relation' verbinden.
Ich müsste also die ID von Person mit der ID von Task als Relation darstellen. Leider weisß ich nicht, wie ich da vorgehen soll.
Ich schreibe das in eine XML-Datei raus(Tabelle Person und Task) und lese diese anschließend wieder ein. Einfach nur zur Übung.

Hier der Code: Person-Tabelle


protected void CreateUpdatePerson()
        {
            PrintMsg(null, "Create new Person");
            m_DataTablePerson = new DataTable(m_sTablePerson);

            // --- Create Columns
            m_DataTablePerson.Columns.Add(_sColID);
            m_DataTablePerson.Columns.Add(_sColName);
            m_DataTablePerson.Columns.Add(_sColVorname);

            // ---Add DataTable to DataSet
            m_TheDataSet.Tables.Add(m_DataTablePerson);

            PrintMsg(null, "New Person Created");

            // --------------------------------------------------------------------------
            PrintMsg(null, "Insert Person");

            // --- Create Row
            DataRow drNewRow  = m_DataTablePerson.NewRow();
            DataRow drNewRow1 = m_DataTablePerson.NewRow();

            // --- fill rows
            drNewRow[_sColID]       = 1;
            drNewRow[_sColName]     = "Meyer";
            drNewRow[_sColVorname]  = "Klaus";

            drNewRow1[_sColID]      = 2;
            drNewRow1[_sColName]    = "Otto";
            drNewRow1[_sColVorname] = "Maus";

            // --- Add rows to Table
            m_DataTablePerson.Rows.Add(drNewRow);
            m_DataTablePerson.Rows.Add(drNewRow1);

            PrintMsg(null, "Person inserted");
        } 

Hier der Code: Task-Tabelle


protected void CreateUpdateTask()
        {
            PrintMsg(null, "Create new Task");
            m_DataTableTask = new DataTable(m_sTableTask);

            // --- Create Columns
            m_DataTableTask.Columns.Add(_sColID);
            m_DataTableTask.Columns.Add(_sColStart);
            m_DataTableTask.Columns.Add(_sColEnd);
            m_DataTableTask.Columns.Add(_sColDuration);

            // --- Add DataTable to DataSet
            m_TheDataSet.Tables.Add(m_DataTableTask);

            PrintMsg(null, "New Task created");

            // ------------------------------------------------------------------
            PrintMsg(null, "Update data");

            //--- Create Row
            DataRow drNewRow  = m_DataTableTask.NewRow();
            DataRow drNewRow1 = m_DataTableTask.NewRow();

            //--- fill rows
            drNewRow[_sColID]        = 1;
            drNewRow[_sColStart]     = System.DateTime.Now;
            drNewRow[_sColEnd]       = System.DateTime.Now;
            drNewRow[_sColDuration]  = 20;

            drNewRow1[_sColID]       = 2;
            drNewRow1[_sColStart]    = System.DateTime.Now;
            drNewRow1[_sColEnd]      = System.DateTime.Now;
            drNewRow1[_sColDuration] = 10;

            //--- Add rows to Table
            m_DataTableTask.Rows.Add(drNewRow);
            m_DataTableTask.Rows.Add(drNewRow1);

            PrintMsg(null, "Data updated");
        }
 

Nun stehe ich hier:


protected void BuildRelation()
        {
            PrintMsg(null, "...Create new Relation");

            if (m_TheDataSet == null) return;

            m_DataTableRelation = new DataTable(m_sTableRelation);
                                 
            /*
            // --- Create Columns UNSICHER OB ICH DIE COLUMNS BRAUCHE?!?!
            m_DataTableRelation.Columns.Add(_sColID);
            m_DataTableRelation.Columns.Add(_sColFromId);
            m_DataTableRelation.Columns.Add(_sColFromType);
            m_DataTableRelation.Columns.Add(_sColToId);
            m_DataTableRelation.Columns.Add(_sColToType);
            */
        } 

Bei der Methode: BuildRelation komme ich leider nicht weiter, hoffe Ihr könnt mir da helfen:).

Gruß
Manda