Laden...

Forenbeiträge von Toxo Ingesamt 64 Beiträge

20.02.2012 - 12:00 Uhr

Guten Tag,

ich arbeite jetzt schon eine Weile mit LINQ und finde es auch in der Anwendung ganz angenehm nur momentan beisse ich mir an einer Aufgabenstellung etwas die Zähne aus.

Ich suche nach eine Möglichkeit, wie man in einem Select-Statement einen String einbauen kann welcher aus einem Tabellennamen besteht.

Anwendungsbeispiel:

Man stelle sich eine Anwendung vor zur Auswertung von Messdaten, doch je nach Anwender sind Aufgrund von Nutzerrechten verschiedene Tabellen und Spalten ersichtlich. Ein Nutzer Klickt sich nun Anhand seiner Ansicht auf die gewünschte Spalte runter und lässt sich das ganze dann entsprechend plotten.

bei LINQ wäre ja nun das Problem, dass man jeden Fall einzeln direkt abfangen müsste soweit mir das bekannt ist.
Bei größeren tabellen würde das aber extrem unübersichtlich und Mühselig werden. Ist es möglich dieses Problem mit LINQ performant zu lösen oder muss ich auf klassische Mittel zurückgreifen? Im Sinne von SQL Abfrage als String zusammenbauen Anhand der AUswahl und diese dann zm Server senden.
Bin dankbar für Schlagworte und Anregungen
Mit freundlichen Grüßen
David

02.12.2011 - 09:43 Uhr

Ich habe mit LINQ to XML sehr gute Erfahrungen gemacht um XML Elemente zu verarbeiten oder zu erstellen.

hier ein Webcast der mir den Einstieg erleichtert hat.

http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032372942

02.12.2011 - 07:56 Uhr

jQuery klingt erstmal gut. Ich werde es mal testen und wenn es zu starke Performanceeinbrüche gibt, werde ich auf Links oder Buttons umsteigen.

Vielen Dank für die Ideen 🙂

01.12.2011 - 13:03 Uhr

Guten Tag,

ich habe mir eine Tabelle erstellt, welche wie ein Koordiantensystem funktionieren soll. nun würde ich dieses gerne als interaktives Element nutzen. Gibt es Möglichkeiten, dass jede Zelle bei einem OnClick ein Postback liefert?

Meine Überlegung momentan ist, in jeder Zelle einen Button zu generieren und es über diesen zu lösen, das erscheint mir aber etwas zu umständlich.

Über Google bin ich bisher nur über Lösungen mit AJAX gestolpert das möchte ich aber gerne vermeiden.

Bin dankbar für Anregungen und Vorschläge.

Gruß David

28.11.2011 - 10:36 Uhr

Guten Tag,

in einem Diagramm möchste ich 2 X-Achsen nutzen. Die Primäre wird für eine fortlaufende Nutzennummer genutzt und in der sekundären möchte ich das dazugehörige Datum anzeigen.
Das Datum macht mir etwas Probleme, da keine Zuordnung erfolgt. Das Diagramm zeigt einen Zeitraum an obwohl ich die Daten explizit zuordne.

Zuordnung ist wie folgt:


Chart1.DataSource = dt;  //dt ist eine Datatable
Chart1.DataBind();

Chart1.Series.Add("1");
Chart1.Series[0].ChartType = SeriesChartType.Line;
Chart1.Series[0].XValueMember = "Nutzennummer";
Chart1.Series[0].YValueMembers = "Wert";
Chart1.Series[0].XAxisType = AxisType.Primary;

Chart1.Series.Add("2");
Chart1.Series[1].ChartType = SeriesChartType.Line;
Chart1.Series[1].XValueMember = "Datum";
Chart1.Series[1].YValueMembers = Chart1.Series[0].YValueMembers;
Chart1.Series[1].XAxisType = AxisType.Secondary;
Chart1.Series[1].XValueType = ChartValueType.Date;

Das Ergebnis habe ich mal als Bild angehängt. Was für ein Attribut muss ich auf der Sekundärachse noch setzen, damit die Zuordnung diskret zu jeder Nummer geschieht?

24.11.2011 - 09:46 Uhr

Habe es jetzt wie folgt gelöst:


int rnumber = dt.Rows.Count;

 for (int i = 0; i < rnumber; i++)
       {
           dt.Rows[i][1] = dt.Rows[i][1].ToString().Replace(",", ".");
       }

Ist jetzt nicht zwingedn die eleganteste Lösung aber funktioniert und ist hier Anwendbar, da es sich nicht um eine zeitkritische Anwendung handelt.

24.11.2011 - 08:58 Uhr

Ja habe auch gerade rausgefunden, dass der Fehler schon in der Datatable liegt.
Die Double Werte werden richtig mit Punkt als Trennzeichen aufgenommen. Sobald die Übertragung in die Datatable passiert wird in der Table Punkt zu Komma.

Mein nächster Ansatz ist nun bei
dt.Columns.Add(new DataColumn("Wert"), DataType.);
Für Datatype wird mir aber kein Fließkommaformat angeboten.
Ich denke ich muss mich mal in die Thematik benuitzerdefinierter Datentyp "Custom" einlesen.

24.11.2011 - 07:51 Uhr

Guten Morgen
Das habe ich vergessen zu erwähnen die Daten aus der Spalte "Wert" werden als double in die Datatable reingeschrieben.
Die Datatable dürfte doch den DAtentyp beibehalten oder?

23.11.2011 - 14:51 Uhr

Guten Tag,

ich grübel momentan an folgendem Problem.
Bin am entwickeln meiner ersten ASP Webanwendung und komme bei einem Diagramm nicht weiter.
Habe beim pageload folgendes festgelegt


CultureInfo ci = new CultureInfo("de-DE");
        Thread.CurrentThread.CurrentCulture = ci;

Dann arbeite ich in einigen Datenbänken und fülle meine Datatable, welche ich anschließend für mein chart verwenden möchte.


DataTable dt = new DataTable("Daten");
       
        
       DirectoryInfo di = new DirectoryInfo ("directory");
       dt.Columns.Add(new DataColumn("nummer"));
       dt.Columns.Add(new DataColumn("Wert"));
       dt = Dateneinlesen(di, dt); 
     
        GridView1.DataSource = dt;
        GridView1.DataBind();
        
        Chart1.Series.Add("1");
        Chart1.Series[0].ChartType = SeriesChartType.Line
        Chart1.DataSource = dt;
        Chart1.Series[0].XValueMember = "nummer";
        Chart1.Series[0].YValueMembers = "Wert";

Die Werte werden richtig an dt übergeben und werden mit einem "," als Dezimaltrennzeichen angezeigt.
Meine Y-Achse im Diagramm scheint aber diese Trennung zu ignorieren und ich Frage mich nun woran das liegen könnte.
Beipsiel: Wert: -12,0993 und im Diagramm ist dieser als -120993 geführt.
Freue mich über Ratschläge und Ideen.

Gruß David

16.11.2011 - 09:55 Uhr

Vielen Dank für die Hinweise an die Länderabhängige Dezimaltrennung hatte ich nicht gedacht.
Funktioniert nun wie gewünscht 😁

16.11.2011 - 09:11 Uhr

Guten Morgen,

folgende Abfrage wende ich auf eine XML Datei an:


 var numbercount = (from Werte in xmld.Descendants("Ub")                        
                              where Convert.ToDouble(Werte.Value) < -2
                              select Werte);

Ziel dieser Abfrage soll es einfach sein all Knoten zu erhalten, deren Wert unter -2 liegt.
Ausschnitt aus dazugehöriger XML Datei:


<U_b>
      <Ub>-7</Ub>
      <Ub>-6.8</Ub>
      <Ub>-6.6</Ub>
      <Ub>-6.4</Ub>
      <Ub>-6.2</Ub>
      <Ub>-6</Ub>
      <Ub>-5.8</Ub>
      <Ub>-5.6</Ub>
      <Ub>-5.4</Ub>
      <Ub>-5.2</Ub>
      <Ub>-5</Ub>
      <Ub>-4.8</Ub>
      <Ub>-4.6</Ub>
      <Ub>-4.4</Ub>
      <Ub>-4.2</Ub>
      <Ub>-4</Ub>
      <Ub>-3.8</Ub>
      <Ub>-3.6</Ub>
      <Ub>-3.4</Ub>
      <Ub>-3.2</Ub>
      <Ub>-3</Ub>
      <Ub>-2.8</Ub>
      <Ub>-2.6</Ub>
      <Ub>-2.4</Ub>
      <Ub>-2.2</Ub>
      <Ub>-2</Ub>
      <Ub>-1.8</Ub>
      <Ub>-1.6</Ub>
      <Ub>-1.4</Ub>
      <Ub>-1.2</Ub>
      <Ub>-1</Ub>
      <Ub>-0.8</Ub>
      <Ub>-0.6</Ub>
      <Ub>-0.4</Ub>
      <Ub>-0.2</Ub>
      <Ub>0</Ub>
      <Ub>0.2</Ub>
      <Ub>0.4</Ub>
      <Ub>0.6</Ub>
      <Ub>0.8</Ub>
      <Ub>1</Ub>
    </U_b>

Ergebnis der Abfrage:
Als Bild im Anhang.

Wenn ich mit positiven Werten als Bedingung arbeite Funktioniert die Abfrage wie gewünscht. Meine Frage wäre nun, wieso machen negative Werte Probleme? Wieso erhalte ich trotzdem Werte, die über -2 liegen?
Gruß David

19.10.2011 - 11:40 Uhr

Habe es gelöst.

Die vielen doppelten Datensätze kamen dadurch, dass ich vergessen habe meine Knoten neu zu instanziieren und somit immer den alten Datensatz mitgeschleppt habe.
So funktioniert es wie gewünscht


for (j = 1; j < numberoffiles; j++)
            {
                XElement Chip = new XElement("Chip");
                XElement U_beleuchtet = new XElement("U_beleuchtet");
                XElement U_beleuchtet_Wert = new XElement("U_beleuchtet_Wert");

                Wafer.Add(Chip);
                Chip.SetAttributeValue("Chipnr", j);
                Chip.Add(U_beleuchtet);
                StreamReader reader = new StreamReader(Application.StartupPath + "\\ChipDaten\\" +j +"_UI.txt");

                       for (i = 0; i < 5000; i++)
                           {
                               string[] zeile = reader.ReadLine().Split('\t');
                              if (reader.Peek() == -1)
                                   {
                                      Wafer.Save(@"Chips.xml");
                                      // Wafer.RemoveNodes();                   
                                       i = 6000;
                                    }
                                if (i > 4 && i < 5000)
                                    {
                                     U_b = Math.Round(Convert.ToDouble(zeile[8]),4);
                                    U_beleuchtet.Add(U_beleuchtet_Wert);
                                       U_beleuchtet_Wert.SetValue(U_b);
                                     }

                              }
                              reader.Close();
} 

Falls es noch weitere Verbesserungsvorschläge gibt nehme ich die natürlich gerne mit auf aber soweit wird das ausgeführt was auch geplant war.
Gruß David

19.10.2011 - 08:16 Uhr

Guten Morgen

Ich schreibe momentan an einem kleinem Tool mit dem ich Messdaten aus .txt Dateien in ein XML Format umwandle um die spätere weiterverarbeitung in Datenbanken etwas einfacher zu handeln.

Der Aufbau der XML-Datei sieht in etwa wie folgt aus:


<?xml version="1.0" encoding="utf-8"?>
<Wafer Wafernr="11050601">
  <Chip Chipnr="1">
    <U_beleuchtet>
      <U_beleuchtet_Wert>-7</U_beleuchtet_Wert>
      <U_beleuchtet_Wert>-6.9</U_beleuchtet_Wert>
    </U_beleuchtet>  
   </Chip>
<Chip Chipnr="2">
    <U_beleuchtet>
      <U_beleuchtet_Wert>-7</U_beleuchtet_Wert>
      <U_beleuchtet_Wert>-6.9</U_beleuchtet_Wert>
    </U_beleuchtet>  
   </Chip>


</Wafer>

Die Chipnummer ist in meinem Fall das fortlaufende Attribut
Ich habe nun einen Programmieransatz zu der Problematik dazu aber auch ein Problem und bitte deswegen um ein Wenig Hilfe


 for (j = 1; j < numberoffiles; j++)
            {
       
                Wafer.Add(Chip);
                Chip.SetAttributeValue("Chipnr", j);
                Chip.Add(U_beleuchtet);
                StreamReader reader = new StreamReader(Application.StartupPath + "\\ChipDaten\\" +j +"_UI.txt");

                       for (i = 0; i < 5000; i++)
                           {
                               string[] zeile = reader.ReadLine().Split('\t');
                              if (reader.Peek() == -1)
                                   {
                                      Wafer.Save(@"Chips.xml");
                                      // Wafer.RemoveNodes();                   
                                       i = 6000;
                                    }
                                if (i > 4 && i < 5000)
                                    {
                                     U_b = Math.Round(Convert.ToDouble(zeile[8]),4);
                                    U_beleuchtet.Add(U_beleuchtet_Wert);
                                       U_beleuchtet_Wert.SetValue(U_b);
                                     }
                
                              }
                              reader.Close();
}

Mein Problem besteht nun darin, dass mit jeder neuen Chipnummer ein neuer Datensatz entsteht, wo an die alten Daten einfach nur der neue Inhalt angehängt wird unter neuer Chipnummer. Die DAten sind so nicht verarbeitbar und die Datei erreicht dadurch auch größen von über 2 GB.

Mein nächster Ansatz war, nach . Save mit .Removenodes zu arbeiten aber das führte dazu, dass auch die Daten in meiner XML Datei entfernt wurden.
Gibt es eine Methode, mit der ich die Knoten nur aus meinem Arbeitsspeicher entfernen kann ohne die vorher abgespeicherte Datei anzutasten?
Ist mein Ansatz evtl. komplett falsch?
Bin dankbar für Hinweise un Verbesserungsvorschläge.
Falls noch irgendwelche Informationen meinerseits fehlen bitte Bescheid geben, dann werden die sofort nachgeliefert.

Gruß David

11.10.2011 - 15:01 Uhr

Guten Tag

Ich stehe vor einem kleinem problem in Sachen Dateiarbeit und bräuchte bitte ein paar Anregungen und Hinweise.
Ich habe eine Textdatei mit folgendem Aufbau:

0 \t 1 \t 2 \t 3\t 4
0 \t 1 \t 2 \t 3\t 4
0 \t 1 \t 2 \t 3\t 4
0 \t 1 \t 2 \t 3\t 4
0 \t 1 \t 2 \t 3\t 4
0 \t 1 \t 2 \t 3\t 4

Also einen numerischen Wert danach ein tab und anschließend ein neuer Numerischer Wert. Ich möchte nun alle Werte welche untereinander stehen in einer Liste abspeichern um anschließend diese mithilfe von LINQ in XML weiterverarbeiten.
Das verarbeiten nach XML ist weniger das Problem. Die schwierigkeit liegt im anlegen einer Liste, da ich extrem selten mit .txt Dateien arbeite, sondern eher mit .xml.
Bin Dankbar für Hinweise wo man da am besten anfängt.
Ich lese gerade das keine Anfängerfragen gestellt werden dürfen. Falls dies zu sehr in die Grundlagen geht dann bitte nur einen kleinen Hinweis für einen Ansatz. Programmieren möchte ich immer noch selbst 😉