Laden...

PrimaryKey bei DATATABLE abfangen

Erstellt von dgroeser vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.369 Views
D
dgroeser Themenstarter:in
135 Beiträge seit 2006
vor 17 Jahren
PrimaryKey bei DATATABLE abfangen

Hallo,

ich suche jetzt schon den ganzen Tag und finde nichts dazu.

Ich setze mal meinen Code rein der Liest ein File in eine DATATABLE, jetzt habe ich auch schon den Primärschlüssel auf Bestellnr. gesetzt, wie kann ich soetwas abfangen das z. B. eine Meldung kommt das der Datensatz schon existiert, ich habe es schon mit Find probiert leider kommt nicht das gewollte Ergebnis.

Und wie kann ich z. B. zwei Felder als Primärschlüssel hinterlegen?

Habe gelesen das man die Feldlängen per Code einstellen kann das geht bei mir auch nicht??



#region Konstruktor
        public cWareInputs()
        {
            //CreateDataTable();
        }
        #endregion
        #region Methode
        public void CreateDataTable()
        {
            // Überschrift erzeugen
            if (m_WareInputs == null)
            {
                m_WareInputs = new DataTable("Wareneingang");
                m_WareInputs.Columns.Add("Bestellnr.");
                m_WareInputs.PrimaryKey = new DataColumn[] { m_WareInputs.Columns[0] };
                m_WareInputs.Columns.Add("Artikelnr.");
                m_WareInputs.Columns.Add("Menge");
                m_WareInputs.Columns.Add("Charge");
                
                m_WareInputsData = null;
            }
            else
            {
                m_WareInputs.Clear();
            }
        }
        public void FillDataTable(string OrderNo, string ItemNo, string Quantity, string LotNo)
        {
            cWareInput OneWareInput = new cWareInput(OrderNo,ItemNo,Quantity,LotNo);
            
            // DateTable mit Datensätze füllen
           
            m_WareInputsData = m_WareInputs.NewRow();
            m_WareInputsData[0] = OrderNo;
            m_WareInputsData[1] = ItemNo;
            m_WareInputsData[2] = Quantity;
            m_WareInputsData[3] = LotNo;
            m_WareInputs.Rows.Add(m_WareInputsData);
            
        }
        #endregion

484 Beiträge seit 2006
vor 17 Jahren
// erweitere diese Zeile 
m_WareInputs.PrimaryKey = new DataColumn[] { m_WareInputs.Columns[0] };
// z.b. so
 m_WareInputs.PrimaryKey = new DataColumn[] { m_WareInputs.Columns[0],m_WareInputs.Columns[1]  };

Gruß Jörg

D
dgroeser Themenstarter:in
135 Beiträge seit 2006
vor 17 Jahren

Und wie kann ich z. B. abfragen ob ein Problem mit den Primärschlüssel ist weil er fügt es ja einfach nicht ein mehr nicht?

484 Beiträge seit 2006
vor 17 Jahren

Fehler abfangen mit try catch


try
{
 m_WareInputs.Rows.Add(m_WareInputsData);
}
catch(Exception e)
{
   // Dann hier ein LOG schreiben oder den Fehler halt einfach nur abfangen
  // e.Message e.StackTrace liefernDir hat mehr Infos
 // evtl. einen anderen ExceptionTyp verwenden
}


Jörg

D
dgroeser Themenstarter:in
135 Beiträge seit 2006
vor 17 Jahren

Ok klappt habe noch eine Frage habe ich schon in einen anderen Thread gestellt, aber keine Antwort bekommen.

Zwar folgendes ich speichere zusätzlich zu den Datensätzen Daten in Objekte jetzt möchte ich aber natürlich wenn ich nachträglich Daten verändern möchte z. B.

möchte ich den Datensatz im Datagrid 4711 ändern.

Besteht da eine Möglichkeit z. B. wie bei einer Hashtabelle ein Objekt mit zu hinterlegen??

Kann ich überhaupt noch von der Datagrid auf die einzelnen DataROWS zu greifen??